La programmation avec OpenGL sous Windows
Date de publication : 11 janvier 2010
I. Introduction
I-A. OpenGL, qu'est-ce donc ?
I-A-1. OpenGL
I-A-2. GLU
I-A-3. GLUT
I-B. A qui s'adresse ce document ?
I-C. Organisation de ce document
I. Introduction
I-A. OpenGL, qu'est-ce donc ?
I-A-1. OpenGL
OpenGL est une interface de programmation vers le matériel graphique, indépendante du
matériel utilisé. En fait c'est une spécification ouverte d'une API 3D que chacun est donc libre
d'implémenter. Cela lui a permis de bénéficier facilement de l'accélération matérielle de la part
des constructeurs de cartes graphiques.
En tant qu'API de programmation 3D, OpenGL trouve son application dans le développement de
logiciels professionnels de synthèse d'images (3Ds max, Blender, Maya, etc.) et de CAO
(AutoCAD, etc.), de jeux vidéos, d'applications scientifiques (modélisation mathématique,
médecine, recherches, etc.), etc. OpenGL est totalement portable, mais le prix à payer est
qu'aucune commande dépendante de l'OS (système de fenêtrage, affichage du rendu,
interaction avec l'utilisateur, etc.) n'est incluse et que seules les commandes graphiques de
bas niveau existent. A cet effet, on a donc le choix entre :
- Utiliser les APIs du système d'exploitation.
- Utiliser une bibliothèque tierce qui s'occupera notamment du fenêtrage et tout le reste. Citons par exemple GLUT (OpenGL Utility Toolkit Library), GLAUX
(OpenGL Auxiliary Library – pour le système d'exploitation Windows uniquement),
SDL (Simple DirectMedia Library), GTK (GIMP ToolKit), etc.
Pour utiliser OpenGL, vous devez inclure <gl/gl.h> et, sous Windows, vous lier avec opengl32.lib
(opengl32.lib est la bibliothèque d'importation de opengl32.dll (ce fichier se trouve dans le répertoire système)).
I-A-2. GLU
OpenGL étant une API de très bas niveau comme vous allez le constater, les développeurs utilisent
souvent conjointement d'autres wrappers proposant des commandes de plus haut niveau. GLU
(The OpenGL Utility Library) est une bibliothèque entièrement basée sur OpenGL et largement utilisée de par le monde.
Actuellement, il n'existe pas d'implémentation d'OpenGL qui ne soit pas accompagnée de GLU.
Pour utiliser la GLU, vous devez inclure <gl/glu.h> et, sous Windows, vous lier avec glu32.lib
(glu32.lib est la bibliothèque d'importation de glu32.dll (ce fichier se trouve dans le répertoire système)). Si
vous incluez <gl/glu.h>, il n'est plus besoin d'inclure <gl/gl.h> vous-même, puisque ce sera déjà fait.
I-A-3. GLUT
GLUT est aussi à peu près comme la GLU, sauf qu'elle fait beaucoup plus. En effet, en plus de fournir des fonctions de dessin
de très haut niveau (entièrement basées sur OpenGL), elle fournit également des fonctions de création et de gestion de fenêtres (basées
sur les APIs du système). Nous n'allons pas utiliser GLUT pour créer nos fenêtres parce que nous savons le faire en utilisant directement
les APIs. Par contre, il faut vraiment avoir de bonnes raisons pour se priver des fonctions de dessin de haut niveau proposées par cette
bibliothèque. Dans ce tutoriel, nous allons donc également utiliser la GLUT.
Contrairement à la GLU, c'est rare qu'une implémentation d'OpenGL soit directement accompagnée de la GLUT. Vous trouverez l'implémentation
de GLUT pour Windows (glut.h, glut32.lib et glut32.dll) sur
ce site. En fait, vous n'avez plus besoin
de vous y rendre vous-même car vous trouverez également GLUT pour Windows dans la même archive que celle de la version hors-ligne de
ce document.
Pour utiliser la GLUT, vous devez inclure
<gl/glut.h> et, sous Windows, vous lier avec
glut32.lib
(glut32.lib est la bibliothèque d'importation de glut32.dll (pour simplifier vos développements, copiez ce fichier dans le répertoire système)).
Si vous incluez <gl/glut.h>, il n'est plus besoin d'inclure <gl/gl.h> ni <gl/glu.h> vous-même, puisque ce sera déjà fait.
I-B. A qui s'adresse ce document ?
Ce document s'adresse en premier lieu aux programmeurs Windows qui désirent s'initier à OpenGL, bien que la plus grande partie du document est écrite
de manière à ne viser aucune plateforme particulière, OpenGL étant, il est bien de le répéter, une API totalement indépendante
de tout matériel et de tout logiciel. Alors pourquoi avoir mis en avant Windows ? La raison est toute simple :
Dans les paragraphes précédents, nous avons vu qu'OpenGL n'intégrait aucune commande liée au système de fenêtrage. Pour programmer avec OpenGL,
nous avons donc le choix entre gérer les fenêtres avec directement les APIs de l'OS et recourir à une bibliothèque encaspulant la complexité de ces APIs.
Dans ce tutoriel, c'est la première solution que nous allons adopter car c'est un très bon moyen de bien comprendre OpenGL.
I-C. Organisation de ce document
La partie II (ainsi qu'une certaine part de la partie III) s'adresse exclusivement à la présentation des fonctionnalités disponibles sous Windows le permettant de bien supporter OpenGL. Seuls les trois
premiers paragraphes sont indispensables pour la compréhension de la suite. De plus, si vous maîtrisez déjà cette partie, ou si vous n'en avez tout simplement pas besoin,
alors vous pouvez directement aller à la partie III.


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ©
2010 Melem. Aucune reproduction, même partielle, ne peut être
faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.