glutBitmapCharacter()太慢了,在OpenGL程序中使用字体的替代方法是什么?

时间:2013-04-21 18:21:46

标签: visual-studio-2008 opengl freeglut freetype

我正在研究一个3D应用程序,试图在屏幕上呈现一些文字。

但如果文字超过10个字符,则FPS降至2,真的很烦人。

我的程序经常使用glutPostRedisplay()函数,这就是为什么它放慢速度的原因。

有没有什么方法可以让我的程序使用glutBitmapCharacter()显示字体并且没有任何延迟。

我在win7 x64上使用VC ++ 2008。

PS:我尝试在VC ++中安装Freetype for OpenGL但最终放弃了。 如果我指向VC ++ 2008中安装任何字体库的“idiots”指南,我也很感激。

1 个答案:

答案 0 :(得分:1)

如果你不需要矢量字体,那么简单的文字显示方式就是使用位图字体纹理(固定音高风格)。您可以通过GDI渲染自己创建字体图像,或者在MSPaint中手动编辑它...或者从inet下载

对于简单文本我现在使用16x16像素字体,...在图像中组织为16x16字符数组(纹理应为方形大小,因此您不需要使用扩展名)。

通过混合,您可以实现像字符和透明度一样的精灵 使用glColor,您可以更改文本和/或alpha的颜色 以这种方式呈现的最佳文本是使用非透视投影矩阵 和纹理过滤GL_LINEAR。

当然你必须编写你的char和文本绘制函数,但它们并不复杂(char是简单的方形四边形,你只需要从ASCII计算纹理坐标,而文本是单一的,用于调用char和位置更新)< / p>