私は OpenGL を学んでいて、ライティングを始めたばかりです。ライティングとライト 0 を有効にし、init メソッドでアンビエント/ディフューズ/スペキュラーをデフォルト値に設定し、各フレームで次のようにします。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// do my 3rd-person camera transforms and rotations
glLightfv(GL_LIGHT0, GL_POSITION, {0.1f, 0.0f, 0.0f});
(少し間違っている場合は注意してください。私はJOGLを使用してJavaでアプリを書いているので、すべてのC++の人々が読みやすくするために、各行からgl.とGL.をトリミングしました:))
次に、三角形などの描画に進み、最後に glFlush() を実行します。
奇妙な問題は、アプリケーションを実行すると、ライトがちらつくことです。プログラム全体で glLightfv への他の呼び出しはありません (上記のように、1 回だけ実行されるようにデバッグした init メソッドでの呼び出しを除いて)。ちらつきが非常に速く、画面にティアリングが見られます。また、シーン描画のどの時点でも glDisable(GL_LIGHTING) はしません。照らされたオブジェクトがちらつく原因になるとは思いません。
また、デバッグの目的で、描画コードのチャンクをコメントアウトしましたが、照明を壊すものは何もないようです-そしてもちろん、すべてを書き、とにかくシーンを照明する前にテストしたので、それが必要な理由はわかりません違う。
基本的に、これは大したことではないことはわかっていますが、他の誰かが以前にこの問題を抱えていましたか? 私が見つけられない簡単な解決策はありますか?私を助けるのに役立つ追加情報をリクエストしてください。最終的に、単純に答えが得られない場合は、レンダリング コード全体をここに投稿して問題を実証できるテスト ケースを分析して作成する必要があります。
これは私が作成しようとした非常に悪いアニメーション gif です...しかし、光が散発的である限り、それは私が話していることをちょっと示しています。点灯したフレームは、本来あるべき姿です。また、5fpsまで遅くしてもちらつきはあまりなく、ランダムにオンまたはオフになります. 理解できません...
ありがとう!!