Was ist Direct X, und warum halten die Spiele auf der Suche nach verschiedenen Versionen?

Ich bin nicht sehr erfahren mit Computern und habe mich gefragt, was Direct X eigentlich tut, auf meinem PC.

Warum haben verschiedene Spiele verschiedene Versionen? Sollte die neueste Version alle von ihnen abdecken oder bestimmte Spiele nur bestimmte Versionen unterstützen?

TL; DR: DirectX ist eine umverteilte Bibliothek, die dem Spiel hilft, mit Ihrer Hardware zu sprechen. DirectX sollte frühere Versionen unterstützen, und wie PTwr vorschlägt, ist oft der Schuldige von "fehlenden DLL d3dx9_ [somenumber] .dll" Nachrichten. Die erforderliche Version sollte immer als Teil eines Spiels Installationsprozess enthalten sein, so dass Sie oft am Ende mit mehreren Versionen.

DirectX ist einfach die Software in der Mitte, die als Übersetzer zwischen Ihrer Grafikkarte und dem Spiel spielt, das Sie spielen, unter anderem 1 . Es ist wichtig, dass Sie die Version von der Videospiel oder höher haben. Soweit ich gesehen habe, sollte die neuere Version kein Problem sein; Allerdings habe ich noch nie ein Spiel gesehen, das nicht mit der benötigten DirectX-Version in seinem Installateur gekommen ist, also sollte es wirklich kein Problem sein.

Neuere Versionen von DirectX arbeiten mit neueren Grafikkarten-Features; Zum Beispiel, ein Spiel mit DirectX 9 hat weniger zu arbeiten mit grafisch als ein Spiel mit DirectX 10, theoretisch. Das ist natürlich nicht für die Entwicklerfähigkeit verantwortlich.

Um zu erarbeiten, warum wir es brauchen, spricht jede Computergrafikkarte eine andere Sprache. Ein Satz von Karten des gleichen Herstellers könnte fast die gleiche Sprache sprechen, aber es wird nicht genau sein, wie zwei Leute, die Chinesisch sprechen, außer mit verschiedenen Dialekten. In den frühen Tagen des Computerspiels musst du dafür sorgen, dass deine Grafikkarte tatsächlich als unterstützte Karte aufgeführt wurde. Sie müssten durch eine kleine Liste von Karten gehen und versuchen, Ihre genaue Modellnummer zu finden. Und wenn die Entwickler entschieden haben, wollten sie nicht absichtlich die Unterstützung hinzufügen, zu schlecht. Computer können unglaublich schwierig zu arbeiten, auch mit der geringsten Inkonsequenz. Ein vollständiger Stopp an der falschen Stelle könnte dein ganzes System abstürzen.

DirectX wurde als Mittel zur Bekämpfung dieses offensichtlichen Problems geschaffen. Game-Entwickler würden schreiben, um die DirectX-Bibliotheken zu verwenden, genauso wie Grafikkartenhersteller. In diesen Tagen, anstatt nach Ihrem Kartenmodell zwischen einer Liste von potenziell Hunderten von aufgelisteten Modellen zu suchen, müssen Sie stattdessen nur sicherstellen, dass Ihre Grafikkarte mit dieser DirectX-Version kompatibel ist.

Als Nebennote wurde DirectX von Microsoft erstellt. Als Ergebnis wird jedes Spiel mit Express DirectX-Anforderungen wahrscheinlich nur richtig laufen unter Windows. Deshalb ist es ziemlich schwierig, die meisten Spiele auf einem * nix- oder Mac-basierten System zu spielen.

1 DirectX ist gewachsen, um andere Medienfunktionen in Windows zu erleichtern, aber es ist in erster Linie mit den grafischen Fähigkeiten verbunden. Technisch gesehen ist die Grafikkomponente von DirectX als Direct3D bekannt, während andere Teile DirectShow für Medien, DirectWrite für Schriften usw. enthalten.

DirectX ist eine spezielle Bibliothek, die es erlaubt, Programme (in der Regel Spiele) auf die Grafikkarte zugreifen zu können "direkt" (also die Direct in DirectX). Es sitzt zwischen den Fahrern der Grafikkarte und dem Betriebssystem.

Zurück in den Pre-DirectX-Tagen hatten Windows-Programme eine von zwei Optionen, wenn sie mit der Grafikkarte sprechen mussten:

  • Option eins war, dass sie über die Windows API auf die Karte schreiben konnten. Sie übergeben ihre Anfragen an Windows, und Windows macht ein paar Sachen im Hintergrund und bekommt schließlich, um diese Daten auf die Grafikkarte zu schreiben. Die meisten älteren 2D-Spiele könnten mit diesem (denken Minesweeper und Solitare, zum Beispiel) als Latenz war nicht wirklich ein Problem für sie.
  • Option zwei war, könnten sie gegen die Treiber der Karte selbst schreiben. Dies bedeutete, dass Sie verschiedene Versionen der Rendering-Engine Ihres Programms unterstützen mussten, je nachdem, welche Hardware auf dem PC installiert wurde. Nicht genau die optimale Lösung, aber es hat viel schneller gearbeitet.

Als die Leistungsanforderungen wuchsen und als Videokarten immer anspruchsvoller wurden, begannen Standards zu entstehen. Zwei der größten frühen Standards waren (und sind immer noch, obwohl sie sich entwickelt haben) OpenGL und DirectX. Beide wurden in den Grafikkartentreibern implementiert, wurden aber von Windows ausgesetzt. DirectX kam von Microsoft und wird nur offiziell auf Windows unterstützt und OpenGL kam von SGI und ist eine offene Spezifikation. (DirectX enthält auch eine Reihe von anderen Sachen, die nicht Grafikkarte verwandt ist, aber ich ignoriere das für die Zwecke dieser Antwort)

Mit einem dieser Standards können Sie ein Programm schreiben, das die direkte Kontrolle über die Grafikkarte hat, ohne sich darum kümmern zu müssen, wer es macht, so lange wie sie den von Ihnen gewählten Standard implementieren.

Jetzt kommen wir zur DirectX Installation. Die DirectX-Teile von Windows-Schiff mit den neuesten Versionen des Betriebssystems, aber DirectX ist ein Standard, der dazu neigt, als Grafikkarten und Programme zu entwickeln, die sie wachsen und ändern. So stellt Microsoft Installateure zur Verfügung, die mit Spielen gebündelt werden können, um die Version von DirectX auf deinem Gerät auf die von dem Spiel benötigte Version zu bringen.

Es ist völlig sicher, eine ältere Version des DirectX-Weiterverbreitungspakets zu installieren, als ob das DirectX-Installationsprogramm erkennt, dass es veraltet ist, verglichen mit dem, was auf deiner Maschine ist, es einfach nur ohne etwas zu verlassen. Es gibt auch verschiedene Hauptversionen von DirectX, mit denen ein Spiel erstellt werden kann (wie DirectX 9 oder DirectX 11), aber diese Versionen fälschlich koexistieren und ihre eigenen Versionen gleichzeitig installiert haben.

DirectX ist drei verschiedene Dinge je nachdem, ob Sie ein Spieler oder ein Entwickler und welche Version von Windows Sie verwenden. DirectX verwendet werden, um Add-on, die in älteren Versionen von Windows aktualisiert werden könnte, aber in aktuellen Versionen von Windows DirectX ist eine Komponente des Betriebssystems, die nicht aktualisiert werden können. Es ist auch ein SDK, das Entwickler verwenden, um Spiele zu erstellen, die DirectX verwenden. In diesen Tagen, wenn ein Spiel installiert DirectX ist es tatsächlich Installation eines Teils des DirectX SDK, nicht DirectX selbst, das bedeutet, um Benutzer weiterverbreitet werden. Es ist immer sicher, dies zu tun. Es kann am Ende nichts tun, denn was es installiert ist schon da, aber es wird niemals die Version von DirectX herunterstufen. Da alle Versionen von DirectX rückwärts kompatibel mit früheren Versionen sind, gibt es auch keine Notwendigkeit zu Downgrade.

DirectX als Add-on

DirectX verwendet, um im Wesentlichen ein Add-on zu Windows vor Windows XP SP2. Es wurde nicht als Teil des Windows-Betriebssystems selbst betrachtet, und bei Microsoft arbeitete ein anderes Team von "DirectX" -Entwicklern das Produkt separat von den "Windows" -Entwicklern. Während es mit Windows seit Windows 95 OSR2 und Windows NT 4.0 ausgeliefert wurde, konnte es separat vom Betriebssystem aktualisiert werden und wurde daher nicht als Teil davon angesehen.

Es ist aus dieser Zeit, dass wir die ganze Vorstellung von Spielen, die DirectX installieren, bekommen. In diesen Tagen ist das nicht wirklich was passiert, aber es war früher, dass Spiele tatsächlich installieren oder aktualisieren DirectX. Wenn ein Spiel die DirectX 7-Schnittstellen verwendet, dann würde es normalerweise das DirectX 7-Laufzeitinstallateur beinhalten und es anbieten, es als Teil der Installation des Spiels zu installieren. Wenn DirectX 7 oder neuer noch installiert wurde, würde der Runtime-Installer nichts machen. Wenn nicht, würde es DirectX installieren oder aktualisieren.

DirectX als OS-Komponente

In diesen Tagen DirectX gilt als Teil von Windows, eine, die nicht separat aktualisiert werden kann. Wenn Sie Windows XP SP2 oder SP3, Windows Vista, Windows 7, Windows 8 oder Windows 10 verwenden, können Spiele die Version von DirectX, die Sie verwenden, nicht wirklich aktualisieren. Während sie mit DirectX 9.0c Runtime-Installer kommen könnten, die letzte Version von DirectX, die Microsoft zur Verfügung gestellt hat, wird es nicht aktualisieren die Version von DirectX Sie installiert haben, da DirectX 9.0c oder höher bereits installiert ist.

