2017-10-03 16 views
2

次の属性は罰金だ:WebGL頂点シェーダ属性の有効なタイプは何ですか?

attribute vec4 coord; 

次の属性は、属性が「ブール値またはint型にすることはできません」と文句を言います:

次の属性は、「構文エラー」を訴える
attribute int ty; 

attribute uint ty; 

これらの結果は非常に恣意的です。頂点シェーダの属性に有効なタイプのリストが見つかりません。 属性タイプがWebGLで有効かどうかのルールは何ですか?

+1

参考チャートが役立つ場合があります。 [WebGLのためのもの](https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf)と[これはWebGL2のためのものです](https://www.khronos.org /files/webgl20-reference-guide.pdf)。 WebGL1の場合は右側にあり、右側には「修飾子」があります。悲しいことに、WebGL2にはリストされていませんが、WebGL2はint、ivec2、ivec3、ivec4、uint、uvec2、uvec3、uvec4、およびすべての新しい非正方行列タイプを追加します – gman

答えて

3

OpenGL ES Shading Language 1.00 specification, page 36, section 4.3.3: "Attribute"

attribute修飾子は頂点ごとのベースでのOpenGL ESから頂点シェーダに渡される変数を宣言するために使用されます。頂点シェーダ以外の任意のタイプのシェーダで属性変数を宣言するのはエラーです。属性変数は、頂点シェーダに関する限り読み取り専用です。属性変数の値は、OpenGL ES頂点APIまたは頂点配列の一部として頂点シェーダに渡されます。頂点シェーダに頂点属性を渡し、頂点シェーダの実行ごとに変更されることが予想されます。 attribute修飾子は、データタイプfloatvec2vec3vec4mat2mat3、及びmat4と共に使用することができます。属性変数は、配列または構造体として宣言することはできません。

関連する問題