Qu'est ce que Direct X, et pourquoi les jeux continuent-ils à demander différentes versions?

Je n'ai pas beaucoup d'expérience avec les ordinateurs et je me demandais ce que Direct X fait réellement sur mon PC.

Pourquoi les différents jeux demandent-ils des versions différentes? La version la plus récente devrait-elle couvrir tous ceux-ci ou certains jeux ne supportent-ils que des versions spécifiques?

TL; DR: DirectX est une bibliothèque redistribuée qui aide le jeu à parler de votre matériel. DirectX devrait prendre en charge les versions antérieures, et, comme le suggère PTwr, est souvent le coupable des messages DLL d3dx9_ [somenumber] .dll manquants. La version requise doit toujours être incluse dans le processus d'installation d'un jeu, donc vous finissez souvent avec plusieurs versions.

DirectX est simplement le logiciel au milieu, qui agit comme le traducteur entre votre carte graphique et le jeu que vous jouez, entre autres 1 . Il est essentiel que vous ayez la version requise par le jeu vidéo ou plus haut. Pour autant que je l'ai vu, avoir la version plus récente ne devrait pas être un problème; Cependant, je n'ai jamais vu un jeu qui ne venait pas avec la version requise de DirectX dans son installateur, donc il ne devrait vraiment pas y avoir de problème de toute façon.

Les versions plus récentes de DirectX fonctionnent avec des fonctions de carte graphique plus récentes; Par exemple, un jeu utilisant DirectX 9 a moins de travail graphiquement qu'un jeu utilisant DirectX 10, théoriquement. Cela ne tient pas compte de la capacité du développeur, bien sûr.

Pour expliquer pourquoi nous en avons besoin, chaque carte graphique d'ordinateur parle une langue différente. Un ensemble de cartes du même fabricant pourrait parler presque la même langue, mais ce ne sera pas exact, comme deux personnes parlant chinois, sauf avec des dialectes différents. Dans les premiers jours du jeu par ordinateur, vous devriez vous assurer que votre carte graphique a été répertoriée comme une carte prise en charge. Vous devriez passer par une petite liste de cartes et essayer de trouver votre numéro de modèle exact. Et si les développeurs ont décidé qu'ils ne voulaient pas volontairement ajouter le support, trop mal. Les ordinateurs peuvent être incroyablement difficiles à travailler, même avec la moindre incohérence. Un arrêt complet au mauvais endroit pourrait causer l'écrasement de votre système entier.

DirectX a été créé comme moyen de lutter contre ce problème évident. Les développeurs de jeux écriraient pour utiliser les bibliothèques DirectX, tout comme les fabricants de cartes graphiques. Ces jours-ci, au lieu d'avoir à rechercher votre modèle de carte entre une liste de centaines potentielles de modèles classés, vous devez simplement vous assurer que votre carte graphique est compatible avec cette version de DirectX.

Comme note secondaire, DirectX a été créé par Microsoft. En conséquence, tout jeu avec des exigences express DirectX ne fonctionnera probablement correctement que sur Windows. C'est pourquoi il est assez difficile de jouer la plupart des jeux sur un système * nix ou Mac.

1 DirectX a grandi pour faciliter d'autres fonctions multimédias, sous Windows, mais elle est principalement associée aux capacités graphiques. Techniquement, le composant graphique de DirectX s'appelle Direct3D, tandis que d'autres parties incluent DirectShow pour les médias, DirectWrite pour les polices, etc.

DirectX est une bibliothèque spéciale qui permet aux programmes (généralement les jeux) d'accéder à la carte vidéo plus "directement" (donc Direct Direct). Il se trouve entre les pilotes de la carte graphique et le système d'exploitation.

Retour dans les jours pré-DirectX, les programmes Windows avaient l'une des deux options s'ils avaient besoin de parler à la carte vidéo:

  • L'option 1 était qu'ils pouvaient écrire sur la carte via l'API Windows. Ils remettent leurs demandes à Windows, et Windows fait beaucoup de choses en arrière-plan et finit par se contenter d'écrire ces données sur la carte graphique. La plupart des jeux 2D plus anciens pourraient se passer par cela (pensez Minesweeper et Solitare, par exemple) car la latence n'était pas vraiment un problème pour eux.
  • L'option deux était qu'ils pouvaient écrire contre les pilotes de la carte vidéo eux-mêmes. Cela signifiait que vous aviez besoin de prendre en charge différentes versions du moteur de rendu de votre programme selon le matériel installé sur le PC. Pas précisément la solution optimale, mais cela a fonctionné beaucoup plus rapidement.

Au fur et à mesure que les exigences de performance augmentaient et que les cartes vidéo devenaient de plus en plus sophistiquées, les normes ont commencé à apparaître. Deux des plus grandes normes antérieures étaient (et sont encore, bien qu'elles aient évolué) OpenGL et DirectX. Les deux ont été mis en œuvre dans les pilotes de la carte vidéo, mais ont été exposés par Windows. DirectX est venu de Microsoft et n'est officiellement pris en charge par Windows, et OpenGL provient de SGI et est une spécification ouverte. (DirectX comprend également un tas d'autres choses qui ne sont pas liées à la carte vidéo, mais j'ignore cela pour les besoins de cette réponse)

Avec l'une ou l'autre de ces normes, vous pouvez écrire un programme qui a un contrôle direct sur la carte vidéo sans avoir à vous soucier de qui l'établit, aussi longtemps qu'ils mettent en œuvre la norme que vous avez choisie.

Maintenant, nous arrivons à l'installation de DirectX. Les parties DirectX de Windows sont livrées avec des versions récentes du système d'exploitation, mais DirectX est une norme qui évolue à mesure que les cartes vidéo et les programmes qui les utilisent augmentent et changent. Ainsi, Microsoft met en place les installateurs qui peuvent être regroupés avec des jeux pour amener la version de DirectX sur votre machine à la version requise par le jeu.

Il est tout à fait sûr d'installer une ancienne version du package redistribuable DirectX, comme si le programme d'installation de DirectX se rend compte qu'il est dépassé par rapport à ce qui se passe sur votre machine, il sort simplement sans rien faire. Il existe également différentes versions majeures de DirectX avec lesquelles un jeu pourrait être créé avec (comme DirectX 9 ou DirectX 11), mais ces versions coexistent paisiblement et ont leurs propres versions installées en même temps.

DirectX est trois choses différentes selon que vous êtes un joueur ou un développeur et quelle version de Windows vous utilisez. DirectX était un add-on qui pourrait être mis à niveau dans les anciennes versions de Windows, mais dans les versions actuelles de Windows DirectX est un composant du système d'exploitation qui ne peut pas être mis à niveau. C'est aussi un SDK que les développeurs utilisent pour créer des jeux qui utilisent DirectX. Ces jours où un jeu installe DirectX, il est en train d'installer une partie du SDK DirectX, et non DirectX lui-même, qui doit être redistribué aux utilisateurs. Il est toujours sûr de le faire. Cela peut finir par ne rien faire parce que ce qu'il installe est déjà là, mais il ne réduira jamais la version de DirectX. Étant donné que toutes les versions de DirectX sont compatibles avec les versions antérieures, il n'est pas nécessaire de rebondir.

DirectX en tant que complément

DirectX était essentiellement un add-on pour Windows avant Windows XP SP2. Il n'a pas été considéré comme une partie du système d'exploitation Windows lui-même, et à Microsoft, une équipe différente de développeurs "DirectX" a travaillé sur le produit séparément des développeurs "Windows". Bien qu'il ait été livré avec Windows depuis Windows 95 OSR2 et Windows NT 4.0, il pourrait être mis à niveau séparément du système d'exploitation et n'a donc pas été considéré comme une partie de celui-ci.

C'est à partir de cette époque que nous obtenons toute la notion de jeux installant DirectX. Ces jours-ci, ce n'est pas vraiment ce qui se passe, mais il semblerait que les jeux installent ou mettent à niveau DirectX. Si un jeu utilisait les interfaces DirectX 7, il inclurait habituellement l'installateur d'exécution DirectX 7 et l'installerait dans le cadre de l'installation du jeu. Si DirectX 7 ou plus récent était déjà installé, le programme d'installation d'exécution ne ferait rien. Sinon, il installerait ou mettrait à niveau DirectX.

DirectX en tant que composant OS

Ces jours, DirectX est considéré comme une partie de Windows, qui ne peut être mis à niveau séparément. Si vous utilisez Windows XP SP2 ou SP3, Windows Vista, Windows 7, Windows 8 ou Windows 10, les jeux ne peuvent pas réellement mettre à niveau la version de DirectX que vous utilisez. Bien qu'ils puissent venir avec l'installateur d'exécution DirectX 9.0c, la dernière version de DirectX dont Microsoft en a fourni une, elle ne mettra pas à niveau la version de DirectX que vous avez installée car DirectX 9.0c ou version ultérieure est déjà installée.

DirectX en tant que SDK

DirectX a également utilisé un composant SDK (Kit de développement logiciel) séparé. Le SDK a fourni les fichiers et la documentation nécessaires aux développeurs pour créer des jeux et des applications qui utilisent DirectX. Il contenait également un code de support écrit par Microsoft conçu pour créer des jeux qui utilisaient DirectX plus facilement.

En particulier, il fournissait la bibliothèque D3DX, qui contenait un code conçu pour être utilisé avec des jeux qui utilisaient Direct3D. Bien que Direct3D ait permis aux programmeurs de faire des choses qu'ils ne pourraient pas faire sans cela, c'est-à-dire accéder au matériel de rendu accéléré d'une carte vidéo, la bibliothèque D3DX était tout un code que les programmeurs pouvaient s'écrire. Il suffit de les éviter d'avoir à le faire. Parce qu'il n'était pas nécessaire et n'a rien fait de spécial, il n'a pas été fourni dans le cadre de l'exécution DirectX. Les développeurs pourraient simplement inclure n'importe quelle partie de celui-ci dans leurs jeux qu'ils souhaitaient utiliser, le cas échéant. Le code D3DX deviendrait une partie intégrante du jeu, généralement dans le cadre de l'exécutable du jeu (.EXE), comme s'ils l'avaient écrit eux-mêmes.

Cependant un jour, Microsoft a décidé de modifier la façon dont les développeurs ont été autorisés à utiliser la bibliothèque D3DX. Ils l'ont transformé en une DLL que le jeu aurait installé si vous vouliez l'utiliser, de la même manière que les jeux utilisés pour installer DirectX. En fait, ils ont utilisé le même installateur pour les deux. Le programme d'installation fourni par Microsoft installerait l'exécution DirectX 9.0c et / ou la DLL D3DX en fonction des fichiers qui ont été emballés avec elle.

Ainsi, alors que les jeux modernes incluent un programme d'installation de DirectX qui ne va pas installer DirectX, il installera souvent une DLL D3DX (et / ou l'une des nombreuses DLL fournies avec le SDK DirectX). Chaque version du SDK DirectX fourni avec une DLL D3DX avait sa propre DLL numérotée séparément (de d3dx9_24.dll à d3d9_43.dll . Chaque jeu n'installe que la version de la DLL qu'ils utilisent, donc il est possible même si d'autres jeux ont " Installé DirectX ", ils n'ont pas installé la version de D3DX nécessaire au jeu que vous installez maintenant.

Aujourd'hui, Microsoft ne fournit plus de SDK DirectX séparé. Comme dans le cas où l'exécution de DirectX faisait partie du système d'exploitation Windows, Direct SDK fait désormais partie du SDK de Windows. Ils ont également cessé de mettre à jour la bibliothèque D3DX. Au lieu de cela, Microsoft recommande aux développeurs d'utiliser des bibliothèques "tierces" qu'ils peuvent inclure avec leurs jeux et n'ont pas besoin d'être installées séparément.

Les jeux qui installent DirectX aujourd'hui

Lorsque le jeu installe DirectX, ne vous inquiétez pas. Si vous demandez si vous souhaitez installer DirectX, dire "oui" est l'option la plus sûre. Les installateurs d'exécution DirectX ne réduiront pas la version de DirectX installée. Non seulement ils ne le feront pas, Windows les empêcherait s'ils essayaient, car DirectX est maintenant une partie protégée du système d'exploitation. Alors que sur une version moderne de Windows, il ne changera pas réellement la version de DirectX, le programme d'installation peut encore installer des DLL dont le jeu a besoin.

Compatibilité DirectX

DirectX est également entièrement compatible en arrière. Si vous utilisez Windows 10, vous n'avez pas seulement les dernières interfaces DirectX 12, mais Windows fournit également toutes les interfaces précédentes. En cas d'autre incompatibilité, vous pouvez jouer à des jeux conçus pour Windows 95 et la version originale de DirectX.

D'autre part, si vous utilisez Windows Vista, vous n'avez que les interfaces DirectX 10 disponibles. Vous ne pouvez pas jouer à des jeux nécessitant DirectX 11 ou 12. Vous ne pouvez pas non plus passer à DirectX 11 ou 12. Pour jouer à des jeux nécessitant DirectX 11, vous devriez passer à Windows 7 au moins. Si vous souhaitez profiter Des fonctionnalités d'un jeu nécessitant DirectX 12 alors vous devriez passer à Windows 10.