GL プログラムの統一データを明示的に設定する代わりに、単純なテスト (フラグメント) シェーダーで「デフォルト」を設定します。
uniform vec3 face_rgb[] = vec3[]
(
vec3(0.0, 0.0, 1.0), vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0),
vec3(1.0, 0.0, 1.0), vec3(0.0, 1.0, 1.0), vec3(1.0, 1.0, 0.0),
vec3(0.2, 0.2, 0.2), vec3(0.0, 0.0, 0.0)
);
フラグメントのテクスチャ座標に応じて、RGB 値を検索するためのインデックス値が作成されます。(実際の RGB 値は重要ではありません)
これは、OS X (GL 3.2 コア プロファイル) で完全に機能します。実際、配列でインデックスを使用するよりもはるかに優れています。const
私の質問は、これは有効な GLSL 構文であり、実装に依存するハックではないのですか? (現時点では 4+ アクセス権はありませんが、答えはまだ当てはまると思います)。また、制服が一定の配列よりも優れている理由についてのアイデアはありますか?