2017-09-05 10 views
1

glSecondaryColorでは、2番目の色を指定できます。この2番目の色は何のために便利ですか?OpenGLのセカンダリカラーは何のために便利ですか?

私はkronos referenceをチェックして、それはあまり役に立ちません。

GL_COLOR_SUMが有効になっている場合、二次色をラスタライズ中に各フラグメント に補間して適用されます。照明が が有効でGL_SEPARATE_SPECULAR_COLORが指定されている場合、 の2次色の値には、照明計算の鏡面用語 から計算された値が割り当てられます。そのような条件下で、 の色は、 GL_COLOR_SUMの状態にかかわらず、各フラグメントに適用されます。 GL_SEPARATE_SPECULAR_COLOR が指定されている場合、現在のセカンダリ の照会から返された値は未定義です。

この2次色は、古いGLバージョンの残り物のように見えることもあります...間違っていますか?

答えて

7

固定機能ライティングモデルでは、拡散照明鏡面照明に原色またはテクスチャカラーが適用されます。したがって、黒色の原色/テクスチャカラーが鏡面照明に乗算され、効果的にゼロになるので、光沢のある黒い表面を有することは不可能であった。

二次色を提供し、GL_SEPARATE_SPECULAR_COLORを有効にすると、鏡面ライティング値が原色の代わりに二次色に乗算されることを意味します。したがって、セカンダリカラー1.0の黒いプライマリ/テクスチャカラーを持つことができます。それは、あなたが表面の暗い領域でさえ明るい光沢のあるハイライトを持つことを可能にします。

もちろん、これはすべてGL 3.1で破棄された固定機能ゴミ箱です。シェーダを使用すると、どのようなライティングモデルでもコーディングできます。

関連する問題