Работа с источниками света

Пытаюсь понять свет и работать с книгой OpenGL Superbible. Ниже показано, что я сейчас использую для освещения. Он находится в функции SetupRC.

Освещение в основном работает так, как я ожидал, в соответствии с положением и т. Д., Но я не понимаю, почему, когда я поворачиваю камеру, оно становится ярче в тех местах, где раньше было темнее. Я не изменил положение камеры, но свет все еще движется.

Почему это? Тут как-то запутался.

    GLfloat ambient[] = { 0.7f, 0.7f, 0.7f, 0.5f };
    GLfloat diffuse[] = { 1.0, 1.0f, 1.0f, 1.0f };

    glEnable(GL_LIGHTING);

    glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);

    glEnable(GL_LIGHT0);


    GLfloat ambientLight[] = {1.0f, 0.0f, 1.0f, 0.5f};
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);

    glEnable(GL_COLOR_MATERIAL);

    glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); //GL_AMBIENT_AND_DIFFUSE

person bobber205    schedule 19.01.2010    source источник
comment
Ответ Мартина Беккета указывает на другой точно такой же вопрос. Пожалуйста, прочитайте ответ там.   -  person Bahbar    schedule 19.01.2010


Ответы (1)


Отраженный свет имеет направление, заданное нормалью к поверхности.
Положение источника света, поверхности и камеры влияет на то, сколько света видит камера.

Или, возможно, см. проблему освещения OpenGL при вращении камеры

person Martin Beckett    schedule 19.01.2010
comment
Что вы имеете в виду под отраженным светом? Количество света, которое я вижу на поверхностях (в данном случае на кубе). Я просто хочу прожекторное освещение в данный момент. - person bobber205; 19.01.2010