| INITIALISATION ET OUVERTURE
 FENÊTRE
 AFFICHAGE TACHE DE FOND MODIFICATIONFENÊTRE
 CLAVIER SOURIS DESSIND'OBJETS
    RETOUR
   Dernière modification15/09/09 06:03:47
 |  | Facilite la programmation
    d'OpenGL aux moyen d'un jeu de fonctions d'interfaçage vis à vis du système
    d'exploitation de l'ordinateur (Interface graphique). Initialisation et ouverture
    dune fenêtre 
      Définit le type de fenêtre à ouvrir (AUX_RGBA ou AUX_INDEX ; AUX_SINGLE ou AUX_DOUBLE ; AUX_DEPTH, AUX_STENCIL ou AUX_ACCUM). 
      Définit la position et la taille de la fenêtre à ouvrir. 
      Ouvre une fenêtre de titre title avec les paramètres
      prédéfinis. 
      Exemple 
      #include
        <GL/gl.h>#include "glaux.h"
 
 void main(void) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGBA) ;
 auxInitPosition(0,0,500,500) ;
 auxInitWindow("Carré blanc") ;
 glClearColor(0.0F,0.0F,0.0F,0.0F) ;
 glClear(GL_COLOR_BUFFER_BIT) ;
 glColor3f(1.0F,1.0F,1.0F) ;
 glOrtho(-1.0,1.0,-1.0,1.0,
 -1.0,1.0);
 glBegin(GL_POLYGON) ;
 glVertex2f(-0.5F,-0.5F) ;
 glVertex2f(-0.5F,0.5F) ;
 glVertex2f(0.5F,0.5F) ;
 glVertex2f(0.5F,-0.5F) ;
 glEnd() ;
 glFlush() ;
 sleep(10) ;
 }
 
 Affichage principal 
      Définit la fonction à exécuter quand la fenêtre
      d'affichage est créée, déplacée, agrandie, réduite ou réactivée ou si un
      événement intervient entraînant la réalisation d'un rafraîchissement de l'affichage. La fonction display ne doit assurer l'affichage que d'une
      seule image car comme son nom l'indique, auxMainLoop est constituée d'une boucle
      d'affichage englobant les appels à display.La fonction auxMainLoop est bloquante car la boucle d'affichage est infinie. Elle gère
      les événements liés au fonctionnement du programme et exécute les fonctions associées
      par le programmeur à ces événements -> simili programmation événementielle.
 La fonction display ne comporte pas de paramètre. 
      Squelette d'un programme 
      #include
        <GL/gl.h>#include <GL/glu.h>
 #include <stdlib.h>
 #include "aux.h"
 
 void display(void)
 { /* dessin de la scène */
 }
 
 void myinit(void)
 { /* initialisation du programme */
 }
 
 int main(int argc,char** argv) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGB);
 auxInitPosition(0,0,500,500);
 auxInitWindow(argv[0]);
 myinit();
 auxMainLoop(display);
 }
 
      Exemple Processus en tâche de fond 
      Définit la fonction à exécuter s'il n'y a pas
      d'événement en attente et donc que l'application, n'ayant rien à réaliser, est
      disponible pour la réalisation de tâches non prioritaire -> exécution d'actions en
      tâche de fond. Cette fonction est fréquemment utilisée pour programmer
      des animations. Elle est généralement dédiée à la modification de
      variables globales employées dans la fonction display et ne contient donc
      habituellement pas d'appel de fonction OpenGL. La fonction idle ne comporte pas de paramètre. 
      Squelette 
      #include
        <GL/gl.h>#include <GL/glu.h>
 #include <stdlib.h>
 #include "aux.h"
 
 void display(void)
 { /* dessin de la scène */
 }
 
 void myinit(void)
 { /* initialisation du programme */
 }
 
 void idle(void)
 { /* Tâche de fond */
 }
 
 int main(int argc,char** argv) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGB);
 auxInitPosition(0,0,500,500);
 auxInitWindow(argv[0]);
 myinit();
 auxIdleFunc(idle);
 auxMainLoop(display);
 }
 
      Exemple Gestion des événements fenêtre,
    clavier et souris 
      Définit la fonction à réaliser avant le
      rafraîchissement dune fenêtre dont la taille est modifiée. Cette fonction est habituellement employée (1) pour
      signifier la zone de la fenêtre dans laquelle l'image est affichée, (2) pour définir le
      mode de représentation (projection parallèle ou en perspective) et ses paramètres, (3)
      pour amorcer le dessin de la scène. La fonction reshape comporte deux paramètres entiers qui
      autorisent la récupération de la nouvelle dimension de la fenêtre d'affichage. 
      Squelette 
      #include
        <GL/gl.h>#include <GL/glu.h>
 #include <stdlib.h>
 #include "aux.h"
 
 void display(void)
 { /* dessin de la scène */
 }
 
 void myinit(void)
 { /* initialisation du programme */
 }
 
 void myReshape(int w, int h)
 { /* opérations de rafraîchissement */
 }
 
 int main(int argc,char** argv) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGB);
 auxInitPosition(0,0,500,500);
 auxInitWindow(argv[0]);
 myinit();
 auxReshapeFunc(myReshape);
 auxMainLoop(display);
 }
 
      Exemple 
      Définit la fonction à exécuter quand une touche du
      clavier est appuyée.key peut prendre les valeurs AUX_A à AUX_Z, AUX_a à AUX_z,
      AUX_0 à AUX_9, AUX_LEFT, AUX_RIGHT,
      AUX_UP, AUX_DOWN, AUX_ESCAPE, AUX_SPACE, AUX_RETURN.
 La fonction key ne comporte pas de paramètre. 
      Squelette 
      #include
        <GL/gl.h>#include <GL/glu.h>
 #include <stdlib.h>
 #include "aux.h"
 
 void display(void)
 { /* dessin de la scène */
 }
 
 void myinit(void)
 { /* initialisation du programme */
 }
 
 void myReshape(int w, int h)
 { /* opérations de rafraîchissement */
 }
 
 void keyA(void)
 { /* opérations exécutées
 lors de la frappe d'un A*/
 }
 
 void keyB(void)
 { /* opérations exécutées
 lors de la frappe d'un B*/
 }
 
 int main(int argc,char** argv) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGB);
 auxInitPosition(0,0,500,500);
 auxInitWindow(argv[0]);
 myinit();
 auxKeyFunc(AUX_A,keyA);
 auxKeyFunc(AUX_B,keyB);
 auxReshapeFunc(myReshape);
 auxMainLoop(display);
 }
 
      Exemple 
      Définit la liaison entre l'utilisation de la souris et des
      fonctions -> fonctions à exécuter quand la souris est manipulée sur la fenêtre
      d'affichage. button: AUX_LEFTBUTTON, AUX_MIDDLEBUTTON ou AUX_RIGHTBUTTON 
      mode: AUX_MOUSEUP ou AUX_MOUSEDOWN La fonction mouse comporte un seul paramètre de type
      pointeur sur AUX_EVENTREC permettant de
      récupérer les informations lièes à la souris. 
      Squelette 
      #include
        <GL/gl.h>#include <GL/glu.h>
 #include <stdlib.h>
 #include "aux.h"
 
 void display(void)
 { /* dessin de la scène */
 }
 
 void myinit(void)
 { /* initialisation du programme */
 }
 
 void myReshape(int w, int h)
 { /* opérations de rafraîchissement */
 }
 
 void mouse(AUX_EVENTREC *event) {
 GLint x,y ;
 x = event->data[AUX_MOUSEX] ;
 y = event->data[AUX_MOUSEY] ;
 ...
 }
 
 int main(int argc,char** argv) {
 auxInitDisplayMode(AUX_SINGLE|
 AUX_RGB);
 auxInitPosition(0,0,500,500);
 auxInitWindow(argv[0]);
 myinit();
 auxMouseFunc(AUX_LEFTBUTTON,
 AUX_MOUSEUP,mouse);
 auxReshapeFunc(myReshape);
 auxMainLoop(display);
 }
 
      Exemple Dessin dobjets 3D en fil de
    fer ou en volumique 
      void auxWireObjet();void auxSolidObjet();   
      
        | Objet |  
        | Sphère Rayon
 | auxWireSphere(double r); auxSolidSphere(double
        r); |  
        | Cube Coté
 | auxWireCube(double c); auxSolidCube(double
        c); |  
        | Tore Rayon intérieur
 Rayon extérieur
 | auxWireTorus(double rint,double rext);
 auxSolidTorus(double
        rint,double
        rext);
 |  
        | Cylindre Rayon
 Hauteur
 | auxWireCylinder(double r,double h);
 auxSolidCylinder(double
        r,double h);
 |  
        | Cône Rayon
 Hauteur
 | auxWireCone(double r,double h);
 auxSolidCone(double
        r,double h);
 |  
        | Boite Largeur
 Hauteur
 Profondeur
 | auxWireBox(double l,double h,
 double p);
 auxSolidBox(double l,double h,
 double p);
 |  
        | Tétraèdre Rayon
 4 faces | auxWireTetrahedron(double r); auxSolidTetrahedron(double
        r); |  
        | Octaèdre Rayon
 8 faces | auxWireOctahedron(double r); auxSolidOctahedron(double
        r); |  
        | Icosaèdre Rayon
 12 faces | auxWireIcosahedron(double r); auxSolidIcosahedron(double
        r); |  
        | Dodécaèdre Rayon
 20 faces | auxWireDodecahedron(double r); auxSolidDodecahedron(double
        r); |  
        | Teapot Rayon
 | auxWireTeapot(double s); auxSolidTeapot(double
        s); |   
   
   
   
   
 
 Programme
    de visualisation de ces objets Les objets sont facettisés. |