OpenGL est une API pour le graphisme de niveau intermédiaire développée par SGI à partir de leur interface précédente Iris GL. OpenGL est devenu un standard il y a de ça quelques années. Il est fourni et maintenu par l'ARB ( Architectural Revision Board ), une organisation à laquelle appartiennent par exemple SGI, IBM, DEC et Microsoft.
OpenGL fournit tout un ensemble de fonctions 2D et 3D pour le rendu de triangles et de polygones sur du matériel accélérateur muni d'une architecture en pipeline. De façon plus générale, OpenGL forme un ensemble d'outils puissant pour le graphisme accéléré sur ordinateur.
Le site officiel d'OpenGL, administré par les membres de l'ARB : www.opengl.org,
On préférera peut être la passerelle vers OpenGL de Mark Kilgard : reality.sgi.com/mjk_asd/opengl-links.html. Ce site contient des pointeurs vers des livres, des pages de manuel en ligne, GLUT, GLE, Mesa, des portages sous divers OS ainsi que de nombreuses démos et des outils.
Si le développement de jeu utilisant OpenGL vous tente, il
existe une liste de diffusion OpenGL-GameDev-L@fatcity.com
accessible via Listserv@fatcity.com
. Il s'agit
d'une liste à contenu fortement technique et dont le débit est
très élevé. Vous recourerez sûrement à procmail
pour
ventiler la centaine de messages quotidiens qui en provient.
Pour réduire le besoin en bande passante, servez vous de la
commande SET OpenGL-GameDev-L DIGEST
. Cette liste
est inappropriée si vous cherchez des documents d'introduction.
L'archivage est assuré par le logiciel ListServ. Les commandes
INDEX OpenGL-GameDev-L
et
GET OpenGL-GameDev-L "filename"
permettent de se
faire un idée avant de souscrire.
Non. Glide est une API propriétaire de 3Dfx dont plusieurs fonctions sont spécifiques aux composants Voodoo Graphics (tm) et Voodoo Rush (tm). Une librairie OpenGL 3Dfx est en cours de réalisation ( voyez plus bas ). Diverses fonctionnalités Glide nécessiteraient des extensions à OpenGL, certaines étant déjà disponibles par ailleurs ( les textures palettisées par exemple ).
La librairie Mesa de Brian Paul et le pilote Mesa Voodoo de David Bucciarelli sont ce qui se rapproche le plus d'une version Linux d'OpenGL accélérée grâce à des périphériques particuliers ( voyez plus bas ).
Les sites web de 3Dfx et de Quantum3D annoncent une version d'OpenGL pour Voodoo Graphics (tm) en fin d'année 1997. Le pilote est actuellement en bêta et seuls peuvent y accéder les développeurs ayant souscrit à un accord de bêta-test spécifique.
Aucun portage vers Linux n'a encore été annoncé pour l'instant.
Je n'ai entendu parler de rien de tel. La dernière fois que je m'y suis intéressé, ni MetroX, ni XInside ne proposaient OpenGL.
Mesa constitue une réalisation libre de l'API OpenGL, dont l'auteur est Brian Paul, et à laquelle de nombreuses personnes ont contribué. Ses performances sont respectables et bien qu'elle ne soit pas certifiée de façon officielle, sa conformité aux spécifications de l'ARB la rend, sinon parfaitement compatible avec OpenGL, du moins plus complète que bon nombre de produits commerciaux.
La dernière version de Mesa 2.6 fonctionne avec Linux Glide 2.4. Bien que ce soit le cas depuis des versions plus anciennes, ce pilote est encore en développement. Attendez vous donc à des bugs et des performances éloignées de l'optimum. Les progrès sont cependant permanents et les correctifs aux bugs viennent souvent assez vite.
Il vous faudra l'archive de la bibliothèque Mesa : iris.ssec.wisc.edu FTP site. Il est également conseillé de s'abonner à la liste de diffusion, notamment pour débusquer les bugs ou les limitations du pilote. Vérifiez que vous disposez bien de la version la plus récente. Mesa 3.0 est en préparation.
Mesa est disponible pour Linux et Win32. Une application qui s'appuie sur Mesa ne devrait être spécifique qu'en ce qui concerne le code lié au système. Typiquement il s'agira de passer d'X à Windows ou de WGL à GLX. Si vous avez recours à GLUT ou à Qt, vous devriez éviter toutes les spécificités dues au système pour une grande majorité d'applications. Il n'y a que quelques domaines particuliers, comme l'échantillonage des positions successives de la souris, qui ne sont pas couverts par les GUI portables dont on dispose.
Mesa/Glide est également disponible pour DOS. Il s'agit d'un portage 32 bits maintenu par Charlie Wallace qui assure la synchronisation avec Mesa. Pour la dernière version, reportez vous à : www.geocities.com/~charlie_x/.
La page web de Mesa : www.ssec.wisc.edu/~brianp/Mesa.html. L'archive de la liste de distribution Mesa : www.iqm.unicamp.br/mesa/. Cette liste n'est certes pas dédiée à 3Dfx ni à Glide mais il s'agit d'un bon point de départ si le recours au matériel 3Dfx pour accélérer Mesa vous intéresse.
Pour les informations les plus à jour sur le pilote Mesa Voodoo de David Bucciarelli tech.hmw@plus.it, reportez vous à la page web : www-hmw.caribel.pisa.it/fxmesa/.
Pas encore en ce qui concerne Mesa 2.6 mais la question est
à l'étude. Vous disposerez probablement d'une extension OpenGL
EXT_multitexture
sous Mesa une fois qu'elle sera achevée.
Il n'y a pas de spécifications figées pour le texturage multiple dans
OpenGL. La version 1.2 d'OpenGL est censée préciser les choses.
Les prochaines versions de Mesa incluront peut être une mise en
oeuvre spécifique au pilote Glide mais ceci ne sera pas une
priorité tant qu'il ne se trouvera que quelques cartes Obsidian
Quantum3D à intégrer plusieurs TMU. La banalisation des cartes
Voodoo 2 (tm) changera certainement la donne.
Linux Glide gère cette opération mais ce n'est pas le cas de Mesa ( au moins jusqu'à la version 2.6 ). Le développement est en cours.
La dernière version de Mesa incorpore une fonctionnalité
expérimentale pour XFree86 sous Linux. L'émulation GLX
de Mesa copie le dernier tampon de mémoire vidéo mis à jour
depuis la carte Voodoo Graphics (tm) vers la mémoire vidéo pour chaque
appel à la fonction glXSwapBuffers
. Mesa offre
également cette possibilité sous Windows.
Il en résulte bien sûr une charge assez importante au niveau du bus PCI, et ce d'autant plus que le mécanisme utilise l'extension SHM du MIT à X11 et non pas le DGA XFree86 lors des accès à la mémoire vidéo. On pourrait théoriquement employer la même technique avec SVGA par exemple. Le calcul du rendu limité à une fenêtre peut donc tirer pleinement parti de la présence d'une carte Voodoo Graphics (tm). De plus, on évite l'intermédiation VGA qui dégrade le signal vidéo ( les moniteurs haut de gamme tels le EIZO F784-T l'illustrent très bien ).
Notez que cette fonctionnalité expérimentale n'a RIEN à voir avec le Voodoo Rush (tm). Elle ne concerne que les cartes Voodoo Rush (tm), un point c'est tout. Enfin, il est nécessaire d'utiliser une version modifiée de GLUT puisque la gestion des évènements et la cohabitation avec le gestionnaire de fenêtres sont alors du ressort de l'application ( et non du pilote ! ).
Vérifiez le positionnement des variables suivantes :
export SST_VGA_PASS=1 # to stop video signal switching export SST_NOSHUTDOWN=1 # to stop video signal switching export MESA_GLX_FX="window" # to initiate Mesa window mode
Pour clore le sujet, on remarquera que la bibliothèque libMesaGL.a ( ou celle en .so ) est susceptible de contenir les fonctions d'interfaçage pour différents clients. Ainsi les fonctions GLX, OSMesa et fxMesa ( voir même SVGAMesa ) peuvent être compilées au sein d'une unique bibliothèque libMesaGL.a. Un programme client attentif saura les appeler simultanément.
La distribution GLUT de Mark Kilgard constitue une excellente ressource pour ce qui est des applications type et des utilitaires. Vous la trouverez à : reality.sgi.com/mjk_asd/glut3/. La dernière version est GLUT 3.6 et les discussions ont commencé pour GLUT 3.7 ( alias GameGLUT ). Mark Kilgard ayant récemment quitté SGI, il est possible que l'archive se déplace en cours d'année; pour l'instant elle reste en place sur le site de SGI.
Il existe une liste de diffusion spécifique à GLUT :
glut@perp.com
. Envoyez à
majordomo@perp.com
le message suivant :
help info glut subscribe glut end
GLUT gérant le dédoublement des tampons de mémoire, le fenêtrage, les évènements et d'autres opérations fortement liées au matériel et au système d'exploitation, la cohabitation de GLUT avec Voodoo Graphics (tm) nécessite un support qui est encore en cours de développement au niveau de GLX pour Mesa. La plupart des situations sont déjà prises en compte.