我正在使用FTGL中的纹理字体将字体渲染到多个画布上作为轴标签等。我的第一个图绘制得很好。但是所有随后的画布都将我的纹理字体渲染为简单的黑色正方形。我还注意到,一些数字在实际渲染的画布上不显示。"中心时间"应该显示8.3956,但实际显示如下所示。
字体渲染如下:
我曾尝试过清除颜色和深度位,并启用 GL_TEXTURE_2D,禁用 GL_DEPTH_TEST,但这似乎没有什么帮助。奇怪的是,如果我将 FTTextureFont::FaceSize(int) 添加到我的某个程序中,该程序返回文本宽度,那么一切就会正确显示(尽管速度较慢)。从 FTGL 源代码中看,FaceSize() 除了调用 glDeleteTexture() 之外,似乎并没有修改 openGL 参数,所以我有点困惑为什么这样可以。
![enter image description here](https://istack.dev59.com/VT9Ef.webp)
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();
}
我曾尝试过清除颜色和深度位,并启用 GL_TEXTURE_2D,禁用 GL_DEPTH_TEST,但这似乎没有什么帮助。奇怪的是,如果我将 FTTextureFont::FaceSize(int) 添加到我的某个程序中,该程序返回文本宽度,那么一切就会正确显示(尽管速度较慢)。从 FTGL 源代码中看,FaceSize() 除了调用 glDeleteTexture() 之外,似乎并没有修改 openGL 参数,所以我有点困惑为什么这样可以。