Je dessine des bâtiments dans mon monde du jeu, je ombrager avec le code suivant:problème d'éclairage OpenGL lors de la rotation de la caméra
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);
Il fonctionne très bien.
Mais quand je commence à voler dans le monde, l'éclairage réagit comme si le monde était un objet en rotation. Ainsi, les lumières changent lorsque l'angle de mon appareil photo change.
Comment inverser cette rotation? donc l'éclairage penserait que je ne fais pas réellement tourner le monde, et alors je pourrais faire que mes bâtiments aient l'ombre statique qui changerait selon où le soleil est sur le ciel.
Edit: voici le code de rendu:
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
}
le problème est probablement dans votre code mouvement/rotation, postez-le aussi. – DShook
Ajouté le code de rendu –