probleme de base pour l initialisation des vues en opengl
Bonjour,
j'ai un problème sans doute basique mais que je n'arrive pas à résoudre.
je veux simplement afficher un cube de d'arrête 1 au centre de mon image.
Quand je me contente des réglages par défaut celui ci apparait, mais lorsque j'essaie de contrôler tout ça, plus rien n'apparait.
voici les lignes de mon code (je fais des tests avec la projection la plus basique, la projection orthogonale) que j'ai placé dans ma fonction main:
Code:
1 2 3 4 5 6 7 8 9 10
|
/* Initialisation d'OpenGL */
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(1.0,1.0,1.0);
glPointSize(2.0);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(2,2,2,2,4,-4);
glMatrixMode(GL_MODELVIEW); |
puis dans ma fonction affichage() (celle appelée par glutDisplayFunc())
j'ai les lignes suivantes:
Code:
1 2 3 4
|
glLoadIdentity();
gluLookAt(0,0,5,0,0,0,0,1,0);
/*vient ensuite le tracé de mon cube*/ |
Chose étrange lorsque je mets gluLookAt(0,0,1,0,0,0,0,1,0);
mon cube apparait (en revenche lorsque je le fais pivoter cette extrémité disparaissent)
De plus lorsque mon cube s'affiche, quelque soit les modifications que j'apporte a glOrtho rien ne change.
Si quelqu'un pouvait m'expliquer ce qui se passe je suis perdu.
Ho et une dernière question au passage, le repère x,y,z est bien sencé être orthogonal et pourtant quand j affiche un point en x,y,z celui ci apparait en x,y,-z (si on cosidère que le repère est orthogonal)
J'espère avoir été clair et je vous remercie par avance. ++
probleme plus ou moins resolu
Rebonjour,
bon j'ai plus ou moins résolu mon problème.
Tout d'abord, j'avais mal utilisé la fonction glOrtho. En effet par rapport au site sur lequel je m'étais renseigné j'avais mal interprété les arguments. Il faut en fait donner la distance de chaque bord par rapport à l'axe central de la caméra. Donc avec glOrtho(2,2... ça signifiait que le bord de gauche et de droite était confondu donc la fonction était ignorée.
Par contre pour le problème de repère indirect, je n'ai pas vraiment compris d'ou venait le problème. j'ai juste remarqué quand changeant:
glRotatef(-angley,1.0,0.0,0.0);
glRotatef(-anglex,0.0,1.0,0.0);
par
glRotatef(angley,1.0,0.0,0.0);
glRotatef(anglex,0.0,1.0,0.0);
le repère devenait direct... anglex et angley sont des floatants mis en variables globales et leur valeur change en fait par action de la souris sur l'image afin de pouvoir faire pivoter ma figure. Donc si quelqu'un a l'explication de ce problème, ça m'interresse. (note: j'ai pensé à un moment qu'une rotation d'un angle -0.0 posait problème mais même en rajoutant
glRotatef(-angley+0.1,1.0,0.0,0.0) ça ne changeait rien)