Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 2066

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3. Bibliothèques</title>
<link rel="stylesheet" href="style.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.64.1">
<link rel="home" href="index.html" title="Guide pratique du jeu sous Linux">
<link rel="up" href="index.html" title="Guide pratique du jeu sous Linux">
<link rel="previous" href="ar01s02.html" title="2. Définitions : types de jeux">
<link rel="next" href="ar01s04.html" title="4. XFree86 et vous">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">3. Bibliothèques</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="ar01s02.html">Précédent</a> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="ar01s04.html">Suivant</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" lang="fr">
<div class="titlepage">
<div><div><h2 class="title" style="clear: both">
<a name="id2513054"></a>3. Bibliothèques</h2></div></div>
<div></div>
</div>
<p>Voici différentes bibliothèques consacrées au jeu que l'on peut
    trouver sous Linux.</p>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="glide2"></a>3.1. Glide2</h3></div></div>
<div></div>
</div>
<p>Glide2 est une API et un pilote graphiques de bas niveau qui
      accèdent aux fonctions 3D accélérées par matériel des cartes Voodoo
      I, II et III de 3dfx sous <span class="application">XFree86</span>
      3.x.</p>
<p>Un programme ne peut utiliser les fonctionnalités spéciales
      accélérées matériellement de ces cartes qu'en utilisant la
      bibliothèque Glide2 d'une des deux façons suivantes :</p>
<div class="itemizedlist"><ul type="disc">
<li><p>directement en utilisant Glide2
        (<span class="productname"><span class="foreignphrase"><i class="foreignphrase">Myth II</i></span></span>™,
        <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Descent
        III</i></span></span>™)</p></li>
<li><p>indirectement en utilisant Mesa construit avec un
        dorsal Glide2 pour simuler OpenGL
        (<span class="productname"><span class="foreignphrase"><i class="foreignphrase">Rune</i></span></span>™,
        <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Unreal
        Tournament</i></span></span>™)</p></li>
</ul></div>
<p>3dfx a ouvert les spécifications et le code source à la
      communauté <span class="foreignphrase"><i class="foreignphrase">open source</i></span>. Cela a permis
      à <span class="firstname">Daryll</span> <span class="surname">
      Strauss</span> de porter Glide2 sous Linux,
      autorisant les utilisateurs de <span class="application">XFree86</span> 3.x
      à utiliser les cartes Voodoo I, II et III sous Linux.</p>
<p>Puisque Glide2 accède directement à la carte vidéo, les
      applications Glide2 doivent soit être exécutées par root, soit être
      setuid-root. Une façon d'éviter cela était de créer le module noyau
      3dfx. Ce module (et son fichier de périphérique <tt class="filename">/dev/3dfx</tt>) permet l'accélération
      graphique matérielle Glide2 pour les utilisateurs non-root
      d'applications non-setuid.</p>
<p>Malheureusement, Glide2 n'est pas une solution d'avenir. Elle
      n'est utilisée que pour les cartes Voodoo I, II et III (qui
      deviennent obsolètes), sous <span class="application">XFree86</span> 3.x
      (la majorité utilise <span class="application">XFree86</span> 4.x). Et
      étant donné que 3dfx est maintenant une société défunte, il est
      certain qu'aucun développement n'aura désormais lieu sur Glide2 et
      qu'aucun nouveau jeu ne sera écrit en utilisant Glide2.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="glide3"></a>3.2. Glide3</h3></div></div>
<div></div>
</div>
<p>À la différence de Glide2, Glide3 n'est pas une API utilisée
      pour la programmation de jeux. Elle n'existe que pour gérer le DRI
      pour les cartes Voodoo III, IV et V sous
      <span class="application">XFree86</span> 4.x. Aucun des jeux utilisant
      Glide2 ne fonctionnera avec Glide3. Cela ne devrait pas être
      surprenant dans la mesure où Glide2 et Glide3 prennent en charge des
      cartes vidéo différentes et des versions de
      <span class="application">XFree86</span> différentes. La seule carte vidéo
      pouvant utiliser à la fois Glide2 (sous
      <span class="application">XFree86</span> 3.x) et Glide3 (sous
      <span class="application">XFree86</span> 4.x) est la Voodoo III. On
      rapporte qu'une Voodoo III utilisant Glide2 surpasse une Voodoo III
      utilisant Glide3.</p>
<p>Quand vous utilisez une Voodoo III, IV ou V sous
      <span class="application">XFree86</span> 4.x, vous devez utiliser une
      version de <a href="ar01s03.html#mesa" title="3.4. Mesa">Mesa</a> qui a été compilée pour
      utiliser Glide3 comme dorsal afin de pouvoir utiliser l'accélération
      matérielle OpenGL sur votre système.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="opengl"></a>3.3. OpenGL</h3></div></div>
<div></div>
</div>
<p>OpenGL est une interface de programmation graphique de haut
      niveau développée à l'origine par SGI, et qui est devenue un standard
      industriel pour la programmation 2D et 3D. Elle est définie et
      soutenue par le Architectural Revision Board
      (<span class="acronym">ARB</span>), une organisation qui inclut des
      représentants de SGI, IBM, DEC et Microsoft. OpenGL fournit un jeu de
      fonctionnalités puissant, complet et générique pour les opérations
      graphiques 2D et 3D.</p>
<p>OpenGL est constitué de 3 parties :</p>
<div class="itemizedlist"><ul type="disc">
<li><p>GL : les appels OpenGL de
        base</p></li>
<li><p>GLU : les appels utilitaires</p></li>
<li><p>GLUT : le traitement des événements de
        fenêtre indépendants du système (événements de souris, du clavier,
        et cætera).</p></li>
</ul></div>
<p>OpenGL n'est pas seulement une API, c'est aussi une
      implémentation, écrite par SGI. Elle essaie d'utiliser l'accélération
      matérielle pour diverses opérations graphiques quand elle est
      disponible, en fonction de de la carte vidéo dont vous disposez. Si
      l'accélération matérielle n'est pas possible pour une tâche
      particulière, OpenGL retombe sur le rendu logiciel. Cela signifie que
      si vous vous procurez OpenGL chez SGI, et que vous voulez disposer
      d'une accélération matérielle quelconque, elle doit être écrite en
      OpenGL et compilée spécifiquement pour une certaine carte graphique.
      Sinon, vous retomberez sur le rendu logiciel. Cela s'applique
      également aux clones d'OpenGL, comme Mesa.</p>
<p>OpenGL est l'équivalent <span class="foreignphrase"><i class="foreignphrase">open
      source</i></span> de Direct3D, un composant de <a href="ar01s03.html#directx" title="3.14. DirectX">DirectX</a>. Une différence importante est que
      puisque OpenGL est ouvert (et DirectX fermé), les jeux écrits en
      OpenGL sont beaucoup plus faciles à porter et à co-développer sous
      Linux que ne le sont les jeux utilisant DirectX.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="mesa"></a>3.4. Mesa</h3></div></div>
<div></div>
</div>
<p>Mesa &lt;<a href="http://www.mesa3d.org" target="_top">http://www.mesa3d.org</a>&gt; est
      une implémentation libre de l'API OpenGL, conçue et écrite par Brian
      Paul. Bien qu'elle ne soit pas officiellement certifiée (cela
      nécessiterait plus d'argent que n'en dispose un projet
      <span class="foreignphrase"><i class="foreignphrase">open source</i></span>), elle constitue une
      implémentation d'OpenGL presque totalement conforme aux
      spécifications de l'ARB. On rapporte que Mesa est même plus rapide
      que la propre implémentation OpenGL de SGI.</p>
<p>Tout comme OpenGL, Mesa utilise l'accélération matérielle quand
      c'est possible. Quand une tâche graphique particulière ne peut être
      accélérée matériellement par la carte vidéo, elle est rendue en
      logiciel ; la tâche est alors accomplie par votre processeur.
      Cela signifie qu'il existe différentes moutures de Mesa en fonction
      du type de carte vidéo dont vous disposez. Chaque mouture utilise une
      bibliothèque différente comme moteur de rendu. Par exemple, si vous
      avez une Voodoo I, II ou III sous <span class="application">XFree86</span>
      3.x, vous devriez utiliser mesa+glide2 (écrit par <span class="firstname">David</span> <span class="surname">
      Bucciarelli</span>) qui est l'implémentation Mesa de
      OpenGL qui utilise Glide2 comme dorsal pour rendre les opérations
      graphiques.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="id2513489"></a>3.5. DRI</h3></div></div>
<div></div>
</div>
<p>Le rendu des graphiques comporte 3 protagonistes :
      l'application cliente (comme <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Quake
      3</i></span></span>™), le serveur X et le matériel (la
      carte graphique). Auparavant, les applications clientes ne pouvaient
      pas écrire directement sur le matériel, et il y avait une bonne
      raison à cela : un programme à qui l'on permet un accès en
      écriture direct sur le matériel peut faire planter le système de
      plusieurs façons. Plutôt que de faire confiance aux programmeurs pour
      écrire des programmes (accédant au matériel) totalement exempts de
      bogues et coopératifs, Linux l'a tout simplement interdit. Néanmoins,
      cela a changé sous <span class="application">XFree</span> 4.x avec
      l'infrastructure de rendu direct (<a href="http://www.dri.sourceforge.net" target="_top">Direct Rendering
      Infrastructure</a>, <span class="acronym">DRI</span>). La DRI autorise les
      clients X à écrire des informations de rendu 3D directement sur la
      carte vidéo d'une manière sûre et coopérative.</p>
<p>DRI fait abstraction du serveur X afin que le pilote 3D (Mesa
      ou OpenGL) puisse parler directement au matériel. Cela améliore les
      performances. Les informations de rendu 3D ne doivent même pas subir
      d'accélération matérielle. D'un point de vue technique, cela a
      plusieurs avantages :</p>
<div class="itemizedlist"><ul type="disc">
<li><p>Les données associées aux sommets de polygones ne
        doivent pas être codées/décodées via GLX.</p></li>
<li><p>Les données graphiques ne sont pas envoyées via une
        socket au serveur X.</p></li>
<li><p>Sur les machines mono-processeur, le CPU ne doit
        pas changer de contexte entre XFree86 et son client pour rendre les
        graphiques.</p></li>
</ul></div>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="id2513579"></a>3.6. GLX</h3></div></div>
<div></div>
</div>
<p>GLX est l'extension X utilisée par les programmes OpenGL ;
      c'est le liant entre l'OpenGL indépendant de la plate-forme, et X
      dépendant de la plate-forme.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="id2513594"></a>3.7. Utah GLX</h3></div></div>
<div></div>
</div>
<p>Utah-GLX est le précurseur de DRI. Certaines décisions de
      conception sont différentes en ce qui concerne la séparation des
      données et des méthodes d'accès à la carte vidéo, comme le repos sur
      l'accès root plutôt que la création de l'infrastructure noyau
      permettant un accès sécurisé. Il prend en charge quelques cartes qui
      ne sont pas bien gérées par le DRI comme la famille ATI Rage Pro, la
      S3 Virge (bien que quiconque l'utilise pour jouer est pour ainsi dire
      cinglé), et un pilote TNT/TNT2 <span class="foreignphrase"><i class="foreignphrase">open
      source</i></span> (très incomplet). Le pilote TNT/TNT2 est basé
      sur la rétro-ingénierie de la publication du code source obscurci des
      pilotes X 3.3 par nVidia. Néanmoins, ils sont très incomplets et,
      pour tout dire, inutilisables.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="xlib"></a>3.8. xlib</h3></div></div>
<div></div>
</div>
<p>De temps à autre, vous verrez quelques malades (dit avec
      respect) qui écrivent un jeu en xlib. C'est un groupe de
      bibliothèques C qui comportent l'interface de programmation du plus
      bas niveau pour <span class="application">XFree86</span>. Toute
      programmation graphique sous X fait <span class="emphasis"><em>in fine</em></span>
      usage de la bibliothèque xlib.</p>
<p>Il n'est pas exagéré de dire que xlib est volumineux,
      mystérieux et compliqué. De ce fait, il existe des tas de
      bibliothèques comme <a href="ar01s03.html#sdl" title="3.10. SDL (Simple DirectMedia Layer)">SDL</a> pour les
      graphiques 2D, et <a href="ar01s03.html#opengl" title="3.3. OpenGL">OpenGL</a> pour les
      graphiques 3D et les jeux d'éléments graphiques (<a href="ar01s03.html#widgetset" title="3.9. Widgets"><span class="foreignphrase"><i class="foreignphrase">widgets</i></span></a>)
      pour les éléments graphiques à l'intérieur des fenêtres qui cachent
      les détails de différents aspects de la programmation xlib.</p>
<p>Bien que quelques jeux soient écrits avec xlib, comme l'éditeur
      Doom Yadex, xlib en lui-même ne peut pas raisonnablement servir de
      bibliothèque d'écriture de jeux. La plupart des jeux n'ont pas besoin
      de l'interface de bas niveau fournie par xlib. De plus, en utilisant
      les bibliothèques de plus haut niveau, un programmeur de jeux peut
      développer son jeu sur plusieurs plates-formes, même celles qui
      n'utilisent pas <span class="application">XFree86</span>.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="widgetset"></a>3.9. <span class="foreignphrase"><i class="foreignphrase">Widgets</i></span></h3></div></div>
<div></div>
</div>
<p>Les éléments graphiques (widgets) sont des objets qui
      constituent l'interface d'une application graphique. Ils incluent des
      choses comme les boîtes d'entrée de texte, les menus déroulants, les
      barres de défilement, les boutons radio et bien d'autres choses. Un
      jeu d'éléments graphiques (widget set) est une collection d'éléments
      graphiques apparentés qui sont conçus pour avoir une interface
      commune et un aspect cohérent. Gtk est le jeu d'éléments graphiques
      canonique sous Linux, mais il y en a beaucoup d'autres comme fltk (de
      petite taille, écrit en C++), Xaw, Qt (le jeu d'éléments graphiques
      de KDE) et Motif (celui utilisé par Netscape). Motif régnait dans le
      monde Unix, mais sa licence d'utilisation était très coûteuse. L'Open
      Group a finalement ouvert la licence de Motif pour les systèmes
      d'exploitation <span class="foreignphrase"><i class="foreignphrase">open source</i></span>, mais
      c'était trop tard. Il y a beaucoup de jeux d'éléments graphiques
      complètement <span class="foreignphrase"><i class="foreignphrase">open source</i></span> qui sont plus
      complets et plus beaux que Motif, y compris Lesstif, un clone
      totalement gratuit de Motif.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="sdl"></a>3.10. SDL (Simple DirectMedia Layer)</h3></div></div>
<div></div>
</div>
<p><a href="http://www.libsdl.org" target="_top">SDL</a> est une
      bibliothèque de <span class="firstname">Sam</span> <span class="surname">
      Lantiga</span> (diplômé de l'UCD !). C'est en
      fait une méta-bibliothèque, c.-à-d. que ce n'est pas seulement une
      bibliothèque graphique qui cache les détails de la programmation
      xlib, mais c'est aussi une interface simple d'utilisation pour le
      traitement du son, de la musique et des événements. Sa licence est la
      LGPL et elle prend également en charge les joysticks et OpenGL. À la
      différence de <a href="ar01s03.html#xlib" title="3.8. xlib">xlib</a>, SDL convient fort
      bien à la programmation de jeux.</p>
<p>Le plus impressionnant dans SDL est son caractère
      multi-plates-formes. Mis à part quelques détails, un programme écrit
      en SDL compilera sous Linux, MS Windows, BeOS, MacOS, MacOS X,
      Solaris, IRIX, FreeBSD, QNX et OSF. Il existe diverses extensions
      permettant de manipuler à peu près tous les formats graphiques, lire
      des vidéos MPEG, afficher des polices
      <span class="foreignphrase"><i class="foreignphrase">truetype</i></span>, gérer les acteurs
      (<span class="foreignphrase"><i class="foreignphrase">sprites</i></span>) et à peu près tout ce qui
      est imaginable. SDL est un exemple de ce à quoi toutes les
      bibliothèques graphiques devraient aspirer. </p>
<p>Sam avait une motivation cachée pour l'écriture d'une si
      chouette bibliothèque : il était le programmeur en chef de Loki
      Software (il code maintenant pour Blizzard Software), qui utilisait
      SDL dans tous ses jeux sauf
      <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Quake3</i></span></span>™.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="ggi"></a>3.11. GGI</h3></div></div>
<div></div>
</div>
<p><a href="http://www.ggi-project.org" target="_top">GGI</a> est un
      projet qui vise à implémenter une couche d'abstraction graphique dans
      du code de bas niveau, de placer la prise en charge du matériel
      graphique dans une base de code commune, et d'apporter une plus
      grande stabilité et portabilité aux applications graphiques. Les
      applications LibGGI tournent entre autres sous SVGAlib, fb et X. Si
      l'on en juge à leurs captures d'écran, c'est une bibliothèque assez
      puissante.</p>
<p>Les applications qui utilisent LibGGI directement comportent
      <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Heroes</i></span></span>™,
      <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Ultrapoint</i></span></span>™,
      <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Quake</i></span></span>™ et
      <span class="productname"><span class="foreignphrase"><i class="foreignphrase">Berlin</i></span></span>™. La
      plupart des applications qui utilisent SVGALib peuvent être exécutées
      sous X ou sous n'importe quel autre dorsal LibGGI en utilisant une
      bibliothèque enveloppe qui réimplémente <a href="ar01s03.html#svgalib" title="3.12. SVGAlib, framebuffer et console">SVGALib</a> en utilisant LibGGI. Les
      applications <a href="ar01s03.html#sdl" title="3.10. SDL (Simple DirectMedia Layer)">SDL</a> et <a href="ar01s03.html#clanlib" title="3.15. Clanlib">clanlib</a> peuvent s'afficher avec LibGGI mais
      les pilotes natifs de ces bibliothèques sont généralement plus
      rapides ; néanmoins, c'est un bon moyen pour que des
      applications SDL, clanlib et SVGALib s'exécutent là où elles
      n'auraient pas pu le faire auparavant.</p>
<p>GGI a un projet sœur, KGI, qui développe une alternative
      de niveau noyau aux systèmes du type
      <span class="foreignphrase"><i class="foreignphrase">framebuffer</i></span> linux et DRI. Ce projet
      est beaucoup moins avancé que LibGGI lui-même, mais promet de
      combiner les vitesses de niveau DRI à la stabilité et à la sécurité
      auxquelles aspirent les utilisateurs UNIX.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="svgalib"></a>3.12. SVGAlib, framebuffer et console</h3></div></div>
<div></div>
</div>
<p>La console est l'écran noir non graphique que vous voyez
      lorsque votre ordinateur démarre pour la première fois (et qu'aucune
      application du genre <span class="application">xdm</span> ou
      <span class="application">gdm</span> ne tourne). C'est différent de
      l'environnement X qui comporte toutes sortes d'éléments graphiques
      comme les <span class="application">xterm</span>. Une idée fausse fort
      répandue est de croire que X signifie
      « <span class="quote">graphique</span> » et que console signifie
      « <span class="quote">non graphique</span> ». Il peut assurément y avoir
      des graphiques en mode console ; nous discuterons des deux
      manières les plus habituelles de procéder.</p>
<p>SVGAlib est une bibliothèque graphique qui vous permet de
      dessiner des graphiques sur la console. Il existe beaucoup
      d'applications graphiques et de jeux utilisant SVGAlib comme
      <span class="application">zgv</span> (un visualisateur d'images en mode
      console), <span class="application">prboom</span> et
      <span class="application">hhexen</span>. J'apprécie cette bibliothèque et
      les jeux graphiques en mode console en général : ils sont
      extrêmement rapides, plein écran et captivants. SVGAlib souffre de
      trois défauts. Primo, les exécutables SVGAlib doivent être lancés par
      root ou être setuid-root (néanmoins, la bibliothèque abandonne les
      privilèges root immédiatement après le début de l'exécution).
      Secundo, SVGAlib est dépendant de la carte vidéo :  si votre
      carte vidéo n'est pas prise en charge par SVGAlib, c'est pas de
      chance. Tertio, SVGAlib est spécifique à Linux :  les jeux
      écrits en SVGAlib ne fonctionneront <span class="emphasis"><em>que</em></span> sous
      Linux.</p>
<p>Les <span class="foreignphrase"><i class="foreignphrase">framebuffers</i></span> sont des
      consoles implémentées par un mode graphique plutôt qu'un mode texte
      du BIOS. Pourquoi simuler un mode texte dans un environnement
      graphique ? Cela permet d'exécuter des applications graphiques
      en console, comme p.ex. de choisir la police affichée en console (qui
      est normalement fixée par le BIOS). On peut trouver un bon
      « <span class="quote">Guide pratique du frame-buffer</span> » (<a href="http://www.traduc.org/docs/howto/lecture/Framebuffer-HOWTO.html" target="_top"><span class="foreignphrase"><i class="foreignphrase">Framebuffer-HOWTO</i></span></a>)
      sur le LDP. Les jeux en console graphique écrits en utilisant le
      framebuffer souffrent des mêmes problèmes que ceux utilisant
      SVGAlib : le support matériel est limité, et le code ne
      fonctionnera que sous Linux.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="openal"></a>3.13. OpenAL</h3></div></div>
<div></div>
</div>
<p><a href="http://www.openal.org" target="_top">OpenAL</a> a pour
      objectif d'être au son ce que OpenGL est aux graphiques. Développé
      conjointement par Loki Software et Creative Labs, elle a pour but
      d'être une API neutre et multi-plates-formes pour le son. Sa licence
      est la LGPL et les spécifications peuvent être obtenues gratuitement
      depuis le site web de OpenAL. OpenAL est entièrement fonctionnel,
      mais depuis que Loki Software n'existe plus, son développement futur
      est incertain.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="directx"></a>3.14. DirectX</h3></div></div>
<div></div>
</div>
<p>DirectX est une collection d'API multimédia propriétaires,
      développée à l'origine par Microsoft en 1995, pour ses différents
      systèmes d'exploitation Windows. C'est une erreur de prétendre que
      « <span class="quote">DirectX est similaire à OpenGL</span> » ou
      « <span class="quote">DirectX est similaire à SDL</span> », comme il est
      souvent dit dans les didacticiels DirectX. Les API multimédia sont
      plus centralisées sous Windows qu'elles ne le sont sous Linux. Une
      formulation plus précise serait : « <span class="quote">DirectX est
      similaire à DRI, OpenGL et SDL combinés</span> ». En juin 2003,
      la version la plus récente de DirectX était la 9.0. Les composants de
      DirectX sont : </p>
<div class="variablelist"><dl>
<dt><span class="term">DirectDraw</span></dt>
<dd><p>DirectDraw
          fournit un accès direct à la mémoire vidéo, comme DRI, de sorte
          que les graphiques 2D peuvent être placés directement sur la
          carte vidéo. DirectDraw est similaire au composant graphique de
          SDL, mais l'accès direct à la carte vidéo est effectué par DRI
          plutôt que par SDL. C'est pourquoi un jeu peut facilement faire
          tomber un système Windows mais ne devrait pas le faire avec un
          système Linux.</p></dd>
<dt><span class="term">Direct3D (D3D)</span></dt>
<dd><p>Direct3D,
          comme OpenGL, fournit une API graphique 3D. Alors qu'OpenGL est
          <span class="foreignphrase"><i class="foreignphrase">open source</i></span>, de plus bas niveau et
          compile sous une multitude de systèmes d'exploitation, D3D est
          propriétaire, de plus haut niveau et ne compile que sous Windows.
          D3D est d'abord apparu dans DirectX 2, en
          1996.</p></dd>
<dt><span class="term">DirectXAudio</span></dt>
<dd><p>Direct Audio est une combinaison de deux API
          audio, DirectSound et DirectMusic, qui offrent un accès direct à
          la carte son pour jouer du son et de la
          musique.</p></dd>
<dt><span class="term">DirectInput</span></dt>
<dd><p>DirectInput permet l'utilisation de périphériques
          d'entrée de jeu comme les
          joysticks.</p></dd>
<dt><span class="term">DirectPlay</span></dt>
<dd><p>DirectPlay offre une gestion réseau
          simplifiée pour les jeux multi-joueurs.</p></dd>
<dt><span class="term">DirectShow</span></dt>
<dd><p>DirectShow prend en charge les fichiers vidéo
          comme <tt class="filename">AVI</tt> et <tt class="filename">MPG</tt>. C'était une API distincte de
          DirectX, mais elle a été intégrée dans DirectX
          8.</p></dd>
<dt><span class="term">DirectSetup</span></dt>
<dd><p>Cette API
          facilite l'installation de DirectX à partir d'une application
          pour simplifier l'installation des
          jeux.</p></dd>
</dl></div>
<p>DirectX est un peu pris en charge par <a href="ar01s10.html#winex" title="10.5.3. winex"><span class="application">winex</span></a>, l'est mal
      par <a href="ar01s10.html#wine" title="10.5.1. wine"><span class="application">wine</span></a>,
      l'est à peine par <a href="ar01s10.html#vmware" title="10.5.5. VMWare"><span class="application">vmware</span></a> et ne l'est
      pas du tout par <a href="ar01s10.html#win4lin" title="10.5.4. Win4Lin"><span class="application">Win4Lin</span></a>.</p>
<p>Remarque sur la portabilité : pour chaque composant de DirectX,
      on peut trouver plusieurs bibliothèques correspondantes sous Linux.
      Mieux encore, un programmeur de jeux qui utilise des bibliothèques
      comme OpenGL, GGI ou SDL écrira un jeu qui compilera trivialement
      sous Windows, Linux et une multitude d'autres systèmes
      d'exploitation. Pourtant, les sociétés productrices de jeux
      persistent à utiliser DirectX et limitent de ce fait leur public aux
      seuls utilisateurs Windows. Si vous écrivez des jeux, veuillez
      envisager l'utilisation de bibliothèques multi-plates-formes et
      rester éloigné de DirectX.</p>
<p>Une société nommée realtechVR a démarré un projet
      <span class="foreignphrase"><i class="foreignphrase">open source</i></span>, <a href="http://www.v3x.net/directx" target="_top">DirectX Port</a> qui, comme
      <span class="application">wine</span>, fournit une couche d'émulation de
      Direct3D qui implémente les appels Direct3D. Le projet se concentrait
      sur la plate-forme BeOS, mais l'est maintenant sur MacOS et Linux.
      Vous pouvez récupérer la toute dernière mouture depuis leur
      référentiel CVS sur &lt;<a href="http://sourceforge.net/projects/dxglwrap" target="_top">http://sourceforge.net/projects/dxglwrap</a>&gt;.</p>
</div>
<div class="sect2" lang="fr">
<div class="titlepage">
<div><div><h3 class="title">
<a name="clanlib"></a>3.15. Clanlib</h3></div></div>
<div></div>
</div>
<p>ClanLib est un kit d'outils de développement de niveau
      intermédiaire. Au plus bas niveau, il fournit des outils indépendants
      de la plate-forme (dans la limite du possible en C++) de gestion de
      l'affichage, du son, des entrées, du réseau, des fichiers, des
      threads, et cætera. ClanLib construit un cadre générique de développement
      de jeu, vous offrant une gestion aisée des ressources, une
      réplication des objets sur le réseau, des interfaces utilisateur
      graphiques (GUI) autorisant les thèmes, les langages de scripts dans
      les jeux et plus encore.</p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="ar01s02.html">Précédent</a> </td>
<td width="20%" align="center"><a accesskey="u" href="index.html">Niveau supérieur</a></td>
<td width="40%" align="right"> <a accesskey="n" href="ar01s04.html">Suivant</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">2. Définitions : types de jeux </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td>
<td width="40%" align="right" valign="top"> 4. XFree86 et vous</td>
</tr>
</table>
</div>
</body>
</html>