绘制许多四边形

dj8*_*000 1 c++ opengl optimization frame-rate

我正在制作类似于Minecraft Classic的东西.我已经有了地形发生器,但帧速率非常低!

我已经优化了它,它只绘制了可见的四边形.我正在使用glBegin(GL_QUADS)和glEnd()但只有一次,还有很多glVertex3fv.我开始学习这个,所以我不想使用VBO等所以我能做什么?

PS.我没有使用纹理.

编辑

图片img580.imageshack.us/img580/5547/fpsx.jpg

编辑2

事实上,我的伪优化根本不做任何事......

img143.imageshack.us/img143/9163/fps5.jpg

那是一切都被画出来的时候,只有3 fps更糟......那不好......

但是看看有更多的glVertex ...调用(差不多47倍),但帧率相似,所以也许这不是问题,那么它在哪里呢?

编辑3

此外,我将添加没有任何fps限制的信息:

img339.imageshack.us/img339/4111/fps6.jpg

它可能都是

无论如何,谢谢你的帮助.现在我要学习如何使用VBO(祝我好运).从Debug更改为Release后,有一些(甚至不是很小)的改进(超过100 fps - 在18之前).但它仅适用于3x3块(48x48块),现在当我将其增加到5x5块(80x80块)时,它再次为30-40 fps ......

http://img90.imageshack.us/img90/2321/fps7.jpg

再次感谢您的帮助.可能我会继续问VBO :)

ssu*_*ube 5

您需要使用VRAM缓冲区.

优化可见面有助于显着,就像绘图时的批处理面一样,但是当所有面都存储在系统RAM中并且您逐个发送顶点时,两者都不会有非常显着的好处.

您需要在GPU上创建一个VBO,并在几何变化时将几何下载到它.渲染每一帧,它将更有效率.

在将多维数据集组织成GPU上的一小组缓冲区时,编写(非Minecraft)体素引擎时的粗略测试显示大约50-80倍的增益.这是在存储在GPU上的原始立方体上,从立即到缓冲区将会更大.

有一些库和引擎可以帮助您处理缓冲区和底层对象.一旦有了几何生成算法,大多数引擎都会接受创建的网格,以便在某种对象中使用.对于特定的OpenGL,可视化库可能会有所帮助.