1

古いコードには、GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR などの glMaterialfv の入力があることに気付きました。これらは最新の GLSL コードでどのように置き換えられますか?

たとえば、モデルをインポートするライブラリ (Assimp) がそのような色カテゴリに直接値を与えると仮定すると、それらはまだ (コア コンテキストで) 直接使用できますか?

4

1 に答える 1

2

はい、少なくとも一種です(もちろん、最近のコードでは、その計算のほとんどをシェーダーで処理します)。

典型的な可能性の1つはuniform、アンビエントカラー、ライトポジション、アイポジションなどにsを使用することです。次にvarying、頂点シェーダーからディフューズカラーとスペキュラーカラーを渡すために使用されるsをいくつか設定します。フラグメントシェーダー。頂点シェーダーは、入力varyingに基づいてそれらの値を計算します。uniform

次に、フラグメントシェーダーは、(たとえば)varying上記のテクスチャとsを受け取り、それらを(必要な他の入力とともに)組み合わせて、フラグメントの最終的な色(に割り当てます)を生成しgl_FragColorます。

于 2010-09-06T01:12:30.260 に答える