-2

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+ アクセス権はありませんが、答えはまだ当てはまると思います)。また、制服が一定の配列よりも優れている理由についてのアイデアはありますか?

4

1 に答える 1

1

はい、一様配列は GL 3.2 でデフォルト値を持つことができます。したがって、構文は有効です。

それが常に機能するという意味ではなく、有効であるというだけです。ドライバーのバグはまだあなたを捕まえることができます。

于 2013-05-04T14:50:21.650 に答える