2

私は最近、リアルタイム 3D グラフィックス アプリケーションでマルチコア プロセッサの能力をより効率的に活用することに関して、並列処理の利点に関する講義に参加しました。このディスカッションは、C++ と TBB (Threading Building Blocks) (Intel) に関するものでした。Java 7 の Fork/Join について知りましたが、OpenGL / JOGL を介してリアルタイム 3D グラフィックスを実行する方法についてもっと知りたいです。

OpenGL/JOGL は 1 つのスレッドに存在する必要があると聞いたことがあります。これが本当かどうかはわかりません。リアルタイム グラフィック アプリケーションに関して、Java での並列処理/マルチコア プログラミングの経験があり、すばらしいリソースをいくつか教えていただければ幸いです。

4

2 に答える 2

3
Is JOGL restricted to one thread?

いいえ、JOGL 自体は 1 つのスレッドにバインドされていません。AWT GLCanvas のみです。後者は、その GLAutoDrawable 実装の 1 つです。AWT GLCanvas は、AWT EDT で実行するためにネイティブ リソースの操作が必要な AWT 自体が原因で制限されています。

How to work with JOGL lock free?

「ほぼ」ロックなしで動作するには、 NEWTを使用できます。NEWT を使用すると、複数のスレッドから複数のウィンドウをレンダリングできますが、相互にブロックすることはありません..干渉などもありません。また、NEWT イベント処理はレンダリングに干渉しません。

Example of multithreading use

OpenGL のマルチスレッド使用の別の例 (JOGL を使用するかどうかに関係なく) は、共有オフスクリーン OpenGL コンテキスト [オンスクリーン コンテキストを使用] を保持する専用スレッドからテクスチャまたはその他の GL 関連リソースを埋めることです。専用スレッドは、レンダリング ループに利用可能なリソースなどを知らせることができます。多くのドローアブル ファクトリ メソッドが公開されている GLDrawableFactory を見てください。Note: offscreen mode can be selected via the GLCapabilities.

You may like to browse through out unit tests in one of thegit repos. Pls check class 'TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT' and shared OpenGL context tests include the name 'Shared'.

于 2012-10-07T00:27:00.660 に答える
0

以下を使用できます。

  1. ピクセル バッファまたは pBuffer は、オフスクリーン レンダリングを可能にする OpenGL の拡張機能です。
  2. フレームバッファ オブジェクトまたは FBO
  3. 共有コンテキスト (異なるスレッド用)

http://jogamp.org/git/?p=jogl.git;a=tree;f=src/test/com/jogamp/opengl/test/junit/jogl/offscreen;hb=HEAD

http://jogamp.org/git/?p=jogl.git;a=tree;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/es2;hb=HEAD

于 2012-10-05T03:01:19.907 に答える