如何将OpenGL纹理转换为CUDA纹理?

时间:2012-05-28 01:45:18

标签: opengl cuda textures

这里我有一个OpenGL纹理:GLuint tex1;

现在我想将tex1用作CUDA中的搜索表,所以也许我应该把它翻译成CUDA纹理。

众所周知,CUDA纹理作为一种纹理<>来自CUDABindTextureToArray。

那么,如何从OpenGL纹理中获取CUDA纹理?

1 个答案:

答案 0 :(得分:6)

首先应使用cudaGraphicsGLRegisterImage函数注册纹理。

cudaGraphicsResource *resource;
cutilSafeCall(cudaGraphicsGLRegisterImage(&resource,text1,GL_TEXTURE_2D, cudaGraphicsMapFlagsNone));

然后你可以得到这个资源的数组引用。

cudaArray* array;

cudaGraphicsMapResources (1, &resource, 0);
cudaGraphicsSubResourceGetMappedArray (&array, resource, 0, 0);

之后,您可以使用array并将其绑定到CUDA纹理。