OpenGL utility toolkit
Un article de Wikipédia, l'encyclopédie libre.
GLUT (OpenGL Utility Toolkit) est une bibliothèque utilitaire à source ouverte 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 |
[modifier] 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].
[modifier] 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); 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 (); } 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; }
[modifier] Notes et références
- ↑ Voir page de discussion de l'article concernant les problèmes de licence de GLUT.
[modifier] Voir aussi
[modifier] Liens internes
[modifier] Liens externes
- (en) GLUT 3 specification
- (en) The GLUT Programming Interface API Version 3
- (en) freeglut
- (en) OpenGLUT
![]() |
Portail de l'informatique – Accédez aux articles de Wikipédia concernant l’informatique. |