рисует здание в моем игровом мире, я тень их со следующим кодом:OpenGL проблема освещения при повороте камеры
GLfloat light_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
GLfloat light_position[] = {135.66f, 129.83f, 4.7f, 1.0f};
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glColorMaterial(GL_FRONT, GL_AMBIENT);
Это прекрасно работает.
Но когда я начинаю летать в мире, освещение реагирует на это, как будто мир был объектом, который вращается. Таким образом, свет меняется, когда меняет угол камеры.
Как вернуть это вращение? поэтому освещение подумает, что я на самом деле не вращаю мир, и тогда я мог бы сделать свои здания статичным затенением, которое изменилось бы в зависимости от того, где солнце находится на небе.
Edit: Вот код рендеринга:
int DrawGLScene()
{
// stuff
glLoadIdentity();
glRotatef(XROT, 1.0f, 0.0f, 0.0f);
glRotatef(YROT, 0.0f, 1.0f, 0.0f);
glRotatef(ZROT, 0.0f, 0.0f, 1.0f);
glTranslatef(-XPOS, -YPOS, -ZPOS);
// draw world
}
проблема, вероятно, в вашем коде движения/вращения, сообщение также. – DShook
Добавлен код рендеринга – 2009-12-16 21:18:38