|
|
DirectX est un ensemble de technologies destinées à améliorer l'efficacité des applications utilisant intensivement le graphisme et le multimédia. C'est ce que l'on appelle une interface de programmation (API). Cette API, indépendante du matériel, est principalement destinée aux programmeurs de jeux en leur fournissant des services standards et optimisés, leur évitant ainsi de redévelopper tous les drivers (pilotes) graphiques, sonores, vidéo, etc.
DirectX regroupe plusieurs familles de service :
DirectDraw gère le graphisme 2D :
- Il fournit des animations non saccadées utilisant le basculement de page (page flipping), l'accès aux coprocesseurs graphiques spécialisés et la gestion mémoire pour l'affichage.
- C'est un moteur graphique optimisé pour permettre aux développeurs de jeux d'obtenir les mêmes performances graphiques sous Windows que sous DOS, tout en standardisant les appels aux services.
- Deux couches de fonctions ont été définies, HAL (Hardware Abstraction Layer) et HEL (Hardware Emulation Layer). La première fournit l'interface de plus bas niveau avec le matériel (accélérateur graphique) en masquant la spécificité de chaque carte graphique sous une API standard. La couche HAL est en principe écrite par le fabricant de la carte et fournie avec. Au cas où une fonction de base ne serait pas "câblée", elle est alors émulée par la couche HEL. Ainsi, au niveau supérieur, l'application peut compter sur une bibliothèque de services graphiques de base, câblés ou émulés, dont l'accès est unifié.
- DirectDraw fournit aux applications des services de base comme la manipulation de bitmaps (affichage, redimensionnement, conversion des couleurs, masquage, transparence, etc.), la gestion des plans graphiques et des palettes de couleurs (notamment l'émulation 24 bits pour les cartes qui ne le supportent pas en natif). Les performances graphiques sont obtenues en préparant en mémoire hors écran les images à afficher et en transférant le tout d'un bloc à l'écran. Le programme peut construire une nouvelle image (en plaçant des sprites sur un fond par exemple) dans le même temps que l'image précédente est en cours d'affichage.
- DirectDraw sert de base à des composants de Windows utilisant intensément le dessin, tels que DirectShow et Direct3D.
Direct3D gère le rendu 3D :
- C'est un moteur de rendu 3D fournissant des services élémentaires afin de faciliter le travail aux applications dans la création de scènes 3D. Direct3D se charge des transformations géométriques (rotations, perspective, projections, clipping 3D, etc.), de l'éclairage (position des sources, types de réflexions), et du rendu (c'est-à-dire de la transformation des facettes 3D en bitmaps affichables à l'écran).
- Le principe des couches HAL et HEL est aussi présent ici, intimement lié avec celles de DirectDraw. Deux modes de fonctionnement peuvent être exploités par une application : le mode mémorisé (retained mode) et le mode immédiat (immediate mode). Le premier permet la gestion de scènes 3D (définition et positionnement des objets, règles de déplacement) à un assez haut niveau tandis que le second est optimisé et se charge du rendu des polygones et vecteurs.
- Le mode mémorisé est construit par-dessus le mode immédiat et DirectDraw. Le mode immédiat est spécialement conçu pour permettre un portage des applications (jeux) tournant sous DOS, dont les moteurs 3D sont en général développés en interne.
- Le mode immédiat permet de conserver le code de haut niveau du moteur mais se substitue aux routines de bas niveau effectuant le rendu final.
- Les transformations géométriques sont basées sur des opérations matricielles (4x4). Le système maintient plusieurs systèmes de coordonnées : le port d'affichage, la vue 2D et le monde 3D, permettant à l'application de passer aisément de l'un à l'autre. Le système d'éclairage maintient une liste des sources de lumière et gère l'éclairage ambiant et la nature des matériaux. Les réflexions sont calculées par rendu diffus ou spéculaire selon les matériaux. La transparence est mise à contribution pour restituer les effets de brouillard et d'atténuation en fonction de la distance.
- Par ailleurs, un format de fichier Direct3D permet de stocker les éléments d'une scène, les descriptions de mouvement et de rendu. Les développeurs disposent d'outils leur permettant de convertir des fichiers 3DS ou Autocad vers le format Direct3D.
DirectSound gère le mixage des sons et leur diffusion :
- Il fournit des sons stéréo et 3D à faible temps de latence avec mixage au niveau matériel, ainsi que la gestion mémoire pour la carte son.
- Ce module virtualise la carte son et ses attributs (buffers, mixage) afin de permettre à une application de gérer n'importe quelle carte de la même manière. Les services fournis permettent de charger des buffers avec des sons, de les jouer, de les mixer et de les synchroniser ensemble. Un son volumineux sera automatiquement découpé par le système en morceaux compatibles avec la taille du buffer. Enfin, une extension DirectSound3D permet la restitution de sons spatialement localisés avec seulement deux enceintes, afin d'obtenir des effets spéciaux plus percutants.
DirectMusic :
- C'est un service de synthétiseur logiciel pouvant tirer parti de la présence de puces dédiées à la synthèse sonore (expanders et tables de sons). Ce service permet d'obtenir une restitution de très haute qualité notamment à travers Internet lors de la consultation des pages Web.
DirectPlay gère la connectivité en réseau :
- DirectPlay offre une interface homogène pour synchroniser les jeux entre plusieurs joueurs connectés par modem, par liaison série, sur un réseau local ou sur Internet (support des protocoles point à point et TCP/IP). Des fonctions permettent de déclarer un joueur dans une session et de reporter son activité auprès des autres joueurs.
DirectInput gère l'interface des joysticks et autres pédaliers :
- Il fournit des saisies à faible temps de latence effectuées via toutes sortes de périphériques et gère des périphériques de sorties, y compris des périphériques avec retour de force (force feedback).
DirectSetup :
- Il fournit l'installation automatisée des pilotes de DirectX et la vérification de la version installée.
Tous ces services sont basés sur la technologie COM de composants logiciels, écrits en code 32 bits, et sont regroupés dans des DLL installées dans le système.
Conclusion :
Ces technologies reprennent en fait sous des noms chic et choc des technologies élaborées lentement depuis plusieurs années. Ils fédèrent les outils OLE, ceux du Game SDK, les fonctions WinG créées pour Windows 3.1 et bien d'autres encore, développées en interne chez Microsoft ou issues des acquisitions de sociétés dans le domaine de la synthèse d'image (comme SoftImage).
Le bénéfice est important pour les développeurs qui peuvent pérenniser leur développement sur une plate-forme largement diffusée et ayant un avenir assuré et également pour les utilisateurs qui pourront disposer de jeux performants et simples à installer et à configurer. Malgré ce que l'on entend parmi les intégristes, Windows 9x peuvent exécuter des applications performantes et rapides. Les développeurs de jeu ont donc intérêt à suivre le mouvement car il n'est pas question de faire tourner un jeu DOS ou 16 bits systèmes condamnés à mourir à plus ou moins longue échéance... A suivre donc.
|