【发布时间】:2014-04-20 08:34:21
【问题描述】:
我正在将 OpenGL 应用程序移植到网络上,并发现 WebGL 1.0 不支持 3D 纹理(将在 2.0 中支持)。 我将 16 x 16 x 16 纹理用于一些简单模型的颜色信息(用于块状外观)。
现在不支持 3D 模型,我意识到我可以将 16 层分散到 4 x 4 平面上,如下所示:
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 = layer
结果是 64 x 64“伪 3D”纹理。
这引出了我的问题:GPU 上的 3D 和 2D 纹理有什么区别?在可以使用 2D 纹理而不是 3D 纹理的情况下(如我的示例),两者之间是否会有性能差异?
我猜 3D 纹理具有沿 z 轴插值的硬件支持,而对于 2D 纹理,则需要两个纹素提取,并在它们之间手动插值,以获得相同的结果。
【问题讨论】:
-
这是用 2d 纹理模拟 3d 纹理的代码的答案。 stackoverflow.com/questions/19939557/… 我猜如果存在 3d 纹理,使用它们会快得多。为什么不计时?
标签: opengl 3d textures webgl 3d-texture