DirectX [ (AE) bzw. (BE)] ist eine Sammlung COM-basierter Programmierschnittstellen für multimediaintensive Anwendungen (insbesondere Computerspiele) auf der Windows-Plattform. Sie kommt u. a. auch auf der Spielkonsole Xbox zum Einsatz und schließt auch einige Multimedia-Fähigkeiten ein, die beispielsweise auch vom Windows Media Player genutzt werden.

Die DirectX-Sammlung von Software-Komponenten deckt nahezu den gesamten Multimediabereich ab. Vorrangig wird es bei der Darstellung komplexer 2D- und 3D-Grafik eingesetzt, bietet aber auch Unterstützung für Audio, diverse Eingabegeräte (zum Beispiel Maus, Joystick und Controller) und Netzwerkkommunikation.

Entwicklungsgeschichte

Vorgeschichte und MS-DOS Nachdem sich seit Ende der 1980er Jahre der IBM-kompatible PC mit dem Betriebssystem MS-DOS als „Computer für Jedermann“ durchgesetzt hatte, setzten sich ein paar Jahre später auch zunehmend grafischen Benutzeroberfläche durch. In den 1990ern wurden die verbreiteten DOS-Anwendungen zunehmend für Microsoft Windows portiert und viele neue Anwendungen wurden für Windows mithilfe der WinAPI entwickelt. Computerspiele und Multimedia-Anwendungen blieben jedoch meist außen vor, da sowohl die etablierten Heimcomputer als auch MS-DOS auf dem PC mit einer Vielzahl an kommerziell erhältlichen Softwarepaketen bessere Schnittstellen für Entwickler und bessere Multimediafähigkeiten für Anwender boten.

Windows bot zu diesem Zeitpunkt noch keine optimierten Programmierschnittstellen für schnelle Grafik- und Audio-Operationen an, die für die meisten Spiele aber unabdingbar waren und einen wichtigen Kaufanreiz darstellten. Das Single-Task-System MS-DOS erlaubte die völlige Kontrolle über den Prozessor und den ungehinderten Zugriff auf die gesamte angeschlossene Hardware, die nicht mit anderen, gleichzeitig laufenden Anwendungen geteilt werden musste. Mit der Umstellung auf das Multi-Task-System Microsoft Windows mussten Programme ihren gemeinsamen Platz auf dem PC sorgfältig verwalten. Die gewünschte Interoperabilität zwischen den Programmen auf knappen Hardware-Ressourcen drängte Fragen der Ausführungssicherheit und Stabilität seitens des Betriebssystems in den Hintergrund. Speicherüberläufe und Zugriffsverletzungen konnten häufiger auftreten. Microsoft schenkte der Unterhaltungsindustrie (Musik, Filme und Spiele) wenig Beachtung und setzte in der Anfangszeit von Windows den Schwerpunkt auf Geschäftsanwendungen.

Übergang von der 2D- zur 3D-Grafik Mit verbesserten Produkten der Halbleiter- und Mikrochip-Industrie wuchs auch die Nachfrage nach Anwendungen, die diese neuen Möglichkeiten immer besser ausreizen konnten. Spielentwickler versuchten sich am Markt gegenseitig mit Innovationen in den Bereichen Grafik und Spielspaß auf jeder Hardware zu übertreffen, doch ihre Möglichkeiten blieben im Heimanwenderbereich beschränkt. 3D-Computergrafik war zu dieser Zeit professionellen Anwendern aus der Industrie vorbehalten. Die dafür notwendige Hardware war entsprechend teuer. Der Verbraucher sah die Ergebnisse dieser Anwendungen am häufigsten als Spezialeffekt in Filmen, als Trenner bei TV-Sendungen oder in der Werbung. Doch die Möglichkeiten für bessere Spielerlebnisse im eigenen Zuhause erreichten eine technische Grenze mit Heimgeräten, die nur eine geringe Auflösung, einen begrenzten Farbumfang und ausreichend Rechenleistung für 2D-Grafiken und Sprites boten. Der PC selbst bot bis auf Steckplätze für eigene Soundkarten oder anderes Zubehör nur die Fähigkeiten seiner Standardkomponenten.

Mit Spielen wie Star Fox für das Super Nintendo oder auch Spielen wie Wolfenstein 3D und Doom auf dem PC wurde das Jahr 1993 zu einem Schlüsseljahr, in welchem die Breite des Heimanwendermarktes erstmals in Kontakt mit 3D-Grafik in Echtzeit auf eigener Hardware im eigenen Zuhause kam. Diese Spiele umgingen viele der Beschränkungen ihrer Hardware durch eigene Chips (Star Fox) oder durch eine äußerst performante Rendering Engine, die am Ende nur den VGA-Grafikmodus und direkten Zugriff auf den Videospeicher benötigte, um ihre Grafik auf den PC-Bildschirm zu bringen.

Der VGA-Modus bot Entwicklern einen direkten und hardwarenahen Zugriff auf die Grafikdarstellung. Jedes Byte im Grafikspeicher entsprach einem Pixel. Ein volles Einzelbild aus 320 × 200 Pixeln mit je 256 Farben war demnach 64 kB groß. Durch Spiele, die einen direkten Hardwarezugriff nutzten, um diesen mit innovativer Grafik zu bespielen, bildete sich ein Markt heraus, der später von einer ganzen Branche für Echtzeit-Computergrafik bedient werden sollte, und der im Wesentlichen zwei Komponenten forderte: eigens für den Zweck der Grafikausgabe entwickelte Mikrochips und einen hardwarenahen Zugriff auf das System.

PC und Betriebssystem Seit jeher bestand das Problem bei der Entwicklung von Spielen für MS-DOS, dass Peripheriegeräte vom Spiel erkannt werden musste. Eingaben von Maus und Tastatur folgten dem IBM-Standard oder konnten vom Betriebssystem konfiguriert werden, doch für die Ausgabe von Sound standen dem Konsumenten eine Vielzahl an Soundkarten für seinen PC zur Verfügung, wenn er sich nicht mit dem eingebauten Systemlautsprecher begnügen wollte. Eine automatische Erkennung von Soundkarten vom Rest des Systems, wie sie heute üblich ist, gab es damals nicht. Häufig musste der Spieler bei der Installation des Spiels seine Soundkarte auswählen, damit das Spiel die Soundkarte mit dem richtigen Treiber ansprechen konnte, der dem Spiel beigelegt war. Das Bündeln von Spielen mit der notwendigen Treibersoftware wiederum kostete damals sehr teuren und sehr knappen Speicherplatz auf den Disketten, der dem Spiel selbst dann nicht mehr zur Verfügung stand. Außerdem haben verschiedene Spiele oft die gleiche Bibliothek an Treibern benutzt, was ihre mehrfache Speicherung auf den verschiedenen Disketten überflüssig erscheinen ließ. Neben Soundkarten betraf dieser Problemkomplex auch andere Erweiterungskarten, zu denen ihr Treiber stets beigelegt und im PC gesondert geladen werden musste.

Mit dem Aufkommen verbesserter Computergrafik im wiederbelebten Spielemarkt (Video Game Crash) zeichnete sich ab, dass die Soundkarte nicht die einzige spielwichtige Erweiterung bleiben würde. Gleichzeitig forderten Spiele mit verbesserter Grafik auch mehr Speicherplatz auf ihren Medien, sodass eine umfangreiche Treiberbibliothek, aus der ein Spieler nur einen einzigen brauchen würde, keinen Platz mehr auf den Medien haben würde. Außerdem bestand seitens der Industrie der Bedarf, Hardware weiterhin auf einer standardisierten Plattform ansprechen zu können, statt ihre Produkte für die verschiedenen Erweiterungskarten diversifizieren zu müssen.

Microsoft Durch die Spiele Doom und Wolfenstein 3D von id Software erkannte Microsoft das Potenzial für weitere Anwendungen im Heimbereich, die den Absatz des PCs erhöhen und andere Anbieter wie Commodore oder Apple aus dem Markt drängen würden. Windows eignete sich aus der Sicht von Spielentwicklern nicht für ihre Produkte, da das geschützte Speichermodell einen direkten Zugriff auf die Hardware behinderte. Microsoft musste folglich einen Weg finden, ihnen unter Windows denselben Zugriff zu ermöglichen, wie sie ihn unter MS-DOS gewohnt waren.

Zunächst veröffentlichte Microsoft WinG, einen Software-Blitter, der einen schnellen Zugriff auf Grafikfunktionen zulasten der Geräteunabhängigkeit bieten sollte, die ein Computerspiel auch nicht brauchte. WinG wurde für Windows 3.1 eingeführt, da sich GDI für Spiele als ungeeignet erwies, wurde aber bis auf eine Beta-Version von Doom durch Gabe Newell (WinDOOM) und Civilization 2 von der Industrie wenig beachtet. WinG wurde in Windows 95 als Teil der Windows API fortgeführt.

Unter dem Namen Windows Games SDK veröffentlichte Microsoft für Windows 95 eine Schnittstellenbibliothek, die später DirectX werden sollte. Sie beinhaltete bereits

DirectDraw, eine hardwarebeschleunigte Grafikschnittstelle, die WinG ablöste, DirectPlay, eine Schnittstelle für Mehrspielermodi über Computernetzwerke, DirectSound für die hardwareunabhängige Wiedergabe von Sound und Musik, sowie DirectInput für die hardwareunabhängige Verarbeitung von Eingaben aus verschiedenen Eingabegeräten.

Die Hardwareunabhängigkeit dieser Schnittstellen kennzeichnen DirectX als eine Stufe der Abstraktion der Hardware für die Software: der Entwickler kann die Schnittstellen ansprechen, ohne die technischen Details der Hardware zu kennen, für die er programmiert. Der Entwickler arbeitet mit DirectX als einer Hardwareabstraktionsschicht (, HAL).

Das SDK profitierte dabei nicht nur von der Hardwarebeschleunigung diverser Schnittstellen, sondern auch von den Verbesserungen, die Windows 95 allgemein für das Betriebssystem einführte. Dazu gehörte die breite Unterstützung von Treibern, Komponenten und Software auf der 32-Bit-Architektur, inklusive eines Adressraums, der die Verwendung von Arbeitsspeicher in der Größe von bis zu vier Gigabyte erlaubte.

DirectX 1.0 DirectX in der Version 1.0, Codename Manhattan, wurde am 30. September 1995 veröffentlicht.https://devblogs.microsoft.com/oldnewthing/20190930-00/?p=102942 Where did DirectX code names come from? by Raymond Chen Das Spiel Doom, dessen erste Windows-Version nie über eine Beta-Version hinauskam, wurde noch einmal für Windows 95 umgeschrieben und als Doom95 veröffentlicht. Microsoft präsentierte dieses Spiel auf einer Messe, um unter Fachpublikum und Entwicklern für seine neue DirectX-Schnittstelle zu werben. Das Spiel wurde auch auf der CD-ROM Games for Windows 95 in einer Shareware-Version veröffentlicht.

Doch auch das Marketing konnte die Spielindustrie noch nicht auf Windows bewegen. Weiterhin wurden für Windows 95 Spiele veröffentlicht, die eigentlich MS-DOS-Spiele im Protected Mode waren. Dabei war durch beigelegte Level-Editoren oder die Nutzung der Autoplay-Funktion von Windows deutlich, dass den Entwicklern das Systemumfeld durchaus bewusst war, für das sie programmierten. Bot DirectX mit den angebotenen Schnittstellen möglicherweise dieselben Funktionen für Spiele wie MS-DOS und seine zahlreichen kommerziell erhältlichen Softwarebibliotheken, hatte DirectX trotzdem noch keinen Vorteil gegenüber der etablierten Entwicklung für MS-DOS.

DirectX 2.0 DirectX Version 2.0 (Codename Orion) wurde am 5. Juni 1996 veröffentlicht. Nach Release von DirectX 2.0 wurde von Microsoft die Firma Rendermorphics gekauft, die erstmals eine 3D-Implementierung für DirectX vornehmen sollte.

DirectX 3.0 DirectX Version 3.0 (Codename Orange) erschien am 15. September 1996. DirectX 3.0 war die erste Version, die mit der Komponente Direct3D auch hardwarebeschleunigte 3D-Funktionalität mitbrachte, die bis zu diesem Zeitpunkt nur von Konsolen wie der PlayStation geleistet wurde. PC-Spiele, die 3D-Grafik präsentieren wollten, verwendeten bis dahin entweder eine Lizenz der Doom-Engine oder mussten sich mit vorgerenderter Grafik und einigen mit der DOS-Bibliothek RAD Smacker abgespielten FMV-Videosequenzen behelfen. Mit DirectX 3.0 erschienen auch die ersten Spiele, die nur noch unter Windows mit DirectX und nicht mehr unter MS-DOS spielbar waren, zum Beispiel Diablo.

Mit DirectX 3.0 stieg die Nachfrage des Verbrauchers nach leistungsfähigen 3D-Grafikkarten, von denen verschiedene Modelle mit jeweils besonderen Fähigkeiten und eigenen Schnittstellen auf den Markt kamen, die später von DirectX jeweils unterstützt werden sollten.

DirectX 5.0