opengl - 了解 2D 纹理数组和 3D 纹理之间的区别?

标签 opengl opengl-es

如果我理解正确,如果我要设置 TEXTURE_MIN_FILTERNEAREST那么sampler2DArray之间没有太大区别/TEXTURE_2D_ARRAYsampler3D/TEXTURE_3D
差异似乎是

  • GenerateMipmap将与 3D 纹理而不是 2D 阵列混合交叉层
  • Z坐标传递给 texture在 GLSL 中,3D 纹理是 0 到 1,而 2D 数组是 0 到 N(深度)。
  • 如果过滤不是 NEAREST 3D 将跨层混合,2D 阵列不会。

  • 正确的?

    最佳答案

    不正确。还有一个区别:mipmap 大小。

    在 3D 纹理中,宽度、高度和深度都随着 mipmap 尺寸的减小而减小。在二维数组纹理中,每个 mipmap 级别具有相同数量的数组层;只有宽度和高度减少。

    这不仅仅是混合和一些纹理坐标奇怪的问题;纹理数据的大小是不同的。它是一种非常不同的纹理,不同于 3D 纹理,就像 2D 纹理与 1D 纹理一样。

    这也是您不能创建 view texture 的原因。 2D 阵列的 3D 纹理,反之亦然。

    关于opengl - 了解 2D 纹理数组和 3D 纹理之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818027/

    相关文章:

    python - PyOpenGL OBJ Loader 未正确加载

    c++ - 替代过剩

    java - 如何在 Vuforia SDK 中使用 jPCT?

    android - 为什么要使用 VBO 和/或 IBO 而不是简单的顶点数据?

    opengl-es - Xamarin : Loading resources via GetManifestResourceStream

    opengl - 在 3.3 版中从 OpenGL 获取投影矩阵

    java - token 语法错误 'class' @ expected [JAVA - LWJGL]

    c++ - OpenGL 显示空白屏幕。也许是由于着色器?

    ios - 从 iOS 中的部分图像创建 mask

    c++ - glGenVertexArrays 和 glGenBuffers 参数