我正在使用C和OpenGL(我的Minecraft)制作一个体素引擎,并且使用ATI X1600无法在我的3GHz上获得不错的fps …我完全没有想法.
当我在屏幕上有大约12000个立方体时,它会降到20fps以下 – 可悲.
到目前为止,我的优化是:视锥体剔除,背面剔除(通过OpenGL的glEnable(GL_CULL_FACE)),引擎只绘制可见面(当然除了剔除面)并且它们在八叉树中.
我试过VBO,我不喜欢它们,它们不会显着增加fps.
Minecraft的引擎如何如此之快……我在10000立方体中挣扎,而Minecraft可以在更高的fps下轻松绘制.
有任何想法吗?
您应该对
代码进行概要分析,以确定应用程序中的瓶颈是否在
cpu或GPU上.例如,你的剔除/ octtree算法可能很慢,在这种情况下它根本不是一个OpenGL问题.
我还会计算你在每一帧上绘制的立方体数量,并在屏幕上显示.这样您就知道您的剔除程序按预期工作了.
最后你没有提到你的立方体是否有纹理.尝试使用较小的纹理或禁用纹理,并查看帧速率增加了多少.
gDEBugger是一个很棒的工具,可以帮助您找到OpenGL的瓶颈.