如何使用硬件的3D纹理采样与翻书风格的体积纹理?

时间:2016-09-04 22:15:01

标签: opengl hlsl volume-rendering 3d-texture

A question sort of addressing the problemanother question asking a related question

我有一个2D纹理,在网格中有12x12个体积分层,如下所示: enter image description here

我现在正在做的是使用HLSL代码自己计算基于体积内3D坐标的偏移和采样。我按照herehere的描述进行了操作,其中第一个链接还讨论了2D切片纹理的3D采样。我还听说现代硬件能够对3D纹理进行采样。

话虽如此,我还没有找到任何对3D纹理进行采样的描述或示例代码。我可以使用什么HLSL或OpenGL函数来对这种翻书类型的纹理进行采样?如果可以,请添加一个带有解释的小示例代码段。如果你不能,指点我或文件将不胜感激。我没有找到采样器功能,我可以提供U和V方向的层数,所以我不知道如何在不知道每轴有多少切片的情况下进行采样。

如果我完全误解了这一点,我也很感激被告知。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

OpenGL支持多年来真正的3D纹理(实际上3D纹理支持已经出现在OpenGL-1.2中)。通过这种方式,您可以使用函数glTexImage3D将3D纹理上传为“flipbook”,而仅仅是作为2D图像的堆栈。在GLSL中,您只需使用常规texture访问函数,但使用sampler3D和3组件纹理坐标向量(旧版本的GLSL除外,即在GLSL-1.5 / OpenGL-3之前)使用texture3D)。