DirectX


DirectX
DirectX
Directx.jpg
Développeur Microsoft
Dernière version 11 [+/-]
Environnement Microsoft Windows
Type Framework
Licence EULA
Site web Page d’accueil de DirectX

Microsoft DirectX est une collection de bibliothèques destinées à la programmation d’applications multimédia. Plus particulièrement de jeux ou de programmes faisant intervenir de la vidéo, sur les plates-formes Microsoft (Xbox, systèmes d’exploitation Windows). À l’origine le nom de chacune de ces bibliothèques commençait par Direct, par exemple : Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound et ainsi de suite. DirectX étant le nom générique faisant référence à l’ensemble de ces technologies. Avec le temps cette convention de nommage est un peu tombée en désuétude, le X prenant l’ascendant des technologies intitulées Xact, Xinput ont rejoint la grande famille des technologies DirectX. Ainsi lorsque Microsoft s’est lancé dans le développement d’une console faisant un usage intensif de ces technologies, le X était prédominant ce qui a pu conduire au nom XBox (et par la suite XBox 360).

Direct3D (la bibliothèque permettant de faire de la 3D temps réel) est largement utilisée dans le développement de jeux pour la plate-forme Microsoft Windows, pour XBox et XBox 360. Direct3D est aussi utilisé pour d’autres type d’applications s’appuyant sur des graphismes en 3D de haute qualité pour visualiser des données complexes, comme par exemple dans le secteur du CAD/CAM bien que son concurrent OpenGL soit dans ce domaine mieux implanté car existante sur bien plus de plates-formes. Direct3D étant peut-être une des technologies DirectX les plus reconnues, il n’est pas rare de voir le nom DirectX utilisé en lieu et place de Direct3D.

La multitude des composants DirectX existe sous deux formes. L’une uniquement destinée à faire tourner les applications développées en utilisant ces technologies (les runtime components), l’autre étant un kit de développement à l’usage des développeurs. Initialement les composants destinés à l’exécution des applications étaient redistribués avec les jeux qui en faisaient usage, aujourd’hui, ils se trouvent aussi préinstallés avec Windows. Le SDK est quant à lui proposé en téléchargement gratuit à partir du site de développement de Microsoft (MSDN). La partie runtime est propriétaire et les sources ne sont pas accessibles. Les sources des exemples du SDK sont disponibles avec celui-ci.

Les dernières versions de Direct3D, à savoir Direct3D 10 et Direct3D 9Ex, sont l’apanage de Windows Vista. Ces deux versions font usage de fonctionnalités propres au nouveau modèle de pilote Windows Display Driver Model apparu avec Windows Vista. La nouvelle infrastructure graphique de Windows supporte la virtualisation du matériel graphique vis-à-vis de multiples applications et services comme par exemple le Desktop Window Manager (le gestionnaire de desktop de Vista lorsque Aero est activé). Précédemment avec Windows XP, les applications avaient un accès exclusif à la carte graphique et pouvaient s’accaparer les ressources de celle-ci.

Sur PC, DirectX est actuellement en version 11 pour Windows 7, pour Windows Vista et Windows Server 2008 et 9.0c pour toutes les versions antérieures de Windows.

Sommaire

Composants

Les composants constituant DirectX sont :

  • DirectX Graphics, lui-même constitué de plusieurs API :
    • DirectDraw : destiné aux graphismes en deux dimensions. Cette partie n’est plus mise à jour mais reste utilisée par un grand nombre de jeux. Cette bibliothèque est considérée comme obsolète (deprecated), remplacée par Direct2D.
    • Direct2D : remplace, en plus complet, DirectDraw. Disponible pour Windows 7, et pour Vista sous forme de mise à jour.
    • DirectWrite : pour les polices. Offre notamment un anticrénelage bidirectionnel. Disponible pour Windows 7, et pour Vista sous forme de mise à jour.
    • Direct3D (D3D) : Pour les graphismes 3D.
    • DXGI : Pour énumérer les cartes et les écrans et gérer les swap chains pour DirectX 10 et au-dessus.
  • DirectInput : permet de gérer les entrées utilisateur de nombreux matériels comme les claviers, souris et joysticks ou tout autre matériel connectable à un PC, destiné au monde du jeu et disposant des pilotes adaptés. Cette API n’est plus mise à jour depuis la version 8. Il est recommandé d’utiliser à la place Xinput (aussi supporté par les contrôleurs compatibles avec la XBox 360) ou alors les messages standards WM INPUT envoyés aux fenêtres windows pour la gestion des entrées clavier et souris.
  • DirectPlay : facilite la communication sur un réseau local on non. N’est plus mis à jour depuis la version 8.
  • DirectSound : permet de jouer et d’enregistrer des sons au format PCM. DirectSound3D (DS3D) : permet de jouer des sons positionné dans un espace 3D.
  • DirectMusic : pour jouer des morceaux produit à l’aide de l’outil DirectMusic Producer.
  • DirectX Media : comprend DirectAnimation pour l’animation web 2D. N’est plus mis à jour.
  • DirectShow : pour manipuler les contenus multimédia, audio et vidéo, streamé ou non.
  • DirectX Transform pour des effets web, et Direct3D Retained Mode pour faire de la 3D avec une API de plus haut niveau. DirectShow contient aussi DirectX plugins pour effectuer des opérations sur les signaux audio et DirectX Video Acceleration (DXVA) pour bénéficier d’une décompression matérielle des contenus vidéo compressés.

Depuis avril 2005, DirectShow ne fait plus partie du SDK DirectX et a été déplacé dans le Platform SDK.

  • DirectX Media Objects : composants additionnels pour des applications en rapport avec les streaming, encodeurs, décodeurs, effets.

DirectSetup : permet de faciliter le déploiement des composants DirectX. Les fonctionnalités proposées par DirectX sont exposées sous forme d’interfaces et objet COM. Par ailleurs, des objets managés ont aussi été créés au-dessus de certaines parties de DirectX, comme managed DirectX (s’appuyant sur Direct3D 9 et des portions de DirectSound) ainsi que la bibliothèque graphique de XNA[1]. ainsi que la bibliothèque graphique de XNA[1].

  • Direct Compute : API apparue lors du lancement de DirectX 10 , visant à utiliser la puissance de calcul des GPU de dernière Génération (ATI HDXXXX ou Nvidia GTX XXX). La parallélisation massive des instructions des GPU graphiques permettant d'accélérer singulièrement les traitements/calculs lourds, en termes de "temps", pour un CPU classique. Des bibliothèques de programmation telles que "CUDA", "ATI Stream" ou encore "OpenCL", ont été mises à disposition des développeurs. Voir GPGPU

Historique

En 1994, Microsoft était sur le point de lancer son système d’exploitation, Windows 95. Un des facteurs déterminant du succès de tout système d’exploitation (OS) reste le panel de logiciels qu’il permet d’exécuter. Trois employés de Microsoft — Craig Eisler, Alex St. John, et Eric Engstrom — étaient alors de fait assez préoccupés qu’un certain nombre de développeurs semblaient penser que l’OS précédent de Microsoft, MS-DOS, constituait une meilleure plate forme pour les jeux, ce qui pouvait signifier que moins de jeux seraient développés pour Windows 95 avec l’impact négatif sur le succès de ce système d’exploitation que cela pouvait impliquer.

MS-DOS permettait un accès direct à la carte vidéo, au clavier, à la souris, aux cartes sons, et à d’autres parties du système contrairement à Windows 95 qui introduisait des notions d’espace d’adressage propre à chaque processus. Microsoft se devait donc de fournir aux développeurs ce qu’ils voulaient, par ailleurs il était nécessaire de le fournir rapidement ; la date de sortie du nouveau système d’exploitation n’étant plus distante que de quelques mois. Eisler, St. John, et Engstrom se mirent alors à travailler sur la solution à ce problème qu’ils appelèrent DirectX.

La première version de DirectX fut livrée au public en septembre 1995 sous l’appellation de Windows Games SDK. Il s’agissait du remplaçant pour Win32 de DCI et de l’API WinG disponible pour Windows 3.1. Une équipe de développement d’ATI Technologies soumit à l’attention de Microsoft un certain nombre de technologies graphiques spécifiques au monde du jeu. Le développement de DirectX fut conduit par l’équipe de Eisler (chef développeur), St. John, et Engstrom (gestion de projet). Pour résumer, il permit à toutes les versions de Windows depuis Windows 95 de bénéficier de capacités multimédia performantes. Eisler a écrit sur son blog sur la frénésie avec laquelle les versions de DirectX 1 à 5 furent réalisés.

Avant l’existence de DirectX, Microsoft avait déjà inclus le support d’OpenGL sur Windows NT. À cette époque, OpenGL nécessitait du matériel haut de gamme qui restait réservé aux utilisateurs disposant de moyen financier important comme dans le monde de l’industrie et plus généralement les utilisateurs de système CAO. Direct3D (introduit par Eisler, Engstrom, et St. John comme une alternative à l’OpenGL de SGI) était destiné à être une technologie compagnon plus légère et spécialisée pour les jeux. La puissance des cartes graphiques et des ordinateurs évoluant rapidement, OpenGL devint de son côté un standard de fait et une technologie accessible à tous. À ce moment-là, l’affrontement a pu faire rage entre les supporters de chacune des deux API, l’initiative de Microsoft étant perçue comme une volonté de marginaliser l’utilisation d’OpenGL (voir Fahrenheit ou Direct3D vs. OpenGL). Quoi qu’il en soit, OpenGL est parfois utilisé conjointement à certaines API DirectX : en effet, OpenGL est le pendant de Direct3D et n’inclut pas nécessairement des fonctionnalités permettant de gérer les entrées clavier ou souris ou le son. Ce même si aujourd’hui des bibliothèques comme SDL remplissent aussi ces besoins et sont aussi largement utilisées.[réf. nécessaire]

Dans sa version console, DirectX a été utilisé comme une épine dorsale des API proposés pour développer sur Xbox et Xbox 360A. L’API fut développé conjointement par Microsoft et NVIDIA, qui fournissait le matériel graphique présent sur la XBOX originale. L’API disponible pour cette version de la XBOX était peu ou prou équivalent à DirectX 8.1, elle portait le nom DirectXbox, ce qui fut raccourci en Xbox pour obtenir le nom commercial.

En 2002, Microsoft livrait DirectX 9 qui bénéficiait d’un support pour des shaders plus long et la version 2.0 des vertex shaders. Depuis Microsoft n’a cessé de faire évoluer DirectX 9 en ajoute par exemple le support du shader model 3.0 avec la version DirectX 9.0c, livrée en août 2004.

En avril 2005, DirectShow a été déplacé du SDK DirectX vers Microsoft Platform SDK. En revanche, DirectX est toujours nécessaire pour compiler les exemples DirectShow.

DirectX 10

DirectX 10 est une mise à jour majeure de l’API DirectX. Disponible uniquement à partir de Windows Vista, les versions antérieures de Windows ne peuvent exécuter des applications s’appuyant exclusivement sur cette version de l’API. Les changements introduits par DirectX 10 sont profonds, mais seule la partie Direct3D est réellement concernée par ceux-ci. De nombreuses parties de DirectX API sont considérées comme désuètes dans la dernière version du SDK et ne sont plus présentes que pour des questions de compatibilité : DirectInput s’efface au profit de XInput, DirectSound en faveur de XACT et Xaudio2 et perd son accès direct au matériel sur Windows Vista. En effet la nouvelle pile audio de Vista introduit une nouvelle API intitulé WASAPI sur laquelle les fonctionnalités de DirectSound ont été redirigées. La bibliothèque DirectPlay DPLAY.dll a aussi disparue et a été remplacée par une bibliothèque intitulée dplayx.dll.

Pour des raisons de compatibilité, plusieurs versions de Direct3D sont installées sur Windows Vista :
Direct3D 9 offre les mêmes fonctionnalités que la version de Direct3D 9 disponible pour Windows XP. Ce sera la seule version disponible tant qu’un pilote Windows Display Driver Model n’aura pas été installé avec Vista, par exemple juste après une mise à jour alors que seul un XP graphic driver (XPDM) est présent.

Direct3D 9Ex (aussi connu comme 9.0L ou 9.L, le L faisant référence à Longhorn, nom de code de Windows Vista utilisé avant sa sortie) : Cette version permet de bénéficier de certaines fonctionnalités introduites par l’utilisation des pilotes WDDM tout en maintenant la compatibilité avec les applications écrites pour Direct3D 9. L’interface Windows Aero s’appuie sur D3D 9Ex et utilise certaines des fonctionnalités non présentes dans Direct3D 9 comme la possibilité de partager des surfaces DirectX entre plusieurs processus.

Direct3D 10 : Destiné à fournir l’accès le plus direct et le plus total aux cartes graphiques modernes par le biais du nouveau modèle de pilote WDDM. Cette version contient un nombre important de nouvelles fonctionnalités comme la possibilité d’utiliser le langage HLSL dans sa version Shader Model 4.

Direct3D 10.1 est quant à elle une mise à jour mineure de Direct3D 10 qui est distribué et nécessite le Service Pack 1 de Windows Vista. Cette version ajoute quelques fonctionnalités supplémentaires permettant de donner plus de contrôle aux développeurs sur la qualité de l’image obtenue. Cette version a ses propres pré-requis et nécessite le support du Shader Model 4.1 des opérations à virgule flottante sur 32 bits.

DirectX 10.1 continue d’utiliser pleinement les cartes compatibles DirectX 10, mais pour bénéficier de l’ensemble des nouvelles fonctionnalités, il faut bénéficier d’une carte adéquate.

Portages hors Microsoft

Bien que DirectX soit une API conçue pour le système d'exploitation Windows, il existe des pilotes et des bibliothèques logicielles qui fournissent une partie de son API sur d'autres systèmes d'exploitations comme :

  • Wine : Qui permet à des programmes conçus pour fonctionner sous Windows de fonctionner aussi sous Linux ou Mac OS X en redirigeant entre autres les appels Direct3D vers OpenGL.
  • Gallium3D : Qui propose l'API de Direct3D 10 et 11 de manière native sous n'importe quel système d'exploitation sous réserve qu'un pilote Gallium3D soit présent sur le système cible[2]

Versions

Version Code de version Numéro de version
DirectX 1.0 4.02.0095 30 septembre 1995
DirectX 2.0 4.03.00.1096 1996
DirectX 2.0a 4.03.00.1096 5 juin 1996
DirectX 3.0 4.04.00.0068 15 septembre 1996
4.04.00.0069 1996
DirectX 3.0a 4.04.00.0070 Décembre 1996
DirectX 3.0b 4.04.00.0070 Décembre 1996
DirectX 4.0 Jamais sortie
DirectX 5.0 4.05.00.0155 (RC55) 16 juillet 1997
DirectX 5.2 4.05.01.1600 (RC00) 5 mai 1998
4.05.01.1998 (RC0) 25 juin 1998
DirectX 6.0 4.06.00.0318 (RC3) 7 août 1998
DirectX 6.1 4.06.02.0436 (RC0) 3 février 1999
DirectX 6.1a 4.06.03.0518 (RC0) 5 mai 1999
DirectX 7.0 4.07.00.0700 (RC1) 22 septembre 1999
4.07.00.0700 17 février 2000
DirectX 7.0a 4.07.00.0716 (RC0) 8 mars 2000
4.07.00.0716 (RC1) 2000
DirectX 7.1 4.07.01.3000 (RC1) 14 septembre 2000
DirectX 8.0 4.08.00.0400 (RC10) 12 novembre 2000
DirectX 8.0a 4.08.00.0400 (RC14) 5 février 2001
DirectX 8.1 4.08.01.0810 25 octobre 2001
4.08.01.0881 (RC7) 8 novembre 2001
DirectX 8.1a 4.08.01.0901 (RC?) 2002
DirectX 8.1b 4.08.01.0901 (RC7) 25 juin 2002
DirectX 8.2 4.08.02.0134 (RC0) 2002
DirectX 9.0 4.09.00.0900 (RC4) 19 décembre 2002
DirectX 9.0a 4.09.00.0901 (RC6) 26 mars 2003
DirectX 9.0b 4.09.00.0902 (RC2) 13 août 2003
DirectX 9.0c 4.09.00.0903  
4.09.00.0904 (RC0) 4 août 2004
4.09.00.0904 6 août 2004
DirectX 9.0c 4.09.00.0904 (RC0) août 2005
DirectX 9.25.1476 4.09.00.0905 (RC0) novembre 2008
DirectX 9.26.1590 4.09.00.0906 (RC0) mars 2009
DirectX 9.29.1962 4.09.00.090? (RC0) juin 2010
DirectX 10.0 6.00.6000.16386 30 novembre 2006
DirectX 10.1 6.00.6001.18000 18 mars 2008
DirectX 11 6.01.7600.16385 22 juillet 2009
DirectX 11* 7.00.6002.18107 26 octobre 2009

*. mise à jour Microsoft Vista SP2 et DirectX 11 Download details: Update for Windows Vista (KB971512) 7.00.6002.18107 version DirectX 11.

Compatibilité

Des API comme Direct3D et DirectSound interagissent directement avec le matériel par le biais de pilotes. Les fabricants de matériel doivent écrire ces pilotes pour une version spécifique du DirectX ‘Device Driver Interface’ (ou DDI). Des versions anciennes de DirectX incluaient un certain nombre de mises à jour de pilote DirectX mais cette pratique fut abandonnée au profit de Windows Update qui peut permettre aux utilisateurs de télécharger uniquement les pilotes propres à leur matériel. Les versions antérieures à DirectX 10 étaient vouées à être compatible avec des pilotes anciens, il était possible d’utiliser des versions plus récentes de DirectX avec des pilotes écrits pour supporter une version plus ancienne du DDI. Par exemple, un jeu s’appuyant sur Direct3D 9 pouvait fonctionner sur une machine équipée d’une carte n’ayant qu’un pilote développé à l’époque de DirectX 6. Par contre avec DirectX 10 sur Vista, compte tenu de l’ampleur des changements et du fait que certaines fonctionnalités exposées par l’API ne sont disponibles que grâce au nouveau modèle de pilote, il est impossible d’utiliser une application développée pour cette version de DirectX sans pilote correspondant au nouveau modèle de pilote WDDM. Plusieurs versions de DirectX sont préinstallées avec de nombreuses versions de Windows de façon à supporter des applications écrites avec des versions anciennes de cette API tant que celles-ci n’ont pas été réécrites pour la version la plus récente et continuent d’être utilisées.

.Net Framework

En 2002, Microsoft mettait à disposition des développeur une version du SDK DirectX amenant des assembly .Net permettant d’utiliser DirectX à partir de code managé, que cela soit en managed C++, C# ou tout autre langage supporté par le Framework .Net. Ces assembly étaient regroupés sous l’appellation « Managed DirectX » (ou MDX), et permettait d’obtenir des performances qui n’avait pas nécessairement à rougir de la comparaison avec ce qu’il était possible d’obtenir en C++ natif. En décembre 2005, février 2006, avril 2006 et août 2006, Microsoft mis à disposition des développeurs des mises à jour successives de cette technologie pour aboutir à la version 2.0 qui n’a jamais existé que sous la forme d’une version bêta ayant expiré le 5 octobre 2006. Au cours du GDC de 2006, Microsoft présenta le Framework XNA GSE, voué à être la nouvelle bibliothèque permettant aux développeurs souhaitant réaliser des jeux en utilisant un langage .Net d’accéder aux fonctionnalités DirectX. Ce Framework a par ailleurs pour objectifs de faciliter leur travail en regroupant des fonctionnalités qui pouvaient se trouver au préalable éparpillées dans des assembly différents. Ce Framework supporte aussi l’exécution des applications produites sur Xbox 360. La version RTM fut livrée le 11 décembre 2006, sous la forme d’un paquet téléchargeable gratuitement. Contrairement à DirectX ou à Managed DirectX, les composants du Framework XNA GSE ou les API issues de la Xbox 360 (XInput, XACT, etc.) ne sont pas préinstallés avec aucune version de Windows, aussi il est recommandé de les installer en même temps que tout jeu en faisant usage.

64 bits & 32 bits

DirectX toutes versions est compatible avec Windows 32 bits et 64 bits.

Alternatives

Il existe tout une série de bibliothèques qui couvre souvent des parties de DirectX. Utiliser une combinaison de celles-ci peut permettre d’obtenir le même panel de fonctionnalités, on peut citer — SDL, Allegro, OpenMAX, OpenML, OpenGL, OpenAL, FMODetc. Ces bibliothèques peuvent présenter l’avantage de permettre de développer des applications portable sur d’autres systèmes d’exploitation que Windows. Ces bibliothèques sont pour la plupart issues de projets open source.

D’autres projets comme une partie de Wine visent à fournir une implémentation alternative du même jeu de fonctionnalités.

Notes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article DirectX de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • DirectX — A component of Microsoft Windows Details Included with Windows 95 OSR2 Windows NT 4.0 and all subsequent releases Microsoft Direct …   Wikipedia

  • DirectX 10 — DirectX DirectX Développeur Microsoft Dernière version 11 (le …   Wikipédia en Français

  • Directx — Développeur Microsoft Dernière version 11 (le …   Wikipédia en Français

  • DirectX — Saltar a navegación, búsqueda DirectX Desarrollador Microsoft www.microsoft.com/windows/directx Información general …   Wikipedia Español

  • DirectX — DirectX,   ursprünglich eine von Microsoft entwickelte Schnittstelle für Windows 95 und Windows NT, die für Multimediaanwendungen (Spiele, Simulationen usw.) vorgesehen war; mittlerweile ist diese Multimedia Programmierschnittstelle ein… …   Universal-Lexikon

  • DirectX — es una colección de APIs creadas para facilitar tareas relacionadas con la programación de juegos en la plataforma Microsoft Windows. El kit de desarrollo de DirectX es distribuido gratuitamente por Microsoft. Las bibliotecas de DirectX eran… …   Enciclopedia Universal

  • DirectX — Microsoft DirectX Entwickler Microsoft Corporation Aktuelle Version 11.0 (22. Oktober 2009) …   Deutsch Wikipedia

  • Directx — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia

  • DirectX — Microsoft DirectX Тип …   Википедия

  • DirectX — ▪ computer programming       a set of APIs (application programming interfaces) designed to handle multimedia tasks on Microsoft Corporation s Windows OS ( operating system). Developed in 1995, DirectX represented Microsoft s effort to make… …   Universalium