OpenGL显示列表优化

Luc*_*asS 0 c++ opengl optimization

我目前正在为我的应用程序运行一些速度测试,我正在尝试找到更多方法来优化我的程序,特别是我的显示列表.目前我得到:

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();
}
Run Code Online (Sandbox Code Playgroud)

更好的方法是这样做:

glBegin(GL_QUADS);
for(int i = 0; i < Number; i++) {
   ...normal and vertex declarations here
}
glEnd();
Run Code Online (Sandbox Code Playgroud)

这确实有助于将我的FPS提高到上面列出的结果,但是,还有其他方法可以优化我的显示列表吗?也许通过使用嵌套顶点数组以外的东西来存储我的模型数据?

Rob*_*ani 8

通过切换到VBO或至少Vertex阵列,您将获得显着的速度提升.

立即模式(glBegin()...glEnd())有很多方法调用开销.通过使用更现代的OpenGL,我已经设法在笔记本电脑上以几百fps渲染~100万个顶点(没有物理引擎/实体系统开销也会更快).

如果您对兼容性感到疑惑,大约98%的人支持VBO扩展(GL_ARB_vertex_buffer_object)http://feedback.wildfiregames.com/report/opengl/