2012-05-28 79 views
2

这里我有一个OpenGL纹理:GLuint tex1;如何将OpenGL纹理转换为CUDA纹理?

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

正如我们所知,CUDA纹理作为一种纹理<>来自CUDABindTextureToArray。

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

+5

请参见CUDA C编程指南中的第3.2.11节“图形互操作性”。此外,您最近在CUDA问题上问了很多问题,看起来像是发布了它们,然后放弃了它们。包含问题的评论尚未得到回复,有效答案尚未被接受等。如果您已经找到了自己的解决方案以适应那些较旧的问题,请发布自己的答案并接受答案。这表明问题得到了解决,并为其他可能以后出现的人留下了信息。堆栈溢出不是一个单向的街道.... – talonmies

+0

谢谢,我会按照你的意见 – TonyLic

回答

5

你应该首先注册你的纹理与cudaGraphicsGLRegisterImage函数。

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

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

cudaArray* array; 

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

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