我正在研究一个3D应用程序,试图在屏幕上呈现一些文字。
但如果文字超过10个字符,则FPS降至2,真的很烦人。
我的程序经常使用glutPostRedisplay()函数,这就是为什么它放慢速度的原因。
有没有什么方法可以让我的程序使用glutBitmapCharacter()显示字体并且没有任何延迟。
我在win7 x64上使用VC ++ 2008。
PS:我尝试在VC ++中安装Freetype for OpenGL但最终放弃了。 如果我指向VC ++ 2008中安装任何字体库的“idiots”指南,我也很感激。
答案 0 :(得分:1)
如果你不需要矢量字体,那么简单的文字显示方式就是使用位图字体纹理(固定音高风格)。您可以通过GDI渲染自己创建字体图像,或者在MSPaint中手动编辑它...或者从inet下载
对于简单文本我现在使用16x16像素字体,...在图像中组织为16x16字符数组(纹理应为方形大小,因此您不需要使用扩展名)。
通过混合,您可以实现像字符和透明度一样的精灵 使用glColor,您可以更改文本和/或alpha的颜色 以这种方式呈现的最佳文本是使用非透视投影矩阵 和纹理过滤GL_LINEAR。
当然你必须编写你的char和文本绘制函数,但它们并不复杂(char是简单的方形四边形,你只需要从ASCII计算纹理坐标,而文本是单一的,用于调用char和位置更新)< / p>