我創建一個OpenGL紋理像這樣:cudaGraphicsResourceGetMappedPointer返回「未知錯誤」
glGenTextures(1, &boardTex);
glBindTexture(GL_TEXTURE_2D, boardTex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_FLOAT, NULL);
我得到board
一個手柄,所以我認爲紋理的創建成功。我想分享這個紋理與CUDA,所以我註冊並映射資源:
cudaGLSetGLDevice(0);
cudaGraphicsGLRegisterImage(&boardImage, boardTex, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone);
cudaGraphicsMapResources(1, &boardImage, 0);
然後我試圖讓映射的指示器這樣的:
float4* mappedPointer;
size_t mappedSize;
cudaGraphicsResourceGetMappedPointer((void**)&mappedPointer, &mappedSize, boardImage);
不幸的是這個調用返回一個錯誤並拒絕工作。爲了以防萬一,我確保紋理不受OpenGL環境的限制。還是行不通。 cudaGetErrorString
收益率「未知錯誤」所以我很困在這裏。我會很感激任何想法。
'board'和'boardTex'具有相同的值嗎? – harrism 2012-02-23 04:47:55
@harrism是的,我的不好(板子在某些功能上是本地的)。編輯它。 – kaoD 2012-02-23 04:54:40