【发布时间】:2012-03-13 11:48:32
【问题描述】:
我正在创建这样的 OpenGL 纹理:
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 产生 "unknown error" 所以我被困在这里了。我会很感激任何想法。
【问题讨论】:
-
board和boardTex是同一个值吗? -
@harrism 是的,我的错(板在某些功能中是本地的。)编辑它。