シナリオは次のとおりです。cudaBindTextureToArrayによって3DOpenGLテクスチャをCUDAに渡し、非剛体変換で変換して3Dサーフェスに書き込み、ボリュームレンダリングのためにテクスチャでGLSLシェーダーに渡します。GLSLはテクスチャIDしか知りませんか?この3Dサーフェスを通常のOpenGLテクスチャとしてどのように使用しますか?
擬似コード
このようなopenglでテクスチャを作成します
glTexImage3D(GL_TEXTURE_3D, 0,............);
それをcudaに渡す
サーフェスを作成して塗りつぶします
cutilSafeCall(cudaBindSurfaceToArray(volumeTexOut, outTexture->content));
......
..
cutilSafeCall( cudaMalloc3DArray(&vol->content, &vol->channelDesc, dataSize, cudaArraySurfaceLoadStore ) );
変換後、..
surf3Dwrite(short(voxel), volumeTexOut, sizeof(short)*x1,y1, z1);
そして今、私はこのサーフェスをopenglテクスチャとして使用し、それをGLSLに渡したいと思います