cuda读取opengl 3d纹理的问题

Fancyboy2004 2010-11-29 03:41:57
我在cuda中需要读取opengl的一个三维纹理,是通过pbo的方式进行数据传递的,相关代码如下:(三维纹理分辨率为dism[0]*dims[1]*dims[2],float格式,GL_LUMINENCE)


glBindTexture(GL_TEXTURE_3D,curTexID);//curTexID为目标纹理
glGenBuffersARB(1, &curVolume_pbo);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, curVolume_pbo);
glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, dims[0]*dims[1]*dims[2]*sizeof(float), 0, GL_STREAM_DRAW_ARB);
glGetTexImage(GL_TEXTURE_3D,0,GL_LUMINANCE,GL_FLOAT,0);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
cudaGLRegisterBufferObject(curVolume_pbo);
cudaGLMapBufferObject((void**)&m_curVolume, curVolume_pbo);

//cuda processing
//cuda processing ends

cudaGLUnmapBufferObject(curVolume_pbo);
cudaGLUnregisterBufferObject(curVolume_pbo);
glDeleteBuffersARB(1, &curVolume_pbo);


现在问题是,我在cuda中没有读取到正确的数据,通过应用cudaMemcpy()将m_curVolume复制到内存中可以查看到其数值并不是纹理中的数值。错误出在哪里呢?
...全文
159 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kirk119 2010-12-13
  • 打赏
  • 举报
回复
请问是如何解决的呢?
Fancyboy2004 2010-11-29
  • 打赏
  • 举报
回复
问题已解决。

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