salut tlm, j'ai fais un petit programme de base qui affiche un carré. Jusque là rien de difficile. Je fais un petit truc pour gérer une touche (ici echappe pour quitter le prg), ça fonctionne. Ce que j'aimerais, ce seait le point de vue avec clavier/souris. J'ai essayé via gluLookAt, mais ça n'a pas l'air de fonctionner. Voilà le prog :
[source]
#include <gl/glut.h>
#include <iostream.h>
void reshape(int largeur, int longueur);
void draw();
void gestion_clavier(unsigned char touche, int x, int y);
void gestion_clavier_special(int touche, int x, int y);
void dep_lat_droite(int x);
void mouse_func(int x, int y);
void InitGL();
int fenetre_nom;
int main ( int argc, char *argv[], char *envp[] )
{
glutInit ( &argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(1024,768);
fenetre_nom = glutCreateWindow("test2" );
glutFullScreen();
glutReshapeFunc(reshape);
glutDisplayFunc(draw);
InitGL();
glutMainLoop();
return 0;
}
void reshape(int largeur, int longueur)
{
glViewport(0,0,largeur,longueur);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, float(largeur/longueur), 1, 100);
glMatrixMode(GL_MODELVIEW);
}
void draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutKeyboardFunc(gestion_clavier);
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3i(-1,-1,-1);
glVertex3i(-1,1,-1);
glVertex3i(1,1,-1);
glVertex3i(1,-1,-1);
glColor3f(0,1,0);
glVertex3i(-1,-1,1);
glVertex3i(-1,1,1);
glVertex3i(1,1,1);
glVertex3i(1,-1,1);
glColor3f(0,0,1);
glVertex3i(-1,-1,1);
glVertex3i(-1,-1,-1);
glVertex3i(1,-1,-1);
glVertex3i(1,-1,1);
glColor3f(1,1,0);
glVertex3i(-1,1,1);
glVertex3i(-1,1,-1);
glVertex3i(1,1,-1);
glVertex3i(1,1,1);
glColor3f(1,0,1);
glVertex3i(-1,-1,1);
glVertex3i(-1,-1,-1);
glVertex3i(-1,1,-1);
glVertex3i(-1,1,1);
glColor3f(0,1,1);
glVertex3i(1,-1,1);
glVertex3i(1,-1,-1);
glVertex3i(1,1,-1);
glVertex3i(1,1,1);
glEnd();
glutSwapBuffers();
glutPostRedisplay;
}
void gestion_clavier(unsigned char touche, int x, int y)
{
if (touche == 27)
exit (0);
gluLookAt(10,10,10,x,y,0,0,1,0);
}
void InitGL()
{
glEnable(GL_DEPTH_TEST);
glClear(GL_DEPTH_BUFFER_BIT);
}
[/source]
si j'initialise les valeurs de x et y à 0, il m'affiche le cube, mais le point que je veux regarder ne change pas.
Si je n'initialise pas x et y, l'écran est tout rouge, en fait je pense qu'on est dans le cube et que l'on voit la face arrière.
Quelqu'un a une idée, une @ vers un tutorial expliquant très bien ce genre de truc, ou un bouquin ?
Merci