【发布时间】:2015-04-10 00:41:53
【问题描述】:
我试图弄清楚我可以在兼容 OpenGL ES 2.0 的设备上使用的最大可变向量和制服数量是多少。我试图了解MAX_VARYING_VECTORS 的工作原理。所以如果MAX_VARYING_VECTORS 是 8,这是否意味着我可以存储 8 * 4 字节的数据用于变量,还是意味着我只能定义 8 个变量而不管数据类型如何?
【问题讨论】:
我试图弄清楚我可以在兼容 OpenGL ES 2.0 的设备上使用的最大可变向量和制服数量是多少。我试图了解MAX_VARYING_VECTORS 的工作原理。所以如果MAX_VARYING_VECTORS 是 8,这是否意味着我可以存储 8 * 4 字节的数据用于变量,还是意味着我只能定义 8 个变量而不管数据类型如何?
【问题讨论】:
MAX_VARYING_VECTORS 以 4 成员浮点向量 (vec4) 为单位。因此,在最小保证值为 8 的情况下,您可以拥有 8 个 vec4 类型的变量。
关于其他类型如何准确地适应这个可用空间的规则相当复杂。对于MAX_VARYING_VECTORS 为 8 的示例,整个事物被视为 8 行 4 列的二维数组。该数组中的空间以特定顺序(主要从最大到最小)分配给变量,并且取决于变量大小和数组中空白空间的大小/位置的规则仍然可用。
确切的规则在 GLSL ES 1.00 规范文档中占据了大约 2.5 页。它们在第 111-113 页。复制整个东西没有多大意义,恐怕我不能把它变成更简单的东西,同时仍然保持准确。
【讨论】: