关于LWJGL与其他OpenGL实现之间MAJOR性能差异的说明

时间:2014-03-30 17:13:50

标签: performance opengl unity3d lwjgl ogre3d

为什么LWJGL比OpenGL甚至Ogre3D的Unity实现慢得多?我将从我测试过的一些“基准”开始(如果你甚至称之为那些)。

设备:

  • i5 - 3570k @ 4.3GHZ

  • GTX 780 @ 1150 MHZ

第一次测试:在屏幕上放置350,000个三角形(修改后的斯坦福龙)

结果:

  • GTX 780渲染速度为37 FPS(使用LWJGL)
  • GTX 780渲染速度约为300 FPS(使用UNITY3D)
  • GTX 780渲染速度约为280 FPS(使用OGRE3D)

第二次测试:使用纹理渲染Crytek Sponza(我相信大约200,000个顶点?)

结果:

  • GTX 780渲染速度为2 FPS(使用LWJGL)
  • GTX 780渲染速度约为150 FPS(使用UNITY3D)
  • GTX 780渲染速度约为130 FPS(使用OGRE3D)

通常我使用Ogre3D,Unity3D或Panda3D来渲染我的游戏项目,但帧速率的差异是惊人的。我知道Unity有像Occlusion Culling这样的东西,所以它通常是最快的,但即使使用与Ogre3D类似的调用,我也会认为期望与LWJGL类似的结果... Ogre3D和LWJGL都在做前脸仅剔除,但是LWJGL没有'与渲染一切相比,可以获得任何性能提升。最后一件事,LWJGL倾向于打破2.5 GB的RAM使用率渲染Sponza,但这并不能解释其他结果。

1 个答案:

答案 0 :(得分:4)

如果有人遇到同样的问题,问题不是java我已经意识到了。在显示列表中记录立即绘制调用的使用是折旧的,并且会产生较差的性能。你必须使用VBO而不是显示列表。对于我的笔记本电脑,您可以期望性能提升高达600倍。