GL_TEXTURE_3D 是啥意思?

Posted

技术标签:

【中文标题】GL_TEXTURE_3D 是啥意思?【英文标题】:What does GL_TEXTURE_3D mean?GL_TEXTURE_3D 是什么意思? 【发布时间】:2011-09-07 05:51:01 【问题描述】:

我知道纹理只是一个图像(绝对是 2D),那么为什么我们有 GL_TEXTURE_3D 呢?这是什么意思?和用法?

【问题讨论】:

用于 3d 纹理 - 你错了,纹理总是 2d。 【参考方案1】:

纹理不是绝对二维的。大多数时候它是 2d,但您也可以有 1d 纹理(一条线)和 3d 纹理(一个体积)。使用三个纹理坐标访问 3D 纹理。当您的 3d 模型可以被平面剪裁时,您可以使用它。然后不用看到对象的另一面(对象是空心的),您可以使用 3d 纹理制作实体对象并查看平面剪裁的内容。因此,例如,如果您为手机建模并将其切成两半,而不是看到背面,您可以看到里面的电路。

【讨论】:

应该指出,应用 3D 纹理不会在 OpenGL 中制作实体模型。如果您只是使用剪切平面切割对象,您仍然只能看到被纹理化的表面。但是,使用体积光线投射着色器可以渲染实体。手机和循环的一个更好的例子是 CT 扫描。谷歌搜索“Voxelman”以获得一个想法。【参考方案2】:

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

【讨论】:

还有立方体贴图和一维和二维数组纹理。

以上是关于GL_TEXTURE_3D 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

glReadPixels 可以用来从 GL_TEXTURE_3D 读取图层吗?

应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)

使用 GL_TEXTURE_2D_ARRAY 作为绘制目标

为啥纹理(GL_TEXTURE_2D)不能与(VertexArray)VAO一起使用

在具有目标 GL_TEXTURE_2D 的纹理上渲染相机预览

设置 GL_TEXTURE_2D_ARRAY,帧缓冲不完整