我在 FTGL 中使用纹理字体将字体渲染到多个画布中,作为轴等的标签。我的第一个情节很好。然而,所有后续的画布都将我的纹理字体呈现为简单的黑色方块。我还注意到某些数字不会显示在实际渲染的画布上。“中心时间”应显示 8.3956,但改为显示以下内容。
字体渲染如下:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
PushGLMatrices();
GrSetPixelProjection();
glTranslatef(pixelX, pixelY, 0.0);
glRotatef(ang, 0.0, 0.0, 1.0);
savedFont->Render(label);
PopGLMatrices();
在哪里
void PushGLMatrices()
{
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
}
void PopGLMatrices()
{
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}
我尝试了一些方法,例如清除颜色和深度位,以及 glEnable(GL_TEXTURE_2D); glDisable(GL_DEPTH_TEST); 但这似乎没有帮助。出于某种原因,如果我将 FTTextureFont::FaceSize(int) 添加到我的一个返回文本宽度的例程中,一切都会正确显示(尽管速度很慢)。从 FTGL 源代码来看,除了 glDeleteTexture() 调用之外,FaceSize() 似乎不会操纵 openGL 参数,所以我有点困惑为什么会这样。