0

openglで使用しているテクスチャをCUDAを使って操作したい。これにはPBOを使用する必要があることを知っているので、次のようにPBOに変更を加えるたびにテクスチャを再作成する必要があるのではないかと思います。

// Select the appropriate buffer
glBindBuffer( GL_PIXEL_UNPACK_BUFFER, bufferID);
// Select the appropriate texture
glBindTexture( GL_TEXTURE_2D, textureID);
// Make a texture from the buffer
glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, Width, Height,GL_BGRA, GL_UNSIGNED_BYTE, NULL);

glTexSubImage2DなどはPBOからデータをコピーしますか?

4

1 に答える 1

1

すべてのピクセル転送操作は、バッファオブジェクトで機能します。ピクセル転送操作を開始するためglTexSubImage2D、バッファオブジェクトで使用できます。


ピクセル転送とテクスチャに使用されるバッファオブジェクト間には、長期的な接続はありません。バッファオブジェクトは、クライアントメモリポインタが呼び出しに使用されるのと同じように使用されglTexSubImage2Dます。OpenGLがフォーマットし、テクスチャにデータを取り込むときにデータを保存するためにあります。それが終わったら、あなたはそれであなたがやりたいことを何でもすることができます。

唯一の違いは、OpenGLがバッファオブジェクトを管理するため、バッファからのアップロードを非同期にすることができることです。そうすれば、GPU操作(OpenGL、OpenCL、またはCUDAのいずれからでも)からバッファーオブジェクトを埋めるようなゲームをプレイできるようになります。

于 2011-07-26T08:18:54.260 に答える