Je ne comprends pas ce que la fonction glLookAt() fait exactement.gluLookAt() ne cherche pas où il devrait
J'ai un objet à la position x, y, z. Je veux placer la caméra à la position x + 20, y + 20, z + 20 pendant que l'objet bouge, de manière à ce qu'il soit stationnaire. Cependant, ce n'est pas le cas: quand je fais le code suivant, je vois une croix qui se déplace lentement vers la droite et qui sort même de la fenêtre!
while (keystate[SDLK_ESCAPE] == false) {
SDL_PollEvent(&event);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
n+=0.1;
float x = 10;
float y = 10+n*n;
float z = 10;
// drawing an object at x,y,z (here a cross)
glBegin(GL_LINES);
glColor3ub(200,0,0);
glVertex3f(x-2,y,z);
glVertex3f(x+2,y,z);
glVertex3f(x,y-2,z);
glVertex3f(x,y+2,z);
glEnd();
// looking at the object
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(x+20,y+20,z+20,x,y,z,0,0,1);
glFlush();
SDL_GL_SwapBuffers();
}
Si l'appareil photo regardait correctement x, y, z, la croix devrait toujours apparaître au centre?
Si je mets y = 10 + n, l'objet semble immobile. Avec y = 10 + n * n, l'objet se déplace à vitesse constante, et avec y = 10 + n * n * n, l'objet se déplace et accélère.
J'ai aussi
gluPerspective(70,(double)640/480,1,1000);
au début de mon code.
Merci d'avance! : S