OpenCLを使用して計算されたピクセルアートをいくつか行い、CPUラウンドトリップを行わずにディスプレイに直接表示することはできません。私はOpenCLとOpenGLの相互運用性を使用し、GPUのテクスチャバンクに書き込み、OpenGLでテクスチャを表示することができました。私はこれを行うための最良の方法は何だろうと思っていた。OpenGLでOpenCL計算ピクセルを画面に描画する方法は?
13
A
答えて
13
OpenCL実装でサポートされている場合は、OpenCL/OpenGL interopを使用することをお勧めします。これにより、OpenCLは特定のOpenGLオブジェクト(バッファオブジェクトとテクスチャ/レンダバッファ)にアクセスできます。デフォルトのOpenGLフレームバッファ(ディスプレイ)に直接アクセスすることはできませんが、framebuffer objectにバインドされたイメージにアクセスすることは可能です。そこから、OpenGLでは、フレームバッファblitをデフォルトのフレームバッファに渡すことができます。 CPUメモリには何も触れません。
詳細については、CL/GL interopで詳細を調べる必要があります。基本的な考え方は、OpenGLで(FBOにバインドする)レンダバッファを作成することです。次に、そのレンダバッファをOpenCLに渡して、レンダリングバッファに計算を行います。これが完了したら、glBlitFramebuffer
を実行して、レンダバッファからデフォルトのフレームバッファにデータをコピーした後、バッファをスワップして表示します。
いいです。私はこの方法を知っていますが、私はCL&GL interopの実現にいくつか問題があります。 http://stackoverflow.com/questions/8789662/interoperability-texture-access-blockここに私の問題を見ていただけますか? – itun