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

Ton*_*Lic 3 opengl textures cuda

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

现在我想将tex1用作CUDA中的搜索表,所以也许我应该将它转换为CUDA纹理.

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

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

gee*_*eek 7

您应该首先使用cudaGraphicsGLRegisterImage函数注册纹理.

cudaGraphicsResource *resource;
cutilSafeCall(cudaGraphicsGLRegisterImage(&resource,text1,GL_TEXTURE_2D, cudaGraphicsMapFlagsNone));
Run Code Online (Sandbox Code Playgroud)

然后,您可以获得此资源的数组引用.

cudaArray* array;

cudaGraphicsMapResources (1, &resource, 0);
cudaGraphicsSubResourceGetMappedArray (&array, resource, 0, 0);
Run Code Online (Sandbox Code Playgroud)

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