2015-08-22 22 views
1

爲GL的文檔| ES提到>here<統一陣列的glGetUniformLocation索引是否保證順序,除了GL ES?

位置的順序排列指數不要求是連續的。 「a [1]」的位置可能等於或不等於「a [0]」+1的位置。

這是真的,總是在所有的OpenGL實現上還是隻在GL | ES上?

+0

這是我第一次聽說過這個。事實上,我研究了GL 4.5規範的變化,這種語言是新的。該規範的先前版本的措辭是這樣(順序位置)得到保證。 –

+1

@ AndonM.Coleman:你能指出一個這樣的保證嗎?我沒有找到一個。唯一的保證是我可以找到的是,如果您有一個位置引用一個數組或子數組,您可以使用該起始位置設置該(子)數組中的順序範圍的值。 – derhass

+0

@derhass:Ahhhh。是的,那實際上就是我所指的;我誤解了這個問題。你可以在一個數組中使用任何統一的位置並使用'count'> ** 1 **按順序寫入。你絕對不能查詢'x [y + 1]'的位置,並期望它是'x [y]'+ 1. –

回答

2

original GL_ARB_shader_objects extension(其中着色器對象和制服被首次引入的GL)包含以下語句:

是可能的 查詢在數組中的元素K的位置ID。可以使用 該位置ID將多個值加載到位置K處的 位置K開始的數組中。但是,不可能採用該位置ID並將整數N加到該位置ID以前進到元素K + N在那 數組中。應用程序將不得不分別查詢元素K + N的陣列 的位置ID。

當在2.0版本中將着色器添加到核心GL中時,該語言未在擴展規範中採用。 然而,從來沒有一個gaurantee連續的陣列元素在任何GL規格中都有連續的統一位置,所以你永遠不能依賴它。