2013-11-27 64 views
2

如何更改FTGL中的字体颜色?无法使用FTGL更改字体颜色

+0

需要更多信息... FTGL可以呈现矢量字体,栅格字体(不推荐)或纹理字体。总的想法,但是,是的字体是单色的(也可能有不同程度的灰色,但没有颜色),你会被别的东西乘以它改变颜色。 –

回答

1

只需使用glColor调用,然后请求字体进行渲染;您可能需要根据您的情况禁用照明。下面是对C++的一个例子:

FTFont *myfont= new FTBufferFont("myfontfile.ttf"); 

glPushAttrib(GL_ALL_ATTRIB_BITS); 
glDisable(GL_LIGHTING); 
glDisable(GL_DEPTH_TEST); 

glColor4d(1.0, 0.0, 0.0, 1.0); 
myfont->Render("Hello world"); 

glPopAttrib(); 
+0

这不起作用。 'glColor4d'未在此范围内声明。 –

+0

@ Achilles-96 glColor是一个基本的opengl函数。你将需要包含opengl头文件 - 我怀疑代码中的其他任何东西都会在没有它的情况下运行。请参阅https://www.opengl.org/sdk/docs/man2/xhtml/glColor.xml – Riot

0

这为我工作:

FTGLPixmapFont font("Myfont.ttf"); 

glPushAttrib(GL_ALL_ATTRIB_BITS); 

glPixelTransferf(GL_RED_BIAS, red - 1); 
glPixelTransferf(GL_GREEN_BIAS, green - 1); 
glPixelTransferf(GL_BLUE_BIAS, blue - 1); 

font.Render(str, -1, FTPoint(x, y)); 

glPopAttrib(); 

如果你希望你的文字是透明的,您可以添加其他行GL_ALPHA_BIAS