Visual studio 2008 glutBitmapCharacter()太慢,在OpenGL程序中使用字体有其他选择吗?

Visual studio 2008 glutBitmapCharacter()太慢,在OpenGL程序中使用字体有其他选择吗?,visual-studio-2008,opengl,freeglut,freetype,Visual Studio 2008,Opengl,Freeglut,Freetype,我正在开发一个3D应用程序,试图在屏幕上呈现一些文本 但是如果文本超过10个字符,FPS将下降到2,这真的很烦人 我的程序经常使用glutPostRedisplay()函数,这就是为什么它会变慢的原因 有没有什么方法可以让我的程序使用glutBitmapCharacter()显示字体,并且没有任何延迟 我在win7 x64上使用VC++2008 PS:我尝试在VC++中安装Freetype for OpenGL,但最终放弃了。 如果有人告诉我一些在VC++2008中安装任何字体库的“白痴”指南,

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

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

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

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

我在win7 x64上使用VC++2008

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

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

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

通过混合,您可以实现精灵般的角色和/或透明度 使用glColor,您可以更改文本和/或alpha的颜色 以这种方式呈现的最佳文本是使用非透视投影矩阵 和纹理过滤GL_线性


当然,您必须对char和text draw函数进行编码,但它们并不复杂(char是简单的方形四边形,您只需要从ASCII计算纹理坐标,对于char和position update的调用,文本是单一的)

我认为问题可能是freeglut库。它不应该在每次调用glutPostRedisplay()时重新渲染屏幕。我也遇到了同样的问题,很多朋友,你有没有遇到过这样的解决方案:)不要经常调用
glutPostRedisplay()作为它的一个参数,我删除了它,并取回了FPS正如我之前调用的。您提到的关于使用图像作为字符的有趣想法,我可以将图像信息放入数组中,然后可以按我希望的方式检索。无论如何,正如我之前提到的,我通过从GLUT函数调用中删除GLUT_MULTISAMPLE解决了这个问题。