Opengl: как указать вектор направления для освещения в opengl?

Это вообще не имеет смысла для меня, но в любом случае, допустим, у нас есть это:

Glfloat dir[] = { 0.0, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, dir);

Угадай, что? Лучи света направлены ВВЕРХ, А НЕ ВНИЗ, КАК Я ХОЧУ. Очень неинтуитивно. Почему разработчики opengl решили это сделать?


person purepureluck    schedule 13.01.2012    source источник
comment
Вы спрашиваете, почему OpenGL делает это именно так или как вам следует работать с отрицанием?   -  person Nicol Bolas    schedule 14.01.2012
comment
Я спрашиваю, почему opengl делает это таким образом... меня это действительно беспокоит, потому что это не интуитивно понятно.   -  person purepureluck    schedule 14.01.2012
comment
Вы уверены, что направление вверх именно там, где вы думаете?   -  person Nicol Bolas    schedule 14.01.2012


Ответы (1)


вызов устанавливает ПОЗИЦИЮ света, поэтому, когда он направлен, он принимается за направление, из которого исходит свет.

взгляните на ответ на: http://www.opengl.org/discussion_boards/showthread.php/159448-why-the-last-element-of-light-position-means для дальнейшего/более подробного объяснения.

person chipgw    schedule 30.07.2012