2011-11-22 11 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を使用した場合に要求した属性から始まる連続する属性が取得されます。属性配列を可能にするために、いくつかのES 2.0の拡張がある場合はそうfooは場所5、foo[0]は5になり与えられた場合、foo[1]は6になり、そしてfoo[2]は7

だろう、それはおそらく、このように動作します。

+0

仕様書では、アレイとして宣言できないことはどこにありますか? –

+2

@LaurenceGonsalves:驚くべきことに、「属性」と題された第4.3.3項。最初の段落の最後の文です。 @ NicolBolas; –

+1

;デスクトップ上ではバージョン1.5(GL 3.2)で配列属性を使用することが合法になったので、そこでもかなり新しいです。 – falstro

関連する問題