【发布时间】:2016-01-25 06:09:21
【问题描述】:
我使用 CUDA 表面参考来编写和读取 OpenGL 3D 纹理跟随这篇文章Write to 3D OpenGL textures in CUDA ...。
有一个问题让我很困惑。 比如这个函数
glTexImage3D(GL_TEXTURE_3D, 0, GL_INTENSITY, volDim_.x, volDim_.y
, volDim_.z, 0, GL_LUMINANCE, getVolumeTypeGL(vol), vol->getData());
第三个参数是内部格式。
在 CUDA 内核中,我需要写入或读取纹理,如下面的代码,
ElementType v;
surf3Dread(&v,surfaceRef,x*sizeof(ElementType),y,z);
surf3Dwrite(&v,surfaceRef,x*sizeof(ElementType),y,z);
我不知道如何将内部格式与 ElementType 匹配。 示例
glTexImage3D(GL_TEXTURE_3D, 0, GL_INTENSITY, volDim_.x, volDim_.y
, volDim_.z, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, vol->getData());
在主机内存中,卷数据类型的类型是无符号字符。 我应该选择哪种 ElementType?
uchar4 or uchar ,or float
我的一些代码可以在这里找到My GitHub
更新:
我已经解决了这个问题。
GL_RGBA32F ---- float4
GL_RGBA ---- uchar4
GL_INTENSITY -- uchar
【问题讨论】:
-
请将您的解决方案添加为问题的答案,而不是编辑。回答您自己的问题是完全可以的,并且您最终也将能够接受答案。这就是在Stack Overflow 上将问题标记为已解决的方式,而不是通过编辑问题标题。请不要那样做。谢谢
-
@talonmies 谢谢,我很快就会这样做!
-
感谢您发布答案