首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cudaGraphicsResourceGetMappedPointer返回“未知错误”

cudaGraphicsResourceGetMappedPointer返回“未知错误”
EN

Stack Overflow用户
提问于 2012-02-23 03:42:30
回答 1查看 2.5K关注 0票数 4

我正在创建这样的OpenGL纹理:

代码语言:javascript
复制
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分享这个纹理,所以我注册并映射资源:

代码语言:javascript
复制
cudaGLSetGLDevice(0);
cudaGraphicsGLRegisterImage( &boardImage, boardTex, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone );
cudaGraphicsMapResources( 1, &boardImage, 0 );

然后,我尝试像这样得到映射的指针:

代码语言:javascript
复制
float4* mappedPointer;
size_t mappedSize;
cudaGraphicsResourceGetMappedPointer( (void**)&mappedPointer, &mappedSize, boardImage );

不幸的是,此调用返回一个错误并拒绝工作。我确保纹理没有绑定在OpenGL上下文中,以防万一。还是不起作用。cudaGetErrorString会产生“未知错误”,所以我被困在这里了。如果有任何想法我会很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-23 05:02:05

好吧,我自己发现的:

cudaGraphicsSubResourceGetMappedArray (&array, resource, 0, 0);返回要使用的cudaArray。我还没有想到cudaArray的工作方式(我可能最终会使用PBO),但至少它没有崩溃。

编辑:

来自cudaGraphicsResourceGetMappedPointer()的数据自动化系统参考指南条目

如果资源不是缓冲区,则不能通过指针访问它,并返回cudaErrorUnknown。

来自cudaGraphicsSubResourceGetMappedArray()的数据自动化系统参考指南条目

如果资源不是纹理,则不能通过数组访问它,并且返回cudaErrorUnknown。

换句话说,对映射的缓冲区对象使用GetMappedPointer。对映射的纹理对象使用GetMappedArray。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9406844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档