阅读本书:OpenGL ES 2.0编程指南(Addison-Wesley)。我读过以下内容:
“忽略了附加到程序对象的顶点着色器中不存在或不活动的属性名称。”
当某个属性未激活时?
感谢。
答案 0 :(得分:3)
来自OpenGL规范:
通用属性变量是 如果确定则认为是活跃的 由编译器和链接器表示 属性可以在访问时访问 着色器已执行。属性 在a中声明的变量 顶点着色器但从未使用过 计入限额。在案件 编译器和链接器不能的地方 做出决定性的决定, 属性将被视为活动。一个 如果程序对象将无法链接 活动顶点属性的数量 超过MAX_VERTEX_ATTRIBS。
答案 1 :(得分:0)
有时候,有一个顶点着色器可以为各种片段着色器提供一组属性,而不必担心每个特定的片段着色器是否都使用它。在这些情况下,编译器和链接器可以删除顶点着色器输出中实际未使用的属性,并且这些属性将映射到-1的无操作句柄。
然而,这不是保证行为 - 它只是GLSL编译器可以自由进行的优化,因此最终优化着色器是一个好主意,这样顶点着色器只提供数据,片段着色器需要,因为您可能会在某些平台上获得性能改进。