无法使用 FTGL 更改字体颜色
Posted
技术标签:
【中文标题】无法使用 FTGL 更改字体颜色【英文标题】:Cannot change font color with FTGL 【发布时间】:2013-11-27 05:13:47 【问题描述】:如何更改 FTGL 中的字体颜色?
【问题讨论】:
需要更多信息... 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();
【讨论】:
这不起作用。 'glColor4d' 未在此范围内声明。 @Achilles-96 glColor 是一个基本的 opengl 函数。您将需要包含 opengl 标头 - 我怀疑代码中的其他任何内容都可以在没有它的情况下工作。见opengl.org/sdk/docs/man2/xhtml/glColor.xml【参考方案2】:这对我有用:
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
添加另一行。
【讨论】:
以上是关于无法使用 FTGL 更改字体颜色的主要内容,如果未能解决你的问题,请参考以下文章