Présentation d'OpenGL
par Xavier Michelon
A  r  t  i  c  l  e  s 

Introduction
Fonctionnalités
OpenGL sous Linux
Glut
Conclusion
Retour Index
OpenGL sous Linux

Nous avons vu précédemment qu'OpenGL à été porté sur toutes les grandes plates-formes actuelles, et bien évidemment, linux en fait partie. Il existe plusieurs implémentations d'OpenGL sous linux, certaines sont libres, d'autres sont commerciales. Celle à laquelle nous allons nous intéresser se nomme Mesa, est libre, et le code source est disponible sur le site http://www.mesa3d.org. Bien que Mesa ne soit pas une implémentation officielle d'OpenGL, dans le sens ou l'auteur de Mesa n'a pas payé la licence OpenGL à SGI, cette API reste une très bonne alternative à un OpenGL 'Officiel', et en reprend les noms de commandes avec l'autorisation de Silicon Graphics. Seul quelques rares fonction de la version 1.2 ne sont pas disponibles dans Mesa.

Il existe une ombre qui plane sur OpenGL sous linux. Elle concerne l'accélération matérielle. En effet, nous avons vu précédemment que bien souvent, dans une application OpenGL, la scène 3D doit être recalculée un grand nombre de fois par seconde. Or la 3D implique de nombreux calculs. Afin d'accélérer les temps de calcul, on fait souvent appel à un accélération matérielle. Sur les ordinateurs actuels, cette accélération matérielle est prise en charge par les cartes graphique (c'est pourquoi on les affuble souvent du terme de 'Cartes 3D'). Les principales opérations de calcul sont prises en charges par des circuits intégrés situés sur la carte, qui dispose également d'espaces de stockage dédiés au calcul et au stockages des données nécessaires à la création de l'image. Ainsi, on 'soulage' le processeur de la machine. Ce dernier n'a plus qu'a transmettre les informations à la carte 3D qui s'occupe de générer l'image et de l'afficher. Autre avantage, le calcul se fait bien plus rapidement sur la carte ('en hard'), que par le processeur ('en soft'), puisque la carte est architecturée spécifiquement pour ces calculs.

Pour pouvoir bénéficier de l'accélération matérielle, il faut disposer d'un implémentation OpenGL qui prenne en compte la présence de la carte. Chaque carte étant différente, c'est le constructeur de la carte qui doit se charger d'assurer la bonne accélération matérielle. Ceci se fait par ce qu'on appelle des pilotes (drivers en anglais).

Sous environnement Windows tous se passe bien. Chaque constructeur fournit avec la carte les pilotes permettant de bénéficier de l'accélération matérielle. Mais sous linux, rares sont ceux qui le font. Bien sur, de nombreuses âmes généreuses seraient prêtes à écrire elles même ces pilotes pour linux, mais pour cela, il leur faut disposer des spécifications techniques de la cartes, ceux que les constructeurs rechignent a faire, de peur de voir leur technologie pillée.

Cependant, il existe quelque projets tentant de fournir des drivers pour certaines cartes. Ainsi, les possesseurs de carte 3DFX pourront trouver leur bonheur sur le site
http://www-hmw.caribel.pisa.it/fxmesa/index.shtml

Les posesseurs de carte Matrox G200 et G400, ATI RagePro, S3Virge et Savage3D, Intel i810, Sis 6326 se référeront au projet Utah-GLX :
http://utah-glx.sourceforge.net

Félicitons le constructeur NVidia, qui fournit les pilotes linux pour ses cartes graphiques TNT, TNT2, TNT Ultra, GeForce, et Quadro :
http://www.nvidia.com/Products/Drivers.nsf/Linux.html 

Enfin, notons que depuis sa version 4, le serveur X Xfree86 intègre des fonctions d'accélération matérielle qui vont, espérons le, enfin nous faire voir le bout du tunnel.
http://www.xfree86.org