Bonjour
Je préviens tout de suite, je commencé à apprendre l'OpenGL depuis seulement quelques minutes (30 minutes).
J'ai lu quelques cours qui se ressemblent tous, avec des exemples de création de fenêtre, traçage de forme géométrique, etc.
Dans mon premier programme, j'ai fait un traçage "au hasard" comme ceci :
Voila, j'ai mis au hasard des valeurs pour le positionnement de chaque point. Ca me donne une figure sans signification apparente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 void Affichage() { float i ; glClearColor(0,0,0,1.0) ; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glColor4f(1.0,1.0,1.0,1.0); for(i=0.0; i<1.0 ; i=i+0.5) { glPointSize(20.0); glColor4f(1.0,1.0,1.0,1.0); glVertex2f(i,i+0.5); glColor4f(0.0,1.0,1.0,1.0); glVertex2f(i,i+0.3); glColor4f(0.0,0.0,1.0,1.0); glVertex2f(i,i+0.2); glColor4f(0.0,0.0,0.7,1.0); glVertex2f(i,i+0.1); } glEnd(); glFlush(); }
Maintenant, pour mieux comprendre comment s'est effectué le traçage, j'ai utilisé des fonctions qui permettent d'afficher uniquement les sommets de la figure ou bien les lignes (sans que les faces soit remplies avec de la couleur).
Ce que je souhaite, c'est ceci :
tant que je n'ai pas appuyé sur Y (par exemple)
afficher la figure avec les faces remplies (figure tracée par défaut)
afficher la figure avec uniquement les contours (lignes)
Donc la figure doit faire un truc du genre clignotement, remplie, vide, remplie, vide , remplie vide.... et ceci tant que je n'ai pas appuyé sur Y.
Ca fait en faite comme de la lumière qu'on allume et qu'on éteind (enfin c'est comme ca que j'imagine la figure si ça marche).
Le truc, c'est que ma fonction ne semble pas fonctionner car j'ai toujours la figure pleine, avec les faces remplies.
Voila ma fonction qui permet la gestion du clavier :
et la fonction Lumiere (je l'ai appelée comme ceci car comme je l'ai dit, c'est supposé clignoter et faire comme de la lumière)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void Clavier(unsigned char touche, int x, int y) { do { Lumiere(); } while(touche !='p'); }
J'ai rajouté un sleep (en commentaire) pour voir si ce n'était pas la vitesse qui faisait que je ne vois pas le changement, mais ca ne donne rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void Lumiere() { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glutPostRedisplay(); /* sleep(1); */ glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glutPostRedisplay(); }
Je dois mal m'y prendre, comme je l'ai dit, je débute depuis très très peu (trop peu).
Merci d'avance , en espérant que vous aillez compris ce que je souhaite faire.
Nas'
Partager