如何将硬件的 3D 纹理采样与动画书样式的体积纹理一起使用?

How to use the hardware's 3D texture sampling with a flipbook style volume texture?

A question sort of addressing the problem and another question asking a related question.

我有一个 2D 纹理,它有一个 12x12 的体积切片,像这样在网格中分层:

我现在正在做的是自己使用HLSL代码根据体积内的3D坐标计算偏移和采样。我遵循了找到的描述 here and here,其中第一个 link 也讨论了从 2D 切片纹理进行 3D 采样。我还听说现代硬件具有采样 3D 纹理的能力。

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

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

感谢您的帮助。

OpenGL 支持真正的 3D 纹理已经很久了(实际上 3D 纹理支持已经出现在 OpenGL-1.2 中)。这样,您就可以使用函数 glTexImage3D 上传您的 3D 纹理,而不是以 "flipbook" 的形式上传,而只是将其作为一堆 2D 图像上传。在 GLSL 中,您只需使用常规 texture 访问函数,但使用 sampler3D 和一个 3 分量纹理坐标向量(除了旧版本的 GLSL,即在 GLSL-1.5/OpenGL-3 之前,您使用 texture3D)。