我正在使用一些遗留代码来工作,它使用 glBitmap() 调用来绘制位图图标。我的问题是,一旦你一次绘制大约 1000 个图标,它就会变得相当慢。它会减慢到大约 1 到 2 秒的刷新率,我想看看是否可以让它更快。
首先我应该描述当前代码是如何工作的。位图图标是 32x32 图像,每像素一位,预加载到内存中。对于绘制的每个图标,代码执行以下操作:
gl新列表
glRasterPos2f
全局位图
结束列表
然后在显示列表上调用glCallList()。我知道像这样对每个图标重复调用 glCallList() 可能会非常慢,但是代码中的某些重叠架构使得更改变得非常困难。
有没有其他方法可以加快速度而不需要重新构建整个过程?我几乎可以自由地做这类事情,但我必须能够向管理层证明这样做的合理性。从 glBitmap() 更改为使用纹理映射四边形之类的东西会更快吗?我可以在单个显示列表中对 glBitmap() 进行多次调用,而对所有图标只调用一次 glCallList() 吗?
我过去做过一些 GL 的事情,但已经有一段时间了。我很生疏,但我能弄清楚大部分。
一路上都有纹理的四边形。我用它来渲染文本(图形的轴编号),并获得了 60 FPS,屏幕上有数百位数字,带有英特尔集成视频(几年前,所以它是 GMA945 一代)。
将所有图标内容也放入单个纹理中,只需调用 glTexCoord 来挑选您想要的部分,然后就可以避免切换纹理。
顺便说一句,由于您的图标是单色的(也适用于灰度),因此将它们存储在纹理的 Alpha 通道中,然后您可以在输出四边形时选择实际颜色。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)