2011-11-22 61 views
6

在GLSL-ES中可以有數組。例如,GLSL ES Specification給出了一個均勻的變量,它是一個陣列的下面的例子:頂點屬性可能是GLSL-ES 2.0中的一個數組嗎?

uniform vec4 lightPosition[4]; 

是否有可能具有頂點是陣列屬性?換句話說,根據規範,以下是合法的嗎?

attribute vec4 foo[3]; // three vec4s per vertex 

是(是或否)明確任何地方GLSL ES說明書中提及的答案嗎? (我找不到它,但我沒有閱讀規範的每一行)。

此外,如果它是合法的,如何使用OpenGL ES 2.0 API初始化這樣的屬性? (假設使用glVertexAttribPointer,頂點/陣列元素/矢量元素的佈局是什麼?)

回答

10

GLSL ES 2.0 specification指出屬性不能被聲明爲數組。

在桌面GL中,您可以擁有屬性數組。如果爲屬性分配了屬性索引(使用glBindAttribLocation或由鏈接的着色器自動分配),則會獲得連續屬性,如果使用glBindAttribLocation,則會從您請求的屬性開始。所以,如果foo被賦予位置5,foo[0]就是5,foo[1]將是6,和foo[2]將7

如果有一些ES 2.0的擴展,允許屬性陣列,它可能會喜歡這個工作。

+0

說明書在哪裏說它們不能被聲明爲數組? –

+2

@LaurenceGonsalves:第4.3.3節,標題令人驚訝的足夠「屬性」。這是第一段的最後一句。 –

+1

@NicolBolas;在桌面上,在版本1.5(GL 3.2)中使用數組屬性是合法的,所以它在那裏也是相當新的。 – falstro

相關問題