Phong / Blinnシェーディングモデルを使用しようとしていますが、減衰を正しく機能させるのに問題があります。何らかの理由で、ポイントライトに面しているジオメトリが完全に白くなります。(1)コードは固定機能で完全に正常に機能し(つまり、すべての減衰/位置係数が適切に設定されている)、(2)次のものを置き換えると正常に機能するためです。
att = 1.0 / (gl_LightSource[i].constantAttenuation + gl_LightSource[i].linearAttenuation * dist + gl_LightSource[i].quadraticAttenuation * dist * dist);
と
att = 1.0 / (1 + 0.1*dist);
つまり、他のすべての計算(距離、方向、正規化)は正常に機能しているように見えますが、このコード行には(どういうわけか)問題があります。必要に応じてもっと投稿させていただきますが、これが問題のようです。
PS Windows 7を実行していて、私のOpenGLバージョンは4.3として出力されます。
アップデート:
これが問題のプリントスクリーンです。
そしてそれがどのように見えるかatt = 1.0 / (1 + 0.1*dist);