我目前正在为我的应用程序运行一些速度测试,我正在尝试寻找更多方法来优化我的程序,特别是我的显示列表。目前我得到:
12 FPS,882,000 个顶点
40 FPS,234,000 个顶点
95 FPS,72,000 个顶点
我知道我需要尽量减少调用次数,所以不要:
for(int i = 0; i < Number; i++) {
glBegin(GL_QUADS);
...normal and vertex declarations here
glEnd();
}
更好的方法是这样做:
glBegin(GL_QUADS);
for(int i = 0; i < Number; i++) {
...normal and vertex declarations here
}
glEnd();
这确实有助于将我的 FPS 提高到上面列出的结果,但是,还有其他方法可以优化我的显示列表吗?也许通过使用嵌套顶点数组以外的其他东西来存储我的模型数据?
最佳答案
通过切换到 VBOs,您将获得显着的速度提升或至少 Vertex arrays .
立即模式 (glBegin()...glEnd()
) 有很多方法调用开销。通过使用更现代的 OpenGL,我已经设法在笔记本电脑上以几百 fps 的速度渲染了约 100 万个顶点(如果没有物理引擎/实体系统开销,速度会更快)。
如果您想了解兼容性,大约 98% 的人支持 VBO 扩展(GL_ARB_vertex_buffer_object
)http://feedback.wildfiregames.com/report/opengl/
关于c++ - OpenGL 显示列表优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944779/