cuda读取opengl 3d纹理的问题
我在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复制到内存中可以查看到其数值并不是纹理中的数值。错误出在哪里呢?