2011-12-23 88 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嗎?