【发布时间】:2012-06-03 13:52:08
【问题描述】:
它表示“PowerVR SGX 上的 OpenGL ES 1.1”“有 8 个纹理单元可用。”
它没有说明 OpenGL ES 2.0 上有多少可用的单元,这是否意味着没有限制?
【问题讨论】:
它表示“PowerVR SGX 上的 OpenGL ES 1.1”“有 8 个纹理单元可用。”
它没有说明 OpenGL ES 2.0 上有多少可用的单元,这是否意味着没有限制?
【问题讨论】:
您的应用应该在运行时使用以下方式以编程方式进行检查,而不是询问并获得将来可能正确或不正确的答案:
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &MaxTextureUnits);
请注意,顶点着色器和片段着色器中允许的纹理单元数量也有单独的数字。他们将使用常量GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 和GL_MAX_TEXTURE_IMAGE_UNITS。 COMBINED 号码是两者同时可用的号码。
【讨论】:
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS。
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS、GL_MAX_TEXTURE_IMAGE_UNITS和GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS枚举。第一个用于计算顶点着色器中允许使用的纹理单元数,第二个用于片段着色器,第三个用于组合两个着色器。
在 Apple 的 iOS Device Compatibility Reference 上有 iPhone 和 iPad 上所有硬件的详细列表
基于此,您可以安全地在 任何 iOS 设备上使用多达 8 纹理单位。
【讨论】:
实际上答案在您链接的同一页面中:
PowerVR SGX 上的 OpenGL ES 2.0
限制
...
您可以在片段着色器中使用多达 8 个纹理。您不能在顶点着色器中使用纹理查找。
....
【讨论】: