Page suivantePage précédenteTable des matières

9. FAQ: OpenGL/Mesa ?

9.1 Qu'est ce qu'OpenGL ?

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.

9.2 Où trouver davantage d'informations sur OpenGL ?

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.

9.3 IGlide met-il en oeuvre OpenGL ?

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 ).

9.4 Existe-t-il un pilote OpenGL pour 3Dfx ?

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.

9.5 Existe-t-il une version commerciale d'OpenGL pour Linux et 3Dfx ?

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.

9.6 Qu'est-ce que Mesa ?

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.

9.7 Mesa fonctionne-t-elle avec 3Dfx ?

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.

9.8 Qu'en est-il de la portabilité de Mesa pour Glide?

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/.

9.9 Où trouver des informations sur Mesa ?

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.

9.10 Où trouver des informations sur Mesa Voodoo ?

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/.

9.11 Mesa gère-t-il le texturage multiple ?

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.

9.12 Mesa supporte-t-elle le filtrage tri-linéaire en une seule étape ?

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.

9.13 Qu'est-ce que le hack Mesa ( "Window Hack" ) ?

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

Si vous oubliez une des variables SST, votre carte VGA sera désactivée et l'affichage disparaîtra. X restera cependant toujours actif et vous risquez d'éprouver certaines difficultés pour revenir en aveugle à une situation normale.

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.

9.14 Qu'en est-il de GLUT ?

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.


Page suivantePage précédenteTable des matières