2010-12-01 67 views
0

在閱讀的書:OpenGL ES 2.0的編程指南(艾迪生 - 韋斯利)。我已閱讀以下內容:的OpenGL ES 2.0:屬性不活躍

「屬性不存在或不附於被忽略的程序對象頂點着色器活躍的名字。」

當一個屬性不活躍?

謝謝。

回答

3

從OpenGL規範:

甲通用屬性變量是 認爲是活動的,如果確定由 編譯器和鏈接時執行的着色器 當 屬性可被訪問它。屬性是在一個 頂點着色器聲明,但從未使用過 變量將不會對限制 計數。在箱子 其中編譯器和鏈接器無法 作出結論性的確定,一個 屬性將被認爲是活動的。甲 程序對象將失敗,如果 活性頂點屬性的數量超過 MAX_VERTEX_ATTRIBS鏈接。

0

有時,有一個頂點着色器可以爲各種片段着色器提供一堆屬性,而不用擔心每個特定片段着色器是否使用它。在這些情況下,編譯器和鏈接器可以移除實際上未在頂點着色器輸出中使用的屬性,並且這些屬性將映射到-1的無操作句柄。

但這不是保證行爲 - 它只是GLSL編譯器自由製作的優化,因此最終優化着色器是一個好主意,因此頂點着色器只提供數據片段着色器需要,因爲您可能會在某些平臺上獲得性能改進。