Работа с огнями - PullRequest
       14

Работа с огнями

3 голосов
/ 19 января 2010

Пытаясь понять свет и прорабатывать книгу 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

1 Ответ

2 голосов
/ 19 января 2010

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

Или, возможно, видите Проблема с освещением OpenGL при вращении камеры

...