Initiation à OpenGL – sept 2004 Rémy Bulot
II. La librairie GLUT
Plan :
1. Structure d’une application GLUT
2. Initialisation d’une session GLUT
3. La boucle de traitement des événements
4. Gestion des fenêtres
5. Gestion de menus
6. Inscription des fonctions de rappel
7. Quelques variables d’état de GLUT
8. Rendu des polices de caractères
OpenGL a été conçu pour être indépendant du gestionnaire de fenêtres qui est intimement lié au
système d’exploitation. Il existe toutefois un système de fenêtrage « élémentaire » qui permet de
développer des applications graphiques dans un cadre simple tout en garantissant une très bonne
portabilité sur de très nombreuses plate-formes : openGL Utility Toolkit (GLUT).
Les fonctionnalités de cette bibliothèque permettent principalement de :
- créer et gérer plusieurs fenêtres d’affichage,
- gérer les interruptions (click souris, touches clavier, …),
- disposer de menus déroulant,
- connaître la valeur d’un certain nombre de paramètres systèmes,
Quelques fonctions supplémentaires permettent de créer simplement un certain nombre d’objets 3D
(cube, sphère, tore, …).
Cette bibliothèque s’enrichie régulièrement d’outils simples et pratiques (on trouve maintenant sur
les sites OpenGL des boutons, des affichages de répertoires, …) sans devenir un « monstre » dont la
maîtrise demande une longue pratique.
La philosophie générale de ce système de fenêtrage est basée sur la « programmation
événementielle » (ce que l’on pourra regretter …), ce qui impose une structuration assez particulière
de l’application.
1. Structure d’une application GLUT
Une application GLUT lance une session graphique qui ne sera plus contrôlée que par des
interruptions (click souris, touche clavier, …). On trouve dans le « main » les actions suivantes :
- initialisation du fenêtrage,
- désignation de la fonction d’affichage (1) dans la fenêtre courante,
- désignation de la fonction (2) déclenchée par un redimensionnant la fenêtre courante,
- association d’une fonction (3) à chaque type d’interruption,
- la boucle d’événements.
Avec les remarques suivantes :
- Toute opération de tracé est interdite en dehors de la fonction déclarée pour cette tâche (1).
- La boucle d’événement est la dernière action du programme principal et échappe totalement
au contrôle du programmeur. Elle prend la main de façon définitive (jusqu’à la fin
l’application) : elle réactualise régulièrement l’affichage d’une part et capte d’autre part les
interruptions pour déclencher les procédures associées (3).
- C’est le système qui déclenche la fonction d’affichage (1),