2011-12-23 87 views
1

我正在JOGL的3D游戏中与我的项目组合作。我们正在解决性能问题。我们的游戏运行速度为每秒20帧或更少。性能问题JOGL

我们测量了主显示功能的执行时间。原来是4毫秒这很好。但是,当我们测量两次显示调用之间的时间时,结果为60毫秒。

所以问题是。在Opengl的两个显示调用之间会发生什么?

由于事先

回答

5

如果JOGL将结合通过使用GLCanvas中然后使用AWT而AWT事件指派线程执行输入和2D渲染渲染被阻止。

如果通过使用GLJPanel将JOGL与AWT结合使用,那么在AWT事件调度线程执行输入和2D渲染时+ +花费额外的时间将GPU图形内存中的数据副本执行到Java2D CPU内存时阻止渲染。

JOGL的建议是直接使用NEWT GLWindow。 NEWT是JOGL的高性能本机开窗工具包。 NEWT与OpenGL渲染并行执行输入。 高性能渲染不会被输入事件阻塞,反之亦然。 http://jogamp.org/jogl/doc/NEWT-Overview.html

1

我同意xranby,但你没有提供关于你的项目的足够的信息。

如果你在错误的地方调用Thread.sleep(),它可能会导致与GPU同步的问题,并破坏你的性能。

如果您离开自动交换缓冲区模式并手动无用地交换缓冲区,它也可能会破坏您的性能。

如果您尝试使OpenGL呈现最新状态,但没有必要,则可能会损坏您的性能。

您是否启用了v-sync?你使用FPSAnimator吗?