【问题标题】:When using 3D Texture In CUDA, why we don't need to set Texture coordinate?在CUDA中使用3D Texture时,为什么不需要设置Texture坐标?
【发布时间】:2012-04-12 08:50:52
【问题描述】:

在OpenGL中,创建3D Texture后,我们总是需要绘制一个GL_QUADS等代理几何体来包含3D Texture,并在这个函数中设置纹理坐标:glTexCoord3f。

但是,当我在 CUDA 中使用 3D 纹理时,我从未找到像 glTexCoord3f 这样的函数来指出纹理坐标。实际上,我们只是使用 CUDA 数组,然后将数组绑定到纹理。之后,我们可以使用纹理获取函数 tex3D 来获取值。

因此,我很困惑,即使我们之前从未设置纹理坐标,tex3D 函数如何正确运行????

感谢您的回答。

【问题讨论】:

    标签: cuda textures


    【解决方案1】:

    纹理坐标是tex3D() fetch 函数的输入参数。

    更详细地说,在 OpenGL 中,当您调用 glTexCoord3f() 时,它会指定下一个发出顶点的纹理坐标。渲染多边形的每个像素处的纹理坐标是根据多边形顶点(通常是三角形)指定的纹理坐标进行插值的。

    在 CUDA 中,没有多边形或坐标插值的概念。相反,每个线程负责计算(或加载)其纹理坐标并为每次提取明确指定它们。这就是tex3D() 的用武之地。

    请注意,如果您使用 GLSL 像素着色器在 OpenGL 中对多边形进行着色,您实际上所做的事情与 CUDA 非常相似——您显式调用纹理获取函数,并传递坐标。这些坐标可以任意计算。不同之处在于您可以选择使用在每个像素处插值的输入坐标。 (您可以将每个像素视为一个线程!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多