2012-05-28 99 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紋理。