ボリュームレンダリングと表示にopenGLと「freeglut」ライブラリを使用しています。メインスレッドでは、openGLウィンドウを初期化し、フレームごとにボリュームデータを取得します。ボリュームレンダリングは、1つのボリュームデータが取得された後に実行されます。これはうまく機能しますが、時間がかかります。メインスレッドでopenGLウィンドウを初期化し続け、別のスレッドでボリュームレンダリングと表示を行うことは可能ですか?wglMakeCurrentを確認しましたが、メインスレッドで初期化されたウィンドウは更新されません。
質問する
265 次
1 に答える
5
マルチスレッド OpenGL 操作は厄介な獣です。ただし、Pixel Buffer Object をプログラムのアドレス空間にマップすることはできます。これは私が強くお勧めする方法です。そして、そのアドレス空間の領域はすべてのスレッドから見えます。したがって、ボリューム データを別のスレッドから (または、現在取り組んでいるプログラムの場合と同様に、別の GPU で) 更新し、メイン スレッドに PBO 内の新しいデータからテクスチャを更新するよう信号を送ることができます。glTexSubImage3D を使用して、PBO からボリュームのサブ部分のみを更新することもできます。
于 2012-09-18T20:01:05.690 に答える