DirectX als SDK

DirectX hat auch eine separate SDK (Software Development Kit) Komponente verwendet. Das SDK stellte die Dateien und Dokumentation der Entwickler zur Verfügung, um Spiele und Anwendungen zu erstellen, die DirectX verwenden. Es enthielt auch Support-Code von Microsoft geschrieben, um das Erstellen von Spielen, die DirectX einfacher zu machen.

Insbesondere gab es die D3DX-Bibliothek, die Code enthielt, entworfen, um mit Spielen verwendet zu werden, die Direct3D benutzten. Während Direct3D erlaubt Programmierer, Dinge zu tun, die sie nicht ohne sie tun konnten, das heißt, Zugriff auf eine Videokarte beschleunigte Rendering-Hardware, die D3DX-Bibliothek war alles Code, den Programmierer sich selbst geschrieben haben könnte. Es hat sie nur gerettet. Weil es nicht nötig war und nichts Besonderes tat, wurde es nicht als Teil der DirectX-Laufzeit bereitgestellt. Entwickler könnten einfach, was auch immer Teile davon in ihren Spielen, die sie verwenden wollten, wenn überhaupt. Der D3DX-Code wäre ein integraler Bestandteil des Spiels, in der Regel als Teil des Spiels ausführbare (.EXE), so als hätten sie es selbst geschrieben.

Doch eines Tages beschloss Microsoft, zu ändern, wie Entwickler die D3DX-Bibliothek benutzen dürfen. Sie machten es in eine DLL, dass das Spiel installiert haben würde, wenn das wollte es verwenden, ähnlich wie Spiele verwendet, um die DirectX-Laufzeit zu installieren. In der Tat haben sie den gleichen Installateur für beide verwendet. Das von Microsoft bereitgestellte Installationsprogramm würde entweder die DirectX 9.0c-Laufzeit und / oder die D3DX-DLL installieren, je nachdem, welche Dateien mit ihm verpackt wurden.

So, während moderne Spiele ein DirectX-Installationsprogramm beinhalten, das DirectX nicht wirklich installieren wird, wird es oft eine D3DX-DLL (und / oder eine von einer Reihe von anderen DLLs, die mit DirectX SDK bereitgestellt werden) installieren. Jede Version des DirectX SDK, die mit einer D3DX DLL kam, hatte eine eigene, separat nummerierte DLL (von d3dx9_24.dll zu d3d9_43.dll Spiel installiert nur die Version der DLL, die sie verwenden, also ist es möglich, auch wenn viele andere Spiele " Installiert DirectX ", haben sie nicht installiert die Version von D3DX benötigt, um das Spiel, das Sie jetzt installieren.

In diesen Tagen bietet Microsoft kein separates DirectX SDK mehr. Wie die DirectX-Laufzeit zum Windows-Betriebssystem wurde, ist das Direct SDK nun Teil des Windows SDK. Sie haben auch die Aktualisierung der D3DX-Bibliothek aufgehört. Stattdessen empfiehlt Microsoft, dass Entwickler "Drittanbieter" -Bibliotheken verwenden, die sie mit ihren Spielen einbeziehen können und nicht separat installieren müssen.

Spiele, die DirectX heute installieren

Wenn das Spiel DirectX installiert, mach dir keine Sorgen. Wenn es fragt, ob Sie, wenn Sie DirectX installieren wollen, dann sagen "Ja" ist die sicherste Option. Die DirectX-Laufzeitinstallateure werden die Version von DirectX nicht heruntersetzen. Nicht nur werden sie nicht, Windows würde sie verhindern, wenn sie es versuchten, da DirectX jetzt ein geschützter Teil des Betriebssystems ist. Während auf einer modernen Version von Windows wird es nicht wirklich ändern die Version von DirectX installiert, kann das Installationsprogramm noch installieren DLLs, die das Spiel braucht.

DirectX-Kompatibilität

DirectX ist auch komplett rückwärts kompatibel. Wenn du Windows 10 hast, dann hast du nicht nur die neuesten DirectX 12 Schnittstellen, Windows bietet auch alle bisherigen Schnittstellen. Baring einige andere Inkompatibilität, können Sie Spiele für Windows 95 und die ursprüngliche Version von DirectX entworfen.

Auf der anderen Seite, wenn Sie Windows Vista laufen, haben Sie nur die DirectX 10 Schnittstellen zur Verfügung. Sie können keine Spiele spielen, die DirectX 11 oder 12 benötigen. Sie können auch nicht auf DirectX 11 oder 12 aktualisieren. Um Spiele zu spielen, die DirectX 11 benötigen, müssten Sie auf mindestens Windows 7 aktualisieren. Wenn Sie profitieren möchten Der Features in einem Spiel, das DirectX 12 benötigen dann musst du auf Windows 10 aktualisieren.