DirectX

Beteilige dich an der Diskussion! | Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+)

Begründung: Überarbeitung notwendig, da nicht nur Belege fehlen, sondern auch wesentliche Aspekte der Geschichte, die zu DirectX führte.

|

Microsoft DirectX

Basisdaten

Entwickler | Microsoft Corporation
Erscheinungsjahr | 30\. September 1995
Aktuelle Version | 12 Ultimate
(5\. Oktober 2021)
Betriebssystem | Windows
Programmier­sprache | High Level Shader Language, C++
Kategorie | Programmierschnittstelle
Lizenz | MS-EULA
Für Endbenutzer:
www.microsoft.com/de-de/download/details.aspx?id=35
Für Entwickler:
msdn.microsoft.com/directx/

DirectX [dɪˈrɛkt ɛks (AE) bzw. 'daɪrɛkt ɛks (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

[Bearbeiten | Quelltext bearbeiten]

### Vorgeschichte und MS-DOS

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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.[1]

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.[2][3] 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 (englisch hardware abstraction layer, 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

[Bearbeiten | Quelltext bearbeiten]

DirectX in der Version 1.0, Codename Manhattan, wurde am 30. September 1995 veröffentlicht.[4] 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.[5][6]

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

[Bearbeiten | Quelltext bearbeiten]

DirectX Version 2.0 (Codename Orion) wurde am 5. Juni 1996 veröffentlicht.[7] 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

[Bearbeiten | Quelltext bearbeiten]

DirectX Version 3.0 (Codename Orange) erschien am 15. September 1996. DirectX 3.0 war die erste Version, die mit der Komponente Direct3D[7] 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[8] 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

[Bearbeiten | Quelltext bearbeiten]

Während der Entwicklung von DirectX 4.0 (Codename Mustard) stellte sich heraus, dass viele Programmierer auf Funktionalitäten warteten, die erst für Version 5 vorgesehen waren. Also beschloss man, die wenigen Veränderungen von DirectX 4 nicht zu veröffentlichen, sondern direkt in die darauffolgende Version einzubauen.[9] DirectX 5 (Codename Diesel) erschien am 16. Juli 1997.[7] Neben einer Performancesteigerung wurde mit DirectX 5.0 eine neue Grafikbibliothek für Grafisches Primitiven eingeführt, die eine einfachere Programmierung erlaubt. Bestehende DirectX 2.0 und 3.0 Anwendungen müssen aber angepasst und neu compiliert werden um davon zu profitieren. Dazu kam die Unterstützung von 3D-Soundkarten, Force-Feedback-Eingabegeräte und MMX. Mit letzterem wurden bei Bit-blit-Operationen eine Geschwindigkeitssteigerung um den Faktor 2 erreicht. Dazu kamen die Features Sort Independent Antialiasing, Range Based Fog, Anisotropic Texture Filtering und Bufferless Hidden Surface Elimination.[10]

Die früher unter ActiveMovie zur Wiedergabe von Video auf Windows verwendete Schnittstelle kommt als DirectShow zu DirectX.

### DirectX 6.0

[Bearbeiten | Quelltext bearbeiten]

DirectX 6.0 (Codename Kool-Aid) unterstützte erstmals Multitexturing (die Verwendung von mehr als einer Textur auf einem Objekt) und Bumpmapping. Außerdem wurde der 3DNow-Befehlssatz von AMD-Prozessoren unterstützt. Des Weiteren wurde die Performance verbessert: gegenüber DirectX 5.0 brachte DirectX 6.0 laut Aussage von PC Professionell 8/98 einen Geschwindigkeitsvorteil von 14 % beim Riva 128 Chipsatz und 28 % beim Voodoo Graphics Chipsatz.[11] Von der Game Developers Conference wurde berichtet, dass DirectX 6.0 für Spieleentwickler leistungsfähig genug war, um auf chip-spezifische Programmierschnittstellen, wie bspw. die Glide-API zu verzichten, allerdings erwies sich dieses Urteil als verfrüht.[12] Die Grafikkarten Voodoo 3, 4 und 5 erschienen erst nach DirectX 6.0 auf dem Markt und erweiterten die Glide-API um weitere exklusive Features, wie bspw. die T-Buffer-Technologie, Motion Blur und Depth of Field, die DirectX 6.x und auch das spätere DirectX 7 noch nicht unterstützten.[13]

#### DirectX 6.1

[Bearbeiten | Quelltext bearbeiten]

In DirectX 6.1 kam die Unterstützung der SSE-Befehlssatzerweiterung des Pentium 3 hinzu.[14] Außerdem wurde DirectMusic als eine mächtige Live-Produktionsschnittstelle für Musikausgabe hinzugefügt.

### DirectX 7.0

[Bearbeiten | Quelltext bearbeiten]

Ab Version 7 gehören Transform and Lighting und Cubic Environment Mapping (CubeMaps) zum Funktionsumfang. Das T&L-Paket wurde in der darauffolgenden Version deutlich ausgebaut und um Funktionen wie Triangle Tessellation erweitert. Dazu kam die Unterstützung von herstellerspezifischen Erweiterungen, die es unter anderem erlaubten, frei programmierbare Vertex- und Pixel-Shader diverser Grafikchips wie die der Geforce 256 zu nutzen.[12][13][15] Aufgrund eines Fehlers in DirectX 7.0 konnte die T&L Einheit der Geforce-Karten in Windows 2000 nicht verwendet werden, so dass diese die Spiele, wie andere Karten, ohne T&L Support rendern mussten. Dieser Fehler wurde erst mit Erscheinen von DirectX 8.0 in Windows 2000 behoben.[16]

### DirectX 8.0

[Bearbeiten | Quelltext bearbeiten]

Die Anzahl an mitgelieferten APIs wurden auf fünf reduziert und Funktionalität in diesen vereint. Dies sind:

* DirectX Graphics für die Grafik
* DirectX Audio für die Soundausgabe
* DirectPlay für die Multiplayer-Netzwerkfunktionalität
* DirectInput für die Befehlseingabe und Unterstützung von Eingabegeräten wie Joysticks, Gamepads usw.

und

* DirectShow für die Filmwiedergabe, welches erstmals auch zum SDK hinzugefügt wurde.

DirectDraw und Direct3D wurden in DirectX Graphics zusammengefasst. Neben einer gemeinsamen Speicherverwaltung ermöglichte diese Kombination auch Composite-Grafik aus beiden Schnittstellen in einem Bild.[15] Die Fähigkeiten von Direct3D wurden in DirectX 8.0 auf die Fähigkeiten der damals neuen Grafikchips von 3DFX, ATI und Nvidia erweitert. Dazu gehört die Unterstützung von Pixel- und Vertexshader in Version 1.1[17], sowie 3D-Texturen.[18]

Außerdem wurde ein Großteil der 3D-Funktionen von DirectX 8.0 auf den angekündigten NV20-Prozessor der Nvidia-GeForce-3-Serie optimiert, da Microsoft beabsichtigte, die erste Xbox mit dem verwandten Grafikchip NV2A von Nvidia auszustatten. Die Programmiersprache der Shader von DirectX 8.0 besteht aus 17 Basisbefehlen. Ein Shader kann bis zu 128 Befehle enthalten, die linear abgearbeitet werden müssen. Kontrollstrukturen gibt es in DirectX 8.x nicht. Die Verwendung von hardwarebeschleunigten Shadern verlagerte die benötigte Rechenleistung weg vom Prozessor und seiner x87 FPU, wodurch sich erhebliche Leistungssteigerungen ergaben. Die Einführung der Shader erlaubten neue Effekte wie bspw. Per-Pixel-Lighting, besseres Per-Pixel-Bump-Mapping, Spline Surfaces und volumetrische Nebel mit Hardwarebeschleunigung. Neben den Shadern wurde DirectX 8.0 auf die Unterstützung der Fähigkeiten von Full-Scene Antialiasing, Motion Blur, Depth of Field, Point Sprites und 3D-Texturen erweitert.

In DirectX Audio wurden DirectSound und DirectMusic zusammengefasst, was die Synchronisation von Wave\- und MIDI-Dateien vereinfachte. DirectX Audio unterstützt im Zusammenspiel mit DirectX Play Sprachkommunikation. Der DirectX Music Synthesizer unterstützt nun den DLS2 Standard. Außerdem wurde mit DirectX Audio Scripting ermöglicht, das ein situationsbedingtes Abspielen von Musikstücken erlaubt.

Die Direct Play API wurde neu geschrieben und erlaubt eine einfachere Handhabung, dadurch wurde die Stabilität und Performance erhöht und eine höhere Flexibilität ermöglicht.

In DirectX Input wurde durch die Einführung von Action Mapping, einer Tastenzuweisung, die Ansteuerung neuer Eingabegeräte verbessert.

In Direct Show wurden die Codecs erweitert. Hinzu kamen neue Formate wie das Microsoft Windows Media Format.

#### DirectX 8.1

[Bearbeiten | Quelltext bearbeiten]

Mit DirectX 8.1 wurden die Pixel Shader Versionen 1.3 und 1.4 eingeführt und soft edge dynamic shadows ermöglicht.[17]

### DirectX 9.0

[Bearbeiten | Quelltext bearbeiten]

DirectX 9.0 erschien im Dezember 2002. Es bot als große Neuerung die „High Level Shading Language“ (HLSL), eine einheitliche Hochsprache für Shader. HLSL in DirectX bot für Entwickler eine flexible und leicht zu bedienende Entwicklungsumgebung und war dabei zu allen DirectX-fähigen Grafikkarten kompatibel, um die Anpassung auf die Hardware-Eigenheiten zu vereinfachen. Eine weitere Neuerung war eine Bibliothek, die Patch-Meshes und herkömmliche Polygon-Meshes sowie verbesserte Echtzeit-Animationen bot. Alle Direct3D-APIs enthielten erweiterte Programmfähigkeiten bei Low-Level-Grafiken mit programmierbaren Vertex- und Pixel-Shader-2.0-Modellen. Dazu kam die Unterstützung von Displacement Mapping und das Rendering in 64 und 128 Bit Floating Point Genauigkeit.[19]

Vertex Shader konnten nun 1024 Befehle lang sein, anstatt wie in DirectX 8.0 nur 128 Befehle lang. Dazu lassen sich nun 256 Konstanten speichern, anstatt nur 96 und der Befehlssatz wurde um weitere Befehle wie die trigonometrischen Funktionen Sinus und Cosinus, sowie Logarithmus und Exponentialfunktionen erweitert.[20] Des Weiteren kamen Kontrollstrukturen wie Verzweigungen, Schleifen, Sprünge und Prozeduren dazu, was die Programmierung komplexerer Shader vereinfachte und die Abarbeitung beschleunigte, da unnötige Programmschritte übersprungen werden konnten.

Bei den Pixel-Shadern sind nun Programmlängen bis zu 160 Befehle möglich. Das gleichzeitige Einlesen von Texturen erhöhte sich von 6 auf 12 Texturen. Die Pixelshader bekamen keine Kontrollstrukturen.

Microsoft implementierte in DirectX 9.0 neue Assistenten zur Erzeugung von DirectX Media Objects (DMOs), für Audio-Effekte und für DirectMusic-Werkzeuge beim MIDI-Processing.

#### DirectX 9.0c

[Bearbeiten | Quelltext bearbeiten]

Die Version DirectX 9.0c wurde im August 2004 als aktualisierte Version veröffentlicht. Diese unterstützt die PixelShader Version 3.0.[17] Nach Aussage von Microsoft ist die Unterstützung für DirectX 9 für die nächsten Jahre in jedem Falle gesichert, auch wenn Windows Vista und DirectX 10/10.1 in der Praxis zum Einsatz kommen. Im Juni 2010 veröffentlichte Microsoft die aktualisierte Version 9.29, welche laut dxdiag aber weiterhin DirectX 9.0c entspricht.

### DirectX 10

[Bearbeiten | Quelltext bearbeiten]

Die Version DirectX 10.0 erschien Anfang 2007. Anders als die Vorgänger läuft diese nur unter den Betriebssystemen Windows Vista und Windows 7. Zusätzlich muss im Computer eine für DirectX 10.0 taugliche Grafikkarte eingebaut sein. Unter den Systemen Windows 98, Me, 2000, XP oder Server 2003 steht weiterhin nur DirectX 9.0c zur Verfügung.

Im April 2007 erschienen Meldungen, wonach die neuen Direct3D-10-Funktionen über eigene Bibliotheken auch auf anderen Windows-Versionen nutzbar seien.[21] Das Unternehmen hinter diesem Projekt hat das Vorhaben inzwischen aber eingestellt und den Quelltext veröffentlicht.[22]

Neu an Version 10 ist nur Direct3D 10, das das neue Windows Display Driver Model und Shader Model 4 benutzt, kombiniert mit strengeren Regeln für die Hersteller von Grafikkarten, die die Direct3D-10-Kompatibilität für sich in Anspruch nehmen möchten.

Windows Vista ist das erste Windows, das selbst von der Hardwarebeschleunigung durch Grafikkarten mittels DirectX Gebrauch macht. Grafikroutinen für den Desktop wurden nun endgültig weg vom Prozessor und hin zur Grafikkarte verschoben. Ausnahmen gibt es weiterhin für Versionen, die für kompakte Systeme herausgegeben werden, wie Windows CE. Die Nutzung der 3D-Grafikschnittstelle und einiger Shader, die Vista für den Desktop einführte, wurde in späteren Versionen von Windows wieder zurückgefahren.

Ab Direct3D 10 werden bis auf wenige Ausnahmen keine cap-bits mehr verwendet, anhand derer Programme feststellen können, welche Funktionen die Hardware zur Verfügung stellt. Daher muss Direct3D 10 und jede folgende Version neue Funktionen immer in Form von Mindestanforderungen einführen. Damit kommt Microsoft den Spieleentwicklern entgegen, da diese die Hardware bisher auf eine Vielzahl an möglichen Funktionskombinationen abfragen mussten. Dagegen werden Hardwarehersteller nun dazu gezwungen, bestimmte Funktionen zu implementieren, um kompatibel mit der jeweiligen Direct3D-Version zu sein. Dadurch wird die Fähigkeit der Hardwareproduzenten eingeschränkt, sich durch optionale Komponenten von Wettbewerbern abzuheben.

### DirectX 10.1

[Bearbeiten | Quelltext bearbeiten]

DirectX 10.1 wurde zusammen mit Windows Vista SP1 ausgeliefert und enthält gegenüber DirectX 10 folgende Änderungen, die die Direct3D-API betreffen:

* Shader Model 4.1
* vierfaches Antialiasing mit veränderbaren Subpixel-Mustern
* Unterstützung für durchgängiges Rechnen mit 32-Bit-Gleitkommazahlen
* dynamisch adressierbare Cubemap-Arrays
* Rendern in blockkomprimierte Framebuffer

Falls eine Grafikkarte eine dieser Funktionen nicht beherrscht, kann sie keine Direct3D-10.1-Schnittstelle anbieten, und die Applikation muss auf Direct3D 10 zurückfallen.

Zusätzlich wird XAudio2 als Ersatz für DirectSound eingeführt.

### DirectX 11

[Bearbeiten | Quelltext bearbeiten]

Microsoft hatte bereits auf der Messe Gamefest (22. bis 23. Juli 2008) in Seattle neue Details zu DirectX 11 offiziell enthüllt.[23]

Grundsätzlich sollen alle Grafikkarten, die mit DirectX 10.x kompatibel sind, auch unter DirectX 11 eine vollständige Kompatibilität erreichen (was neue Funktionen von DirectX 11 auf älterer Hardware ausschließt).

Wesentliche Neuerungen sind:

* Shader Model 5, mit dem die sogenannten „Compute Shaders“ eingeführt werden, womit Microsoft die GPGPU-Programmierung vereinheitlichen möchte.
* Grafikkartenseitige Unterteilung von Dreiecken in weitere Dreiecke (Tessellation), durch die der Detailgrad von 3D-Szenen ohne Belastung des restlichen Systems erhöht werden kann. Diese Technik wird von allen AMD-Grafikkarten ab der HD-5XXX Serie sowie von allen Nvidia-Grafikkarten ab der GeForce-GTX-4XX-Serie unterstützt.[24]
* Thread-Unterstützung der Rendering-Pipeline verbessert, insbesondere in Hinblick auf effizientere GPGPU-Programmierung.

DirectX 11 ist als Teil von Windows 7 im vierten Quartal 2009 erschienen. Für Windows Vista startete Microsoft die Auslieferung von DirectX 11 am 28. Oktober 2009 zunächst per Windows Update.[25]

Der technische Entwicklungsleiter für den Grafikbereich bei AMD teilte in einer Rede in Reykjavík mit, dass schon im ersten Quartal 2009 die voraussichtlich erste DirectX-11-Grafikkarte auf den Markt kommen sollte.[26] Dies war allerdings erst mit dem Erscheinen der ATI-Radeon-HD-5000-Serie der Fall, die zu Anfang des vierten Quartals 2009 auf den Markt kam. Zudem wurden im DirectX SDK von November 2008 die ersten DirectX-11-Beispiele gezeigt.

Am 31. Januar 2013 erklärte Microsoft, dass DirectX (11) nicht weiterentwickelt wird.[27]

### DirectX 12

[Bearbeiten | Quelltext bearbeiten]

Microsoft hat DirectX 12 auf der Game Developers Conference in San Francisco am 20. März 2014 vorgestellt. Ähnlich wie AMD Mantle bietet DirectX 12 über eine Low-Level-API die Möglichkeit zur direkten, hardwarenahen Programmierung.[28] Dadurch kann u. a. die CPU-Last („Overhead“) verringert werden, die von der Software-Zwischenschicht erzeugt wird. Eine Anforderung an DirectX 12 war die Kompatibilität mit DirectX-11-fähigen Grafikkarten sowie Mobilgeräten und der Xbox One. Die ersten Spiele mit DirectX-12-Unterstützung erschienen Ende 2015. DirectX 12 wird für Raytracing auf kompatiblen Nvidia-RTX-Grafikkarten benötigt.[29][30] Außerdem unterstützt DirectX die Pixel Shader Version 5.1.[17]

Das an Windows gebundene DirectX 12 steht in Konkurrenz zu offenen und plattformunabhängigen Schnittstellen wie Vulkan, einer API, die aus AMD Mantle hervorgegangen ist und von einem breiten Konsortium aus der Industrie unterstützt wird.

### DirectX 12 Ultimate

[Bearbeiten | Quelltext bearbeiten]

Am 19. März 2020 wurde von Microsoft im DirectX Developer Blog mit DirectX 12 Ultimate eine neue DirectX-Entwicklungsstufe angekündigt. Unter DirectX 12 Ultimate fasst Microsoft im Grunde mehrere, teilweise bereits existierende, Techniken zusammen und macht die Unterstützung verpflichtend für Hersteller, die ihre Produkte mit dem neuen Standard bewerben möchten. Im Einzelnen sind dies DirectX Raytracing 1.1, Variable Rate Shading, Mesh Shaders und Sampler Feedback. Um alle neuen Features nutzen zu können, ist eine NVIDIA-Grafikkarte ab GeForce-20-Serie oder eine AMD-Grafikkarte basierend auf der RDNA-2-Architektur nötig. Die Xbox Series X ist die einzige Videospielkonsole, die DirectX 12 Ultimate unterstützt. Sonys PlayStation 5, die auf die gleiche Hardwarebasis setzt, fehlt es an softwareseitiger Unterstützung, da der japanische Hersteller andere Grafik-APIs einsetzen wird.[31][32]

### Versionshistorie

[Bearbeiten | Quelltext bearbeiten]

DirectX-Version  | Versionsnummer  | Betriebssystem  | Veröffentlichung

|
|
|

Ältere Version; nicht mehr unterstützt: DirectX 1.0  | 4.02.0095  |  | 30\. September 1995
Ältere Version; nicht mehr unterstützt: DirectX 2.0  |  | wurde nur mit wenigen Drittanbieterprogrammen zusammen veröffentlicht | 1996
Ältere Version; nicht mehr unterstützt: DirectX 2.0a  | 4.03.00.1096  | Windows 95 OSR2 und NT 4.0  | 5\. Juni 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0  | 4.04.00.0068  |  | 15\. September 1996
4.04.00.0069  | spätere Pakete von DirectX 3.0 enthielten Direct3D 4.04.00.0069 | 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0a  | 4.04.00.0070  | Windows NT 4.0 SP3 (und darüber)
letzte unterstützte Version von DirectX für Windows NT 4.0 SP0 | Dezember 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0b  | 4.04.00.0070  | geringfügige Verbesserung gegenüber 3.0a, da nur ein kosmetisches Problem
in der japanischen Version korrigiert wurde | Dezember 1996
Ältere Version; nicht mehr unterstützt: DirectX 5.0  | 4.05.00.0155 (RC55)  | verfügbar als Beta für Windows NT 4.0 | 16\. Juli 1997
Ältere Version; nicht mehr unterstützt: DirectX 5.2  | 4.05.01.1600 (RC00)  | DirectX 5.2 Veröffentlichung für Windows 95 | 5\. Mai 1998
4.05.01.1998 (RC0)  | Windows 98 exklusiv  | 25\. Juni 1998
Ältere Version; nicht mehr unterstützt: DirectX 6.0  | 4.06.00.0318 (RC3)  | Windows CE als Dreamcast-Implementierung  | 7\. August 1998
Ältere Version; nicht mehr unterstützt: DirectX 6.1  | 4.06.02.0436 (RC0)  |  | 3\. Februar 1999
Ältere Version; nicht mehr unterstützt: DirectX 6.1a  | 4.06.03.0518 (RC0)  | exklusiv für Windows 98 SE | 5\. Mai 1999
Ältere Version; nicht mehr unterstützt: DirectX 7.0  | 4.07.00.0700 (RC1)  |  | 22\. September 1999
4.07.00.0700  | Windows 2000  | 17\. Februar 2000
Ältere Version; nicht mehr unterstützt: DirectX 7.0a  | 4.07.00.0716 (RC0)  |  | 8\. März 2000
4.07.00.0716 (RC1)  |  | 2000
Ältere Version; nicht mehr unterstützt: DirectX 7.1  | 4.07.01.3000 (RC1)  | exklusiv für Windows Me  | 14\. September 2000
Ältere Version; nicht mehr unterstützt: DirectX 8.0  | 4.08.00.0400 (RC10)  |  | 12\. November 2000
Ältere Version; nicht mehr unterstützt: DirectX 8.0a  | 4.08.00.0400 (RC14)  | letzte Version für Windows 95 | 5\. Februar 2001
Ältere Version; nicht mehr unterstützt: DirectX 8.1  | 4.08.01.0810  | exklusiv für Windows XP, Windows Server 2003 und Xbox | 25\. Oktober 2001
4.08.01.0881 (RC7)  | Version für die älteren Betriebssysteme (Windows 98, Windows Me und Windows 2000) | 8\. November 2001
Ältere Version; nicht mehr unterstützt: DirectX 8.1a  | 4.08.01.0901 (RC?)  | Direct3D-Update (D3d8.dll) | 2002
Ältere Version; nicht mehr unterstützt: DirectX 8.1b  | 4.08.01.0901 (RC7)  | DirectShow-Korrektur für Windows 2000 (Quartz.dll) | 25\. Juni 2002
Ältere Version; nicht mehr unterstützt: DirectX 8.2  | 4.08.02.0134 (RC0)  | identisch zu DirectX 8.1b, aber mit DirectPlay 8.2 | 2002
Ältere Version; nicht mehr unterstützt: DirectX 9.0  | 4.09.00.0900 (RC4)  |  | 19\. Dezember 2002
Ältere Version; nicht mehr unterstützt: DirectX 9.0a  | 4.09.00.0901 (RC6)  |  | 26\. März 2003
Ältere Version; nicht mehr unterstützt: DirectX 9.0b  | 4.09.00.0902 (RC2)  |  | 13\. August 2003
Ältere Version; nicht mehr unterstützt: DirectX 9.0c  | 4.09.00.0903  | ausschließlich für Service Pack 2 für Windows XP  |
4.09.00.0904 (RC0)  |  | 4\. August 2004
4.09.00.0904  | Windows XP SP2, Windows Server 2003 SP1, Windows Server 2003 R2 und Xbox 360 | 6\. August 2004
Ältere Version; nicht mehr unterstützt: DirectX 9.0c
regelmäßige
Veröffentlichungen | 4.09.00.0904 (RC0)  | Die letzte Version für Windows 98 und Me ist vom Dezember 2006.[33]
Die letzte Version für Windows 2000 ist vom Februar 2010.[34]
Die erste 64-Bit-fähige Version ist vom Februar 2005.[35] | von Oktober 2004 bis August 2007
zweimonatlich; anschließend
vierteljährlich; aktuelle Version: Juni 2010
Ältere Version; nicht mehr unterstützt: DirectX 9.29  | 4.09.0000.0904  | ab Windows XP[36] | 7\. Juni 2010
Ältere Version; nicht mehr unterstützt: DirectX 10  | 6.00.6000.16386  | Windows Vista, Windows 7  | 20\. November 2006
Ältere Version; nicht mehr unterstützt: DirectX 10.1  | 6.00.6001.18000  | Service Pack 1 für Windows Vista, Windows Server 2008
mit Direct3D 10.1 | 4\. Februar 2008
Ältere Version; nicht mehr unterstützt: DirectX 11  | 6.01.7600.16385  | Windows 7, Windows Server 2008 R2 | 22\. Oktober 2009
6.00.6002.18107  | Windows Vista SP2, Windows Server 2008 R2  | 27\. Oktober 2009
6.01.7601.17514  | Windows 7 SP1, Windows Server 2008 R2 SP1  | 16\. Februar 2011
Ältere Version; nicht mehr unterstützt: DirectX 11.1  | 6.02.9200.16384  | Windows 8, Windows RT, Windows Server 2012 | 1\. August 2012
6.02.9200.16492  | Windows 7 SP1, Windows Server 2008 R2 SP1  | 11\. Februar 2013
Ältere Version; nicht mehr unterstützt: DirectX 11.2  | 6.03.9600.16384  | Windows 8.1, Windows RT, Windows Server 2012 R2  | 18\. Oktober 2013
Ältere Version; nicht mehr unterstützt: DirectX 12  | 10.00.10240.16384  | Windows 10[37] | 29\. Juli 2015
10.00.15063.0000  | Windows 10  | 20\. März 2017
10.00.17763.0000  | Windows 7 SP1[38] | 20\. November 2019
Ältere Version; nicht mehr unterstützt: DirectX 12.1  | 10.00.17763.0001  | Windows 10  | 2\. Oktober 2018
10.00.18362.0116  | Windows 10  | 19\. Mai 2019
Aktuelle Version: DirectX 12.2  | 10.00.19041.0928  | Windows 10  | 10\. November 2020
10.00.22000.1000  | Windows 11 | 5\. Oktober 2021

Legende:

Alte Version

Ältere Version; noch unterstützt

Aktuelle Version

Aktuelle Vorabversion

Zukünftige Version

Anmerkungen:

1. DirectX 4 wurde nie veröffentlicht. Raymond Chen erklärt in seinem Blog The Old New Thing und seinem gleichnamigen Buch, dass, nachdem DirectX 3 veröffentlicht worden war, Microsoft die Entwicklung von 4 und 5 parallel begann. Version 4 sollte eine kleinere Anpassung sein, 5 mit größeren Änderungen. Mangelndes Interesse von Seiten der Entwickler für die Neuheiten der Version 4 führten dazu, dass direkt Version 5 veröffentlicht wurde.[39][40]

1. Die Versionsnummer, die von Microsofts DxDiag-Tool (Version 4.09.0000.0900 und höher) gezeigt wird, nutzt das Format „x.xx.xxxx.xxxx“ für Versionsnummern. Jedoch wird in der Registry das Format „x.xx.xx.xxxx“ verwendet. Es kann also sein, dass zu der oben gelisteten Version „4.09.00.0904“ in DxDiag als „4.09.0000.0904“ angezeigt wird.

## Aufbau von DirectX

[Bearbeiten | Quelltext bearbeiten]

DirectX besteht heute aus folgenden Teilen:

### DirectX Graphics

[Bearbeiten | Quelltext bearbeiten]

DirectX Graphics ist der am meisten genutzte Teil von DirectX. Er ermöglicht einen schnellen und direkten Zugriff auf die Grafikkarte, vorbei am Graphics Device Interface (GDI) und Display Device Interface (DDI), und unterstützt (mit „Direct2D“)[41][42] 2D- und (mit „Direct3D“) 3D-Grafik.

DirectX Graphics stellt sowohl eine Low-Level-API (Direct3D) als auch eine High-Level-API (Direct3DX) bereit. Die Low-Level-API Direct3D eignet sich für Anwendungen mit hoher Interaktionsrate oder Präsentationsfrequenz komplexer grafischer Szenen, wie beispielsweise bei 3D-Spielen. Bis zur Version 7 wurden bei der Low-Level-API zwischen 2D-Grafik (DirectDraw) und 3D-Grafik (Direct3D) unterschieden. Durch eine Überarbeitung des Grafikbereichs (in Version 8) wurden beide Teile unter einer einheitlichen API in Direct3D zusammengefasst. Die explizite, eigenständige Weiterentwicklung von DirectDraw wurde damit eingestellt.

Die High-Level-API Direct3DX ermöglicht es hingegen, mit vertretbarem Aufwand 3D-Anwendungen zu realisieren. Direct3DX ist eine Erweiterung von Direct3D.

Außerdem emuliert die Funktionsgruppe Funktionen, die nicht von der Hardware unterstützt werden. Dafür nutzt der Hardware Emulation Layer (HEL) die Möglichkeiten von MMX-Prozessoren zur Manipulation von Bildern und greift auf Funktionen des GDI zurück. Unterstützt werden unter anderem Seitenumschaltung (Flipping) (siehe Doppelpufferung), Blitting, Clipping, 3D-Z-Puffer, Overlays und direkte Steuerung des Datenflusses durch die Video-Port Hardware (Video-Port Manager).

### DirectSetup

[Bearbeiten | Quelltext bearbeiten]

DirectSetup ermöglicht Programmierern, ihre Installationsroutine automatisch überprüfen zu lassen, ob die benötigte DirectX-Version bereits installiert ist, und diese andernfalls zu installieren. Die benötigte DirectX-Laufzeitbibliothek kann mit dem Spiel mitgeliefert werden.

### XAudio2

[Bearbeiten | Quelltext bearbeiten]

XAudio2 basiert auf der Xbox-360-Sound-API und hat DirectSound abgelöst. Die programmierbaren DSP-Programme ermöglichen EAX-ähnliche Effekte auf allen Tonausgabe-Geräten (ugs. mitunter als „Sound-Karte“ bezeichnet, auch wenn es meist nur Bauteile auf der Hauptplatine sind); diese werden allerdings auf dem Hauptprozessor ausgeführt. Dies hat vor allem Kritik seitens des Herstellers Creative hervorgerufen, weil auf dessen Chips bzw. Karten solche DSP-Programme „in Hardware“ ausgeführt werden könnten, um Spielern somit einen Geschwindigkeitsvorteil zu bieten (durch Entlastung der CPU).

### XInput

[Bearbeiten | Quelltext bearbeiten]

XInput ist der neue Standard für Eingabegeräte unter Windows XP und späterer Betriebssysteme sowie für die Xbox 360.[43] XInput ignoriert alle älteren DirectInput-Geräte, wodurch ältere Joysticks und Joypads nur durch Simulation über Wrapper-Programme in den verschiedenen Spielen und Anwendungen funktionieren können. Bislang ist keine Lösung für dieses Problem von Microsoft bekannt, weshalb angenommen werden kann, dass das Unternehmen kein Interesse an einer weiteren Unterstützung solcher Geräte hat. Möchte man mit einem DirectInput-Controller XInput-Spiele bedienen, empfiehlt es sich, einen entsprechenden Emulator zu verwenden.

### Abgelöste Schnittstellen

[Bearbeiten | Quelltext bearbeiten]

Die folgenden Komponenten waren in der Vergangenheit Teil von DirectX, werden mittlerweile aber nicht mehr unterstützt.

#### DirectInput

[Bearbeiten | Quelltext bearbeiten]

DirectInput unterstützt Eingabegeräte, wie Tastatur, Maus, Joysticks usw. und ermöglicht Force-Feedback-Effekte (zum Beispiel das Vibrieren eines Gamepads oder Widerstand beim Bewegen eines Joysticks) und unterstützt den Zugriff auf analoge und digitale Eingabegeräte, welche ein absolutes Koordinatensystem verwenden. Ein Eingabegerät kann über bis zu sechs Bewegungsachsen und 32 Knöpfe verfügen. Der Zugriff über DirectInput umgeht das Windows Message System, einen systemweiten Nachrichtenbus, und erfolgt direkt auf die Hardware. DirectInput erlaubt Anwendungen die Nutzung von möglichen Force-Feedback-Fähigkeiten der Eingabegeräte, um so Kraftrückkopplungseffekte zu erzeugen.

#### DirectMusic

[Bearbeiten | Quelltext bearbeiten]

Für die Wiedergabe und Live-Produktion von Musik und Raumklang. DirectMusic liefert dazu unter anderem Software-Synthesizer und einen DLS2-Sampler. Für die Wiedergabe von komprimierten Musikdateien wie MP3 und Video (AVI, MPEG) wird DirectShow verwendet.

#### DirectPlay

[Bearbeiten | Quelltext bearbeiten]

DirectPlay dient zur Kommunikation von Multiplayerspielen untereinander, die auf verschiedenen Computern laufen (bei Netzwerkspielen oder Onlinespielen). Im Wesentlichen handelt es sich um ein Protokoll auf Anwendungsebene, und es ist somit unabhängig von konkret genutzten Protokollen der Transport- und Übertragungsebene (siehe OSI-Modell). DirectPlay realisiert keine Mechanismen für das Zusammentreffen der Spieler (Matchmaking) oder das Abrechnen von Spielteilnahmen und ist auch kein eigener, vollwertiger Client für einen separaten Hub-Service (Lobby).

Den Kern bildet die Spielesitzung (DirectPlay Session), welche von einem „Host“ genannten Rechner erzeugt und moderiert wird. Spieler sind logische Objekte, von denen es pro Rechner mehrere geben kann, daher wird zwischen lokalen und entfernten Spielern unterschieden. Das Konzept von Spielergruppen wird unterstützt, jeder Spieler kann dabei gleichzeitig mehreren Gruppen angehören. Die Spieler können an andere Spieler Nachrichten versenden (Chat).

Für viele Spieleentwickler war die sehr hohe CPU-Last („Overhead“) von DirectPlay dafür entscheidend, die Schnittstelle nicht zu verwenden und einen eigenen, effektiveren Netzwerk-Zugriff auf Basis von Winsock vorzuziehen oder andere Bibliotheken zu nutzen. Außerdem wurden für Spiele mit hohem Datendurchsatz, wie First-Person-Shooter, bevorzugt Linux-basierte Mehrspieler-Server entwickelt, für die das proprietäre DirectPlay ungeeignet war.

#### DirectShow (ehemals „Direct Media“)

[Bearbeiten | Quelltext bearbeiten]

DirectShow, vor seiner Einführung in DirectX ActiveMovie, später DirectX Media dient der Verarbeitung von Video\- und Audiodateien, womit sich verschiedenste Arten von Videodateien (AVI, MPEG) und Ton-Dateien (z. B. MP3) wiedergeben oder erstellen lassen. Es wird auch Streaming unterstützt und ist durch DirectShow-Filter beliebig erweiterbar.

DirectShow wurde inzwischen aus dem DirectX SDK entfernt und ist in das Windows Plattform-SDK aufgenommen worden. Somit gehört DirectShow streng genommen nicht mehr zu DirectX, sondern ist jetzt ein Bestandteil der Windows-Plattform.

Mit DirectShow wurde Full Motion Video umgesetzt. Durch die Verwendung von Softwarebibliotheken wie die RAD Game Tools mit speichereffizienten Video-Codecs wie Bink und Smacker wurde DirectShow in Spielen selten verwendet. Heute sind geskriptete Zwischensequenzen mit Ingame-Grafik, also der spieleigenen Grafik aus seiner Engine, verbreitet.

#### DirectSound

[Bearbeiten | Quelltext bearbeiten]

DirectSound wird zur Wiedergabe und Aufnahme von Toneffekten, z. B. Raumklangunterstützung (das heißt Positionierung der Klänge im 3D-Raum), verwendet. Die Daten aus mehreren Eingangspuffern (Secondary Sound Buffers) werden mit Effekten belegt und zusammen auf einen Ausgangpuffer (Primary Sound Buffer) gemischt. Eingangspuffer können in Software oder Hardware realisiert sein, statisch (zum Beispiel aus einer Datei) oder dynamisch (zum Beispiel Streaming von einem Mikrofoneingang) Daten liefern. Die Anzahl der Eingangspuffer, die gemischt werden können, ist ausschließlich durch die verfügbare Rechenleistung begrenzt. Es passt sich automatisch dem Leistungsspektrum der installierten Soundkarte an. Basiseffekte, wie Volume, Frequency Control, Panning bzw. Balance, zusätzliche Effekte, wie Reverb (Halleffekt), Chorus, Distortion, Equalization und 3D-Effekte, wie Rolloff, Amplitude Panning, Muffling, Arrival Offset und Doppler Shift Effekt stehen zur Verfügung. Da DirectSound durch XAudio2 abgelöst wurde, sind keine Samples mehr für DirectSound in den DirectX-SDK-Releases nach November 2007 enthalten.

#### DirectX Media Objects

[Bearbeiten | Quelltext bearbeiten]

→ Hauptartikel: DirectX Media Objects

DirectX Media Objects bietet Möglichkeiten, Audio- und Video-Ströme zu verändern, und kann auch zusammen mit DirectSound und DirectShow verwendet werden.

#### DirectX Video Acceleration

[Bearbeiten | Quelltext bearbeiten]

DirectX Video Acceleration ist eine von Microsoft entwickelte Programmierschnittstelle (API) für Windows und Xbox 360, mit der es ermöglicht wird, die Videodekodierung per Hardware zu beschleunigen, indem unter anderem der Zugriff auf die GPU ermöglicht wird. Die Version DXVA 1.0 wurde mit Windows 2000 eingeführt und ist auch für Windows 98 und spätere Plattformen verfügbar, die Version DXVA 2.0 wurde mit Windows Vista eingeführt und in die Media Foundation integriert.

## Funktionsweise

[Bearbeiten | Quelltext bearbeiten]

DirectX ermöglicht direkte Zugriffe auf die Hardware des Systems, ohne die Programme von der Hardware abhängig zu machen. So wird Spieleentwicklern eine Hardwareabstraktionsschicht für die Spieleprogrammierung zur Verfügung gestellt, mit der langsame Schnittstellen (z. B. GDI) umgangen werden. Funktionen, die nicht von der Hardware und damit nicht von der HAL bereitgestellt werden können, werden in der Hardware-Emulations-Schicht (englisch hardware emulation layer, HEL) emuliert.

Inzwischen hat sich die Industrie auf einheitliche Schnittstellen und Standards geeinigt und diese als offenen Standard mit dem Namen Vulkan veröffentlicht. Der Vorteil einer Hardwareabstraktionsschicht entfällt durch herstellerübergreifende Standards, zusätzlich sind diese auch plattformunabhängig und nicht an das Microsoft-Betriebssystem gebunden.

## DirectX außerhalb von Windows

[Bearbeiten | Quelltext bearbeiten]

Neben der in aktuellen Windows-Versionen enthaltene DirectX-API von Microsoft gibt es auch Varianten für andere Betriebssysteme. Diese Nachbildungen dienen dazu, Windows-Anwendungsprogramme ohne Windows-Betriebssystem zu nutzen. Aus rechtlichen Gründen sind meist nicht alle Funktionen der originalen API vorhanden, was die Kompatibilität mit Anwendungsprogrammen einschränken kann. Da die wenigsten Anwendungsprogramme alle Funktionen der DirectX-API benötigen, sind viele aber trotzdem ohne Einschränkungen nutzbar. Grafische Funktionen werden dabei meist mittels OpenGL bereitgestellt. Beispiele von DirectX-Implementierungen:

* Cedega: Eine kommerzielle Win32- und DirectX-Implementierung mit dem Ziel, Windows-Spiele unter Linux lauffähig zu machen.
* Wine: Ein Open-Source-Projekt mit dem Ziel, eine vollständige Win32\- und Win64-API und damit auch DirectX für Linux\- und Unix-artige Betriebssysteme zu erstellen. Bei der DirectX-Implementierung von Wine handelt es sich nur um eine schlanke Abstraktionsschicht zum X-Server und OpenGL.[44]
* CrossOver: Eine kommerzielle Erweiterung von Wine.
* Darwine: Eine Wine-Portierung für macOS.
* ReactOS: Verwendet einen Teil der Wine-Bibliotheken, darunter auch die DirectX-Portierung, um sich doppelte Entwicklungsarbeit zu sparen.[45]
* Proton – eine von Valve entwickelte freie Software, welche auf Wine aufbaut

## Alternativen zu DirectX

[Bearbeiten | Quelltext bearbeiten]

Neben DirectX sind auch freie APIs verfügbar, die im Gegensatz zu DirectX nicht auf die Windows-Plattform beschränkt sind. Allerdings sind diese APIs nicht so umfassend, können aber große Teile von DirectX ersetzen und ermöglichen die Entwicklung plattformübergreifender Software. Einige dieser Alternativen wie etwa OpenGL und OpenAL bieten ebenso wie DirectX Hardwarebeschleunigung.

Wichtige APIs:

* OpenAL für (3D-)Sound, ersetzt DirectSound und DirectMusic
* OpenCL als Ersatz für DirectX 11 Compute Shader
* OpenGL für (3D-)Grafik, ersetzt Direct3D bzw. DirectX Graphics
* OpenML für Multimedia-Verarbeitung, d. h. vor allem Video, ersetzt DirectShow bzw. DirectX Media
* SFML, SDL, ClanLib oder Allegro für Aufgaben wie z. B. die Unterstützung von Eingabegeräten, 2D/3D-Grafik, plattformübergreifende Thread-Verwaltung und Netzwerk. Diese Bibliotheken setzen auf DirectX oder OpenGL auf.
* Vulkan von der Khronos Group als Nachfolger von OpenGL, das aus dem von AMD gespendeten AMD Mantle entwickelt wurde[46]

## Weitere Informationen

[Bearbeiten | Quelltext bearbeiten]

Anwendungen für DirectX werden mit Hilfe des DirectX SDK erstellt.

Ein informatives Testprogramm ist das DirectX-Diagnoseprogramm. Es ist in Windows enthalten und kann über Start → Ausführen → dxdiag gestartet werden oder alternativ ab Windows Vista in das Suche-Fenster in der Startleiste eingegeben werden. Die ermittelten Daten werden von Spielentwicklern zur Diagnose von Fehlern in Spielen verwendet.

## Weblinks

[Bearbeiten | Quelltext bearbeiten]

* DirectX Developer Blog. In: devblogs.microsoft.com. Abgerufen am 16. Januar 2024 (englisch, Neuigkeiten, Ankündigungen und aktuelle Entwicklungen zum Thema DirectX).
* DirectX graphics and gaming. In: learn.microsoft.com. Abgerufen am 16. Januar 2024 (englisch, Win32 API Guide).
* DirectX 11 Tutorials. In: rastertek.com. Archiviert vom Original (nicht mehr online verfügbar) am 16. Januar 2024; abgerufen am 29. Januar 2025 (englisch).
* Old Versions of DirectX for Windows. In: oldversion.com. Abgerufen am 16. Januar 2024 (englisch, Ältere Versionen von DirectX).
* DirectX World. Archiviert vom Original (nicht mehr online verfügbar) am 5. Februar 2017; abgerufen am 16. Januar 2024 (englisch, C++-Übungen für Spieleentwickler).

## Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]

1. ↑ The History of DirectX. In: DirectX Tutorials. CodingUnit Programming Tutorials, abgerufen am 4. August 2023 (englisch): „DOS was seen as a better platform because DOS allowed direct access to video cards, mouse, keyboards and sound devices (and the rest of the system). Windows 95 restricted the access to all of these components because of its protected memory model. Microsoft needed a way to give the programmers the same access to these devices on the new operating system Windows 95.“
2. ↑ The History of DirectX. In: DirectX Tutorials. CodingUnit Programming Tutorials, abgerufen am 4. August 2023 (englisch): „In September of 1995 the first version of DirectX was released. (They used the name “Windows games SDK” for that version).“
3. ↑ Microsoft: Windows 95 Game SDK Featuring DirectX. 30. September 1995, abgerufen am 17. Juni 2025.
4. ↑ https://devblogs.microsoft.com/oldnewthing/20190930-00/?p=102942 Where did DirectX code names come from? by Raymond Chen
5. ↑ Doom95. 17. Juni 2025, abgerufen am 17. Juni 2025 (englisch).
6. ↑ Microsoft: Games For Windows 95 (Demo disc) (PC). 1995, abgerufen am 17. Juni 2025.
7. ↑ a b c Craig’s Musings: DirectX Then and Now (Part 1). 20. Februar 2006, archiviert vom Original (nicht mehr online verfügbar) am 5. Juli 2008; abgerufen am 31. März 2024.
8. ↑ Smacker. In: MultimediaWiki. 11. April 2007, abgerufen am 4. April 2013 (englisch).
9. ↑ https://web.archive.org/web/20080321171619/http://blogs.msdn.com/oldnewthing/archive/2004/01/22/61647.aspx What happened to DirectX 4? by Raymond Chen
10. ↑ „Microsoft Meltdown 97 Weggeschmolzen“ PC Professionell 10/1997 S. 22
11. ↑ „Multitalent DirectX 6.0“ PC Professionell 08/1998 S. 18
12. ↑ a b „3D-Funktionen aufgebohrt“ PC Professionell 06/1999 S. 148
13. ↑ a b „DirectX wird erwachsen“ PC Professionell 10/99 S. 252 ff
14. ↑ „David gegen Goliath“ PC Professionell 03/1999 S. 126
15. ↑ a b „Trickstudio mit DirectX 8.0“ PC Professionell 03/2001 S. 18 ff
16. ↑ „DirectX 8.0“ PC Professionell 3/2001 S. 212
17. ↑ a b c d DirectX- und Pixel-Shader-Anforderungen für Spiele auf Steam
18. ↑ „DirectX 8.0“ PC Professionell 01/2001 S. 31
19. ↑ „Neue Freiheiten in 3D“ PC Professionell 11/2002 S. 190
20. ↑ „Technik Nvidia GeforceFX“ ab Abschnitt DirectX 9.0 PC Professionell 02/2003 S. 82
21. ↑ Cody Brocious: Alky Project Blog. In: alkyproject.blogspot.com. 18. April 2007, archiviert vom Original (nicht mehr online verfügbar) am 20. April 2007; abgerufen am 2. Juni 2007 (englisch).
22. ↑ Julius Stiebert: Entwicklung an DirectX-10-Wrapper für Windows XP eingestellt. In: golem.de. 8. Januar 2008, abgerufen am 7. Februar 2008.
23. ↑ Peter Steinlechner: Microsoft bringt DirectX 11 und renoviert Spieledienste. In: golem.de. 23. Juli 2008, abgerufen am 23. Juli 2008.
24. ↑ Nico Ernst: Tesselierte Froblins - Videos der AMD-Tech-Demos zur 4850. In: golem.de. 27. Juni 2008, abgerufen am 23. Juli 2008.
25. ↑ Peter Steinlechner: DirectX-11 für Windows Vista verfügbar. In: golem.de. 28. Oktober 2009, abgerufen am 28. Oktober 2009.
26. ↑ Theo Valich: AMD ditches Close-To-Metal, focuses on DX11 and OpenCL. In: tgdaily.com. TG Daily, 6. August 2008, archiviert vom Original (nicht mehr online verfügbar) am 9. August 2008; abgerufen am 8. August 2008 (englisch).
27. ↑ Microsoft announces the end of XNA. 1. Februar 2013, abgerufen am 29. Mai 2024 (englisch).
28. ↑ Christoph Liedtke: Alle Spiele mit DirectX 12 und Vulkan im Überblick. In: gamestar.de. 12. August 2019, abgerufen am 16. Januar 2024.
29. ↑ Martin Fischer: Microsoft nimmt mit DirectX 12 Mobilgeräte ins Visier. In: Heise online. 6. März 2014. Abgerufen am 6. März 2014.
30. ↑ Peter Steinlechner: Microsoft: DirectX-12 mit Unterstützung von AMD bis Qualcomm. In: golem.de. 6. März 2014, abgerufen am 6. März 2014.
31. ↑ Shawn Hargreaves: Announcing DirectX 12 Ultimate. In: DirectX Developer Blog. 19. März 2020, abgerufen am 20. August 2021 (englisch).
32. ↑ Microsoft stellt "DirectX 12 Ultimate" mit vier verpflichtenden "neuen" Grafik-Features vor. In: 3dcenter.org. 20. März 2020, abgerufen am 20. August 2021.
33. ↑ DirectX 9.0c vom Dezember 2006
34. ↑ DirectX 9.0c vom Februar 2010
35. ↑ DirectX 9.0c Redistributable for Software Developers - Multilingual. In: microsoft.com. Microsoft, 9. Februar 2005, archiviert vom Original (nicht mehr online verfügbar) am 9. Mai 2006; abgerufen am 12. Juli 2008 (englisch).
36. ↑ Offizielle DirectX 9.29-Referenz auf www.microsoft.com
37. ↑ Frederik Niemeyer: DirectX 12: Microsoft zwingt Spieler zu Windows-Upgrade, CHIP, 14. November 2014
38. ↑ Panagiotis Kolokythas: Windows 7 erhält DirectX-12-Unterstützung, PC-WELT, 27. August 2019
39. ↑ Raymond Chen: What happened to DirectX 4? 22. Januar 2004, abgerufen am 26. Januar 2011 (englisch).
40. ↑ Raymond Chen: The Old New Thing. 1. Auflage. Pearson Education, 2006, ISBN 0-321-44030-7, S. 330.
41. ↑ Windows 7 - Direct2D für 2D-Darstellung – Artikel bei der GameStar, vom 30. Oktober 2008
42. ↑ https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/june/introducing-direct2d Windows With C++ - Introducing Direct2D, Kenny Kerr, MSDN-Magazine, Ausgabe June 2009 (englisch)
43. ↑ Microsoft: XInput and DirectInput Abgerufen am 11. August 2014
44. ↑ Dmitry Timoshkov: DirectX. In: wiki.winehq.org. 10. November 2011, archiviert vom Original (nicht mehr online verfügbar) am 15. Februar 2012; abgerufen am 16. Februar 2012 (englisch).
45. ↑ DirectX (englisch), ReactOS-Projekt, zugegriffen: 16. Februar 2012
46. ↑ Martin Fischer: Neue 3D-Schnittstelle: AMD Mantle als DirectX-Konkurrenz. In: Heise online. 26. September 2013. Abgerufen am 24. Oktober 2023.

Normdaten (Sachbegriff): GND: 4516280-3 (GND Explorer, lobid, OGND, AKS) | VIAF: 179531118