2011-06-06 14 views

答えて

11

http://www.khronos.org/registry/webgl/specs/latest/#DYNAMIC_INDEXING_OF_ARRAYS 「はWebGLのは、定数式、ループインデックスまたは組み合わせで動的索引付けを可能にする。唯一の例外は、任意の式を使用して索引付けすることができ、頂点シェーダに均一にアクセスするためのものです」。

試しましたか?それがうまくいかなかった場合、いくつかのオプションがあります。

値が小さい場合は、if-elseが正常に機能します。 AFAIKでは、ユニフォームの値がレジスタにロードされることになるので、数十サイクルの計算を実行しても、シェーダの速度はそれほど遅くならないでしょう。

多くの値の場合、テクスチャが最適です。

+10

から任意のコンパイルエラーを得ることはありません: '/ *与えられた変数iがインデックス* /(int型のx =についてですが、 0、x

-1

私はそれをテストしていませんが、私は回避策はあり、次の

//index as a float 
attribute lowp float vColorIndex; 
//the array 
uniform vec4 Colors[16]; 

//type cast the float in an int 
int index = int(vColorIndex); 
//use index 
vec4 col = Colors[index]; 
+0

これは実行時に失敗します。 – jes5199

関連する問題