古いコードには、GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR などの glMaterialfv の入力があることに気付きました。これらは最新の GLSL コードでどのように置き換えられますか?
たとえば、モデルをインポートするライブラリ (Assimp) がそのような色カテゴリに直接値を与えると仮定すると、それらはまだ (コア コンテキストで) 直接使用できますか?
はい、少なくとも一種です(もちろん、最近のコードでは、その計算のほとんどをシェーダーで処理します)。
典型的な可能性の1つはuniform
、アンビエントカラー、ライトポジション、アイポジションなどにsを使用することです。次にvarying
、頂点シェーダーからディフューズカラーとスペキュラーカラーを渡すために使用されるsをいくつか設定します。フラグメントシェーダー。頂点シェーダーは、入力varying
に基づいてそれらの値を計算します。uniform
次に、フラグメントシェーダーは、(たとえば)varying
上記のテクスチャとsを受け取り、それらを(必要な他の入力とともに)組み合わせて、フラグメントの最終的な色(に割り当てます)を生成しgl_FragColor
ます。