0

だから私はちょっとしたピクルスに出くわしました。GLCanvas に 3D モデル (およびその結果として 2D モデル) を表示するために JOGL を使用してライブラリを作成しています。Strixa3DElement の個々のポリゴンの描画メソッドをスレッドに呼び出して少し高速化するまでは、すべてがスムーズに実行されていました。以前は、すべてが画面に完全に描画されていましたが、非常にゆっくりでした。さて、速度に関する限り、これ以上のことはありません。しかし、それは何も描いていません。draw メソッドが処理するもの以外はすべて無視しますが、何か理由がありますか?

https://github.com/NicholasRoge/StrixaGL/blob/master/src/com/strixa/gl/Strixa3DElement.java

動作しませんか?

編集: また、スレッドでの同時実行の問題を回避するために、特定の要素に 100000 個以下のポリゴンがあるとしましょう。

4

1 に答える 1

1

今のところ、レンダリングタスクはglスレッドのままにしておくことをお勧めします。

  • ディスプレイリストも使用していません。確かに、それは非常に遅くなります。
  • その後も、レンダリングは速度の問題ではありません。別のスレッドでレンダリングするためにデータを準備し、レンダリングループをクリーンで高速なままにすることができます。(this._performGameLogicなどを移動します)
  • VBO、シェーダー(CPUからGPUへのデータとレンダリングロジックの移動)、オフスクリーンバッファーなどを使用して、パフォーマンスを向上させることができます。

続行する場合は、

  • コードの記述中に、GLArrayDataServerクラスでVBO、単体テスト、およびデモを使用できるかどうかを確認してください。
  • 引数としてGL2を渡さない:GLContext.getCurrentGL()。getGL2();
  • GL2ES2を試す必要があります:固定機能は非推奨になり、モバイルプラットフォームでの使用が可能になります。
  • ジャバー会議に参加する

JOGLとスレッドに関するいくつかの回答:リソース:OpenGLリアルタイムアプリケーションのためのJavaでの並列処理

于 2012-10-14T16:31:54.000 に答える