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, Xbox 360, Xbox One, Xbox Series et les systèmes d’exploitation Windows).
Les différentes bibliothèques À 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 et qui 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 , l' et puis la Xbox X et S).
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 . 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, par exemple dans le secteur de la CAO/DAO 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 ), 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 ; sur les versions récentes, 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 est propriétaire et les sources ne sont pas accessibles. Les sources des exemples du SDK sont disponibles avec celui-ci.
Version
Les versions de étaient utilisées par Windows Vista. Ces deux versions faisaient usage de fonctionnalités propres au nouveau modèle de pilote apparu avec Windows Vista. La nouvelle infrastructure graphique de Windows supporte la virtualisation du matériel graphique vis-à-vis de multiples applications et services par exemple le (le gestionnaire de de Vista lorsque Aero est activé). Précédemment avec Windows XP, les applications avaient un accès exclusif à la carte graphique et pouvaient accaparer les ressources de celle-ci.
Depuis le , les dernières versions disponibles de DirectX sont :
DirectX 12 pour et DirectX 11 pour , Windows Vista et DirectX 9.0c pour les versions antérieures de Windows
Composants Les composants constituant DirectX sont : DirectX , 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 (), remplacée par Direct2D. : remplace, en plus complet, DirectDraw. Disponible pour , et pour Vista sous forme de mise à jour. DirectWrite : pour les polices. Offre notamment un anticrénelage bidirectionnel. Disponible pour , et pour Vista sous forme de mise à jour. Direct3D (D3D) : Pour les graphismes 3D. : Pour énumérer les cartes et les écrans et gérer les pour 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 est obsolète depuis la . Xinput : gère les entrées manette . API de nouvelle génération qui remplace DirectInput. Supporté par les contrôleurs compatibles avec la . DirectPlay : facilite la communication sur un réseau local ou non. N’est plus mis à jour depuis la .. DirectSound : permet de jouer et d’enregistrer des sons au format . DirectSound3D (DS3D) : permet de jouer des sons positionné dans un espace 3D. Cette API est obsolète. Xaudio : API sonores remplaçant DirectSound. Tire parti de la vitesse des microprocesseurs modernes afin de mixer un très grand nombre de canaux. : API sonore haut niveau, construite à partir de Xaudio, permet de faciliter la programmation du son, avec notamment son propre format de banque sonore. : pour jouer des morceaux produit à l’aide de l’outil . : 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. Depuis , DirectShow ne fait plus partie du SDK DirectX et a été déplacé dans le . DirectX pour des effets web, et Direct3D pour faire de la 3D avec une API de plus haut niveau. DirectShow contient aussi DirectX pour effectuer des opérations sur les signaux audio et (DXVA) pour bénéficier d’une décompression matérielle des contenus vidéo compressés. : composants additionnels pour des applications en rapport avec les , encodeurs, décodeurs, effets. : 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 (s’appuyant sur et des portions de DirectSound) ainsi que la bibliothèque graphique de XNA.. : API apparue lors du lancement de , visant à utiliser la puissance de calcul des GPU de (ATI HD---- ou Nvidia GT- ---). 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 », « » ou encore « OpenCL », ont été mises à disposition des développeurs. Voir GPGPU DirectML une API pour l'apprentissage automatique.
Historique Jusqu'à DirectX 9 vignette|Logo de . En 1994, Microsoft était sur le point de lancer son système d’exploitation, . Un des facteurs déterminants du succès de tout système d’exploitation (OS) reste la gamme des logiciels qu’il permet d’exécuter. Trois employés de Microsoft é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 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 à 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 sous l’appellation de . Il s’agissait du remplaçant pour Win32 de et de l’API WinG disponible pour . 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 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 à 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 moyens financiers importants 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 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 des bibliothèques comme SDL remplissent aussi ces besoins et sont aussi largement utilisées.
Dans sa version console, DirectX a été utilisé comme une épine dorsale des API proposés pour développer sur Xbox et . 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 à , elle portait le nom DirectXbox, ce qui fut raccourci en Xbox pour obtenir le nom commercial.
En 2002, Microsoft livrait qui bénéficiait d’un support pour des plus long et la des . Depuis, Microsoft n’a cessé de faire évoluer en ajoutant par exemple le support du avec la version , livrée en .
En , DirectShow a été déplacé du SDK DirectX vers . En revanche, DirectX est toujours nécessaire pour compiler les exemples DirectShow.
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 sont profonds, mais seule la partie Direct3D est réellement concernée par ceux-ci. De nombreuses parties de l'API DirectX 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 disparu 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 : offre les mêmes fonctionnalités que la version de disponible pour . Ce sera la seule version disponible tant qu’un pilote n’aura pas été installé avec Vista, par exemple juste après une mise à jour alors que seul un (XPDM) est présent.
Direct3D 9Ex (aussi connu comme 9.0L ou 9.L, le L faisant référence à , 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 . L’interface Windows Aero s’appuie sur et utilise certaines des fonctionnalités non présentes dans comme la possibilité de partager des surfaces DirectX entre plusieurs processus.