4

我正在开发一个 3D 应用程序,试图在屏幕上呈现一些文本。

但是如果文本超过 10 个字符,则 FPS 会下降到 2,这真的很烦人。

我的程序经常使用 glutPostRedisplay() 函数,这就是它肯定会变慢的原因。

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

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

PS:我尝试在 VC++ 中安装 Freetype for OpenGL,但最终放弃了。如果我指出一些在 VC++ 2008 中安装任何字体库的“白痴”指南,我也将不胜感激。

4

1 回答 1

1

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

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

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

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

于 2013-08-05T17:31:40.787 回答