これは私にはまったく意味がありませんが、とにかく、これがあるとしましょう:
Glfloat dir[] = { 0.0, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, dir);
何だと思う?光線は、私が望むように下ではなく、上を指します。非常に直感的ではありません。なぜopenglの設計者はこれを行うことにしたのですか?
呼び出しはライトの POSITION を設定しているため、指向性がある場合は、ライトが来る方向であると見なされます。
http://www.opengl.org/discussion_boards/showthread.php/159448-why-the-last-element-of-light-position-meansへの返信を見て、さらに高度な説明をしてください。