2010-12-01 90 views
0

在阅读的书:OpenGL ES 2.0的编程指南(艾迪生 - 韦斯利)。我已阅读以下内容:的OpenGL ES 2.0:属性不活跃

“属性不存在或不附于被忽略的程序对象顶点着色器活跃的名字。”

当一个属性不活跃?

谢谢。

回答

3

从OpenGL规范:

甲通用属性变量是 认为是活动的,如果确定由 编译器和链接时执行的着色器 当 属性可被访问它。属性是在一个 顶点着色器声明,但从未使用过 变量将不会对限制 计数。在箱子 其中编译器和链接器无法 作出结论性的确定,一个 属性将被认为是活动的。甲 程序对象将失败,如果 活性顶点属性的数量超过 MAX_VERTEX_ATTRIBS链接。

0

有时,有一个顶点着色器可以为各种片段着色器提供一堆属性,而不用担心每个特定片段着色器是否使用它。在这些情况下,编译器和链接器可以移除实际上未在顶点着色器输出中使用的属性,并且这些属性将映射到-1的无操作句柄。

但这不是保证行为 - 它只是GLSL编译器自由制作的优化,因此最终优化着色器是一个好主意,因此顶点着色器只提供数据片段着色器需要,因为您可能会在某些平台上获得性能改进。