- Opengl utility toolkit
-
OpenGL utility toolkit
GLUT (OpenGL Utility Toolkit) est une bibliothèque utilitaire dont les droits d'auteur sont détenus par Mark J. Kilgard, offrant un jeu de routines pour la gestion des fenêtres OpenGL et les interactions avec le système d'exploitation (gestion clavier, souris, etc.) indépendamment de celui-ci et du gestionnaire de fenêtres. Elle est essentiellement utilisée pour la création de programmes de démonstrations.
Sommaire
Présentation
La bibliothèque GLUT a été écrite par Mark J. Kilgard, auteur de OpenGL Programming for the X Window System et de The CG Tutorial: The Definitive Guide to Programmable Real-Time Graphics, lorsqu'il travaillait pour Silicon Graphics.
GLUT a été écrite dans le but de produire du code portable entre les différents systèmes d'exploitations et à des fins pédagogiques. Sa simplicité permet de ne pas se préoccuper de la partie système, relativement complexe, et de se concentrer sur le fond du programme OpenGL lui-même. La création d'un programme avec GLUT ne prend que quelques lignes de code. Par ailleurs, elle respecte les conventions et la syntaxe d'OpenGL ; les noms de fonction commencent par le préfixe « glut » et les macros par « GLUT » (OpenGL utilise les préfixes « gl » et « GL »).
Outre l'encapsulation des fonctions de base d'un gestionnaire de fenêtre, GLUT propose des routines pour le dessin de quelques objets simples à trois dimensions comme la sphère, le cube, le cône, le tore ou encore la fameuse théière de Newell.
La bibliothèque GLUT n'est désormais plus en développement et s'est arrêtée à la version 3.7 en mai 1998. Les bibliothèques Open Source freeglut et OpenGLUT (qui dérive de freeglut) remplacent aujourd'hui GLUT. Elles réimplémentent l'API GLUT et y apportent quelques évolutions. La création de ces bibliothèques alternatives est due au flou concernant la licence de GLUT, qui d'après certains ne permettrait pas la redistribution de code modifié[1].
Exemple
Voici un exemple de programme utilisant GLUT et OpenGL (compatible avec freeglut et OpenGLUT). Le résultat est une simple fenêtre avec un triangle multicolore au centre.
#include <GL/glut.h> void reshape (int w, int h) { if (h == 0) h = 1; glViewport (0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (45.0, (GLfloat)w/(GLfloat)h, 0.1, 1000.0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glutPostRedisplay (); } void display () { /* efface les tampons de couleur et de profondeur ; réinitialise la matrice de modélisation-visualisation */ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(0, 0, 0, 0); glLoadIdentity (); /* dessine un triangle dont les couleurs rouge, vert et bleu sont attribuées aux trois sommets */ glTranslatef (0.0, 0.0, -5.0); glBegin (GL_TRIANGLES); glColor3f (1.0f, 0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 0.0f); glColor3f (0.0f, 1.0f, 0.0f); glVertex3f (1.0f, -1.0f, 0.0f); glColor3f (0.0f, 0.0f, 1.0f); glVertex3f (0.0f, 1.0f, 0.0f); glEnd (); glFlush(); } int main (int argc, char *argv[]) { /* initialisation de GLUT */ glutInit (&argc, argv); /* création d'une fenêtre OpenGL RVBA avec en simple mémoire tampon avec un tampon de profondeur */ glutInitDisplayMode (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); glutInitWindowSize (350, 300); glutCreateWindow ("Une fenêtre OpenGL avec GLUT"); /* initialisation des fonctions callback appelées par glut pour respectivement le redimensionnement de la fenêtre et le rendu de la scène */ glutReshapeFunc (reshape); glutDisplayFunc (display); /* entre dans la boucle d'évènements */ glutMainLoop (); return 0; }
Notes et références
- ↑ Voir page de discussion de l'article concernant les problèmes de licence de GLUT.
Voir aussi
Liens internes
Liens externes
- (en) GLUT 3 specification
- (en) The GLUT Programming Interface API Version 3
- (en) freeglut
- (en) OpenGLUT
- Portail de l’informatique
Catégorie : Bibliothèque logicielle graphique
Wikimedia Foundation. 2010.