2011-12-23 26 views
1

私はプロジェクトグループでJOGLで3Dゲームを行っています。私たちはパフォーマンスの問題に対処しています。私たちのゲームは毎秒20フレーム以下で動作します。パフォーマンスの問題JOGL

メイン表示機能の実行時間を測定しました。それは良い4ミリ秒であることが分かった。しかし、2回のディスプレイコールの間の時間を測定したところ、60ミリ秒であったことが判明しました。

質問があります。 OpenGLの2つのディスプレイコールの間にはどうなりますか? JOGLはGLCanvasを使用して、AWTと組み合わせて使用​​される場合AWTイベントディスパッチスレッドは、入力と2Dレンダリングを実行しながら、予め

答えて

5

おかげで、次にレンダリングが阻止されます。

GLOGanelを使用してJOGLをAWTと組み合わせて使用​​すると、レンダリングがブロックされ、AWTイベントディスパッチスレッドは入力を実行し、2Dレンダリング+ GPUグラフィックスメモリからJava2D CPUメモリへのデータコピーを実行するために余分な時間が費やされます。

JOGL勧告は、NEWT GLWindowを直接使用することです。 NEWTは、JOGLのHigh Performance Native Windowing Toolkitです。 NEWTは、OpenGLレンダリングと並行して入力を実行します。 入力イベントによってブロックされることなく、高性能レンダリングが達成されます。 http://jogamp.org/jogl/doc/NEWT-Overview.html

1

私はxranbyに同意しますが、プロジェクトに関する十分な情報を提供していません。

間違った場所でThread.sleep()を呼び出すと、GPUとの同期に問題が発生し、パフォーマンスが低下する可能性があります。

自動スワップバッファーモードをオンのままにして、バッファーを手動でスワップすると、パフォーマンスが損なわれる可能性があります。

OpenGLを現在の状態にするのは必要ではないのですが、パフォーマンスが損なわれる可能性があります。

v-syncを有効にしましたか? FPSAnimatorを使用していますか?

関連する問題