Programmation OpenGL

OpenGL (http://www.opengl.org) est une interface de programmation standard pour le graphisme 2D et 3D, adapté qui plus est pour être traité directement au niveau matériel. Du fait de leur aspect bas niveau, les primitives proposées par OpenGL nécessitent en général des fonctions de plus haut niveau, pour faciliter le rendu et la gestion d'objets complexes, ainsi que leur interaction avec leur environnement. Il faut bien comprendre qu'OpenGL n'est qu'une couche de rendu.

Pour effectuer des opérations plus complexes telles que des ombres portées, de l'animation par armature, la détection de collision de polygones, la gestion des lois de la physique (gravité, choc mous, particules, etc.), il vaut mieux utiliser des bibliothèques de plus haut niveaux, telles que :

  • GLU (OpenGL Utility library) : Cette bibliothèque est en général incluse d'office avec toute implémentation d'OpenGL. Elle permet de faire un rendu d'objets plus complexes à base de surfaces de béziers ou de splines bi-cubiques (NURBS - Non Uniform Rational Bicubic-Spline), ainsi que le découpage de polygones complexes en polygones convexes (des triangles en général, seul type de polygone pris en charge directement par OpenGL). Cette bibliothèque n'utilise en fait que des primitives OpenGL, c'est pourquoi ces fonctions ont été mises dans une bibliothèque à part.
  • GLUT (OpenGL Utility Toolkit library) : Cette bibliothèque permet de s'affranchir des spécificités du système d'exploitation pour exploiter OpenGL, notamment l'ouverture de fenêtre graphique et de la gestion des évènements (souris, clavier, redimensionnement, rafraîchissement, etc.). Elle propose aussi quelques fonctions pour créer des objets relativement courants (notamment lorsqu'on débute !), tels que des sphères, des tores, des carrés et la fameuse théière.

Reste que même avec ces trois bibliothèques de fonctions, il y a de quoi rester sur sa faim. Il existe de nombreux moteurs 3D, qui prennent en charge la gestion d'un environnement 3D et en leur appliquant des fonctions de haut niveau (telle l'insertion d'objets issus de modeleur 3D, la gestion des ombres portées, de la physique élémentaire, etc.). Il en existe beaucoup, aussi bien commerciaux, que libres, Internet et ses moteurs de recherche sauront vous montrer une liste exhaustive.

Installation de l'environnement de programmation

modifier

Unix et GNU/Linux

modifier

La plupart des distributions ont les bibliothèques OpenGL installées par défaut, cependant vérifiez que vous avez les bons paquetages.

  • libxi-dev : bibliothèque de développement pour X
  • libxmu-dev : bibliothèque de développement pour X
  • soit libglut avec libglut-dev
  • soit freeglut avec freeglut-dev

Par exemple pour une distribution compatible Debian :

sudo apt-get install libglut3-dev libxi-dev libxmu-dev

MS-Windows

modifier

Tout dépend de votre Environnement de Développement Intégré :

  • MS-Visual C++ possède les bibliothèques installées par défaut.
  • Avec Dev-C++ il vous faudra télécharger le pack de développement glut.x.x.x+.DevPak [1].

OpenGL est installé par défaut sous Mac ainsi que le gestionnaire de fenêtre GLUT mais il est disponible depuis le site apple.com pour les développeurs [2].