2011-01-04 3 views
4

これは愚かに聞こえるかもしれませんが、私はglColor * f関数に1.0fより大きい値を送信するかどうか疑問に思っています。OpenGL:私はいつもglColor * f値を自分でクリップすべきですか?

古いgfxカード/ドライバでこれらの処理が異なりますか? OpenGLはそれに与える色の値を直接使用するのですか、それともそれをクリップしますか?もし、(r> 1.0f)r = 1.0fなら、私はやめなければならない。 ? 1.0fを超えると、指定されていない動作が発生する危険性はありますか?

私は何も違うことをするために1.0fより大きくなるようです。

答えて

4

「浮動小数点も符号付き整数値のどちらも範囲にクランプされている現在の色が更新される前に、それらが補間される前に、[0,1]しかし、色成分がこの範囲にクランプされています。カラーバッファに書き込まれます。

+0

つまり、「並べ替え」。 –

+0

したがって、1.0より大きい値は、フレームバッファへの何らかの並べ替えのパスがあれば、1.0から区別できません。あなたが算術演算を行っているなら(例えば、ライティングとglEnable(GL_COLOR_MATERIAL)を使って)、出力は異なるかもしれません。 – Tommy

+1

つまり、クランプする必要があります。 –

2

OpenGLは値を[0、1]の範囲に自動的に固定します。 the manpageから

関連する問題