だから私は次の光で描いている3Dオブジェクトを持っています:
GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 0.9}; /* White light. */
GLfloat light_position[] = {300.0, 300.0, 300.0, 0.0};
glShadeModel(GL_SMOOTH);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
オブジェクトを「通常の」コンテキスト (つまり、glOrtho なし) で描画すると、期待どおりにオブジェクトが照らされます。
ただし、私はオブジェクトの正射影に取り組んでおり、その目的のために(ModelViewマトリックスで)glOrthoを使用しています。glOrtho 呼び出しの後にライトを初期化し、動作した場合 (3D の場合) とまったく同じ方法でオブジェクトを描画します。しかし、何らかの理由で、照明が直交投影で機能しません。つまり、glOrtho 呼び出しを行った後です。
これは 3D の場合に機能するため、法線の問題ではありません。glOrtho 呼び出しを使用すると、すべてが薄いレイヤーに押し付けられて、ライトが期待どおりに動作しない理由が説明されると思いますが、正直なところ、照明の経験がないため、これは間違っている可能性があります。
誰が何が起こっているのか知っていますか?