0

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

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 提高到上面列出的结果,但是,还有其他方法可以优化我的显示列表吗?也许通过使用嵌套顶点数组以外的东西来存储我的模型数据?

4

1 回答 1

8

通过切换到VBO或至少Vertex 数组,您将获得显着的速度提升。

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

如果您想知道兼容性,大约 98% 的人支持 VBO 扩展 ( GL_ARB_vertex_buffer_object) http://feedback.wildfiregames.com/report/opengl/

于 2012-10-17T23:24:37.697 回答