GL_TEXTURE_3D是什么意思?

5

据我所知,纹理只是一幅图片(绝对是二维的),那么为什么我们还需要GL_TEXTURE_3D呢?它的含义是什么?如何使用?


1
这是针对3D纹理的 - 你错了,纹理并不总是2D。 - user786653
2个回答

9
纹理并非绝对的二维。大多数情况下,它是二维的,但你也可以有一维纹理(一条线)和三维纹理(一个体积)。通过使用三个纹理坐标可以访问三维纹理。当你的3D模型可以被平面剪裁时,你可以使用它。然后,代替看到对象的另一侧(对象是空心的),你可以使用三维纹理制作一个实体对象并查看平面裁剪的内容。例如,如果你建模了一个手机并将其切成两半,你可以看到电路板内部而不是背面。

3
应该指出的是,在OpenGL中应用3D纹理并不能使模型变得实心。如果您只是使用剪切平面简单地切割对象,您仍然只能看到被纹理的表面。然而,使用体积光线投射着色器,您可以渲染实体。一个更好的手机和电路的例子应该是CT扫描。搜索“Voxelman”以获取一个想法。 - datenwolf

4
在OpenGL中,纹理可以是1D、2D或3D。3D纹理在游戏中使用得不太多,更多地用于科学可视化应用程序。例如,您有一个带有3D坐标(x,y,z)和某个值(v)的数据集。然后,您可以将数据集(或更可能是由于内存限制而缩小的版本)上传到GPU并以某种方式进行可视化(例如,从3D纹理创建2D切片与在CPU上创建2D切片并上传相比非常快)。

1
还有立方体贴图和一维、二维数组纹理。 - Nicol Bolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接