2
这里我有一个OpenGL纹理:GLuint tex1;如何将OpenGL纹理转换为CUDA纹理?
现在我想使用tex1作为CUDA中的搜索表,所以也许我应该将其转换为CUDA纹理。
正如我们所知,CUDA纹理作为一种纹理<>来自CUDABindTextureToArray。
那么,如何从OpenGL纹理中获得CUDA纹理?
这里我有一个OpenGL纹理:GLuint tex1;如何将OpenGL纹理转换为CUDA纹理?
现在我想使用tex1作为CUDA中的搜索表,所以也许我应该将其转换为CUDA纹理。
正如我们所知,CUDA纹理作为一种纹理<>来自CUDABindTextureToArray。
那么,如何从OpenGL纹理中获得CUDA纹理?
你应该首先注册你的纹理与cudaGraphicsGLRegisterImage
函数。
cudaGraphicsResource *resource;
cutilSafeCall(cudaGraphicsGLRegisterImage(&resource,text1,GL_TEXTURE_2D, cudaGraphicsMapFlagsNone));
然后你可以获得对这个资源的数组引用。
cudaArray* array;
cudaGraphicsMapResources (1, &resource, 0);
cudaGraphicsSubResourceGetMappedArray (&array, resource, 0, 0);
之后,您可以使用您的array
并将其绑定到CUDA纹理。
请参见CUDA C编程指南中的第3.2.11节“图形互操作性”。此外,您最近在CUDA问题上问了很多问题,看起来像是发布了它们,然后放弃了它们。包含问题的评论尚未得到回复,有效答案尚未被接受等。如果您已经找到了自己的解决方案以适应那些较旧的问题,请发布自己的答案并接受答案。这表明问题得到了解决,并为其他可能以后出现的人留下了信息。堆栈溢出不是一个单向的街道.... – talonmies
谢谢,我会按照你的意见 – TonyLic