Dieser Artikel wurde wegen inhaltlicher Mängel auf derQualitätssicherungsseite derRedaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus demThemengebiet Informatik auf ein akzeptables Niveau zu bringen.Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an derDiskussion! (+)
Begründung: Überarbeitung notwendig, da nicht nur Belege fehlen, sondern auch wesentliche Aspekte der Geschichte, die zu DirectX führte.
Die DirectX-Sammlung von Software-Komponenten deckt nahezu den gesamten Multimediabereich ab. Vorrangig wird es bei der Darstellung komplexer2D- und3D-Grafik eingesetzt, bietet aber auch Unterstützung fürAudio, diverseEingabegeräte (zum BeispielMaus,Joystick undController) undNetzwerkkommunikation.
Nachdem sich seit Ende der 1980er Jahre derIBM-kompatible PC mit demBetriebssystemMS-DOS als „Computer für Jedermann“ durchgesetzt hatte, setzten sich ein paar Jahre später auch zunehmendgrafischen Benutzeroberfläche durch. In den 1990ern wurden die verbreiteten DOS-Anwendungen zunehmend fürMicrosoft Windowsportiert und viele neue Anwendungen wurden für Windows mithilfe derWinAPI entwickelt. Computerspiele und Multimedia-Anwendungen blieben jedoch meist außen vor, da sowohl die etabliertenHeimcomputer, als auch MS-DOS auf dem PC mit einer Vielzahl an kommerziell erhältlichenSoftwarepaketen bessere Schnittstellen für Entwickler und bessere Multimediafähigkeiten für Anwender boten.
Windows bot zu diesem Zeitpunkt noch keine optimierten Programmierschnittstellen für schnelleGrafik- und Audio-Operationen an, die für die meisten Spiele aber unabdingbar waren und einen wichtigen Kaufanreiz darstellten. DasSingle-Task-System MS-DOS erlaubte die völlige Kontrolle über denProzessor und den ungehinderten Zugriff auf die gesamte angeschlosseneHardware, die nicht mit anderen, gleichzeitig laufenden Anwendungen geteilt werden musste. Mit der Umstellung auf dasMulti-Task-System Microsoft Windows mussten Programme ihren gemeinsamen Platz auf dem PC sorgfältig verwalten. Die gewünschteInteroperabilitä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 undZugriffsverletzungen konnten häufiger auftreten. Microsoft schenkte derUnterhaltungsindustrie (Musik, Filme und Spiele) wenig Beachtung und setzte in der Anfangszeit von Windows den Schwerpunkt aufGeschäftsanwendungen.
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 alsSpezialeffekt in Filmen, alsTrenner bei TV-Sendungen oder in derWerbung. 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 undSprites boten. Der PC selbst bot bis auf Steckplätze für eigeneSoundkarten oder anderes Zubehör nur die Fähigkeiten seiner Standardkomponenten.
Mit Spielen wieStar Fox für dasSuper Nintendo oder auch Spielen wieWolfenstein 3D undDoom auf dem PC wurde das Jahr1993 zu einem Schlüsseljahr, in welchem die Breite des Heimanwendermarktes erstmals in Kontakt mit 3D-Grafik inEchtzeit auf eigener Hardware im eigenen Zuhause kam. Diese Spiele umgingen viele der Beschränkungen ihrer Hardware durcheigene Chips (Star Fox) oder durch eine äußerst performanteRendering Engine, die am Ende nur denVGA-Grafikmodus und direkten Zugriff auf denVideospeicher 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 vollesEinzelbild aus 320 × 200 Pixeln mit je 256 Farben war demnach 64kB 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.
Seit jeher bestand das Problem bei der Entwicklung von Spielen für MS-DOS, dassPeripheriegerä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 eingebautenSystemlautsprecher 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 richtigenTreiber 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 denDisketten, 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.
Durch die SpieleDoom undWolfenstein 3D vonid Software erkannte Microsoft das Potenzial für weitere Anwendungen im Heimbereich, die den Absatz des PCs erhöhen und andere Anbieter wieCommodore oderApple aus dem Markt drängen würden. Windows eignete sich aus der Sicht von Spielentwicklern nicht für ihre Produkte, da dasgeschü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 MicrosoftWinG, 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ürWindows 3.1 eingeführt, da sichGDI für Spiele als ungeeignet erwies, wurde aber bis auf eine Beta-Version von Doom durchGabe Newell (WinDOOM) undCivilization 2 von der Industrie wenig beachtet. WinG wurde inWindows 95 als Teil derWindows API fortgeführt.
Unter dem NamenWindows Games SDK veröffentlichte Microsoft für Windows 95 eine Schnittstellenbibliothek, die später DirectX werden sollte.[2][3] Sie beinhaltete bereits
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 einerHardwareabstraktionsschicht (englischhardware 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 der32-Bit-Architektur, inklusive eines Adressraums, der die Verwendung vonArbeitsspeicher in der Größe von bis zuvier Gigabyte erlaubte.
DirectX in der Version 1.0, CodenameManhattan, wurde am 30. September 1995 veröffentlicht.[4] Das SpielDoom, dessen erste Windows-Version nie über eine Beta-Version hinauskam, wurde noch einmal für Windows 95 umgeschrieben und alsDoom95 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-ROMGames for Windows 95 in einerShareware-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 imProtected Mode waren. Dabei war durch beigelegteLevel-Editoren oder die Nutzung derAutoplay-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 keinenVorteil gegenüber der etablierten Entwicklung für MS-DOS.
DirectX Version 2.0 (Codename Orion) wurde am 5. Juni 1996 veröffentlicht.[7] Nach Release von DirectX 2.0 wurde von Microsoft die FirmaRendermorphics gekauft, die erstmals eine 3D-Implementierung für DirectX vornehmen sollte.
DirectX Version 3.0 (Codename Orange) erschien am 15. September 1996. DirectX 3.0 war die erste Version, die mit der KomponenteDirect3D[7] auch hardwarebeschleunigte 3D-Funktionalität mitbrachte, die bis zu diesem Zeitpunkt nur von Konsolen wie derPlayStation 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-BibliothekRAD Smacker[8] abgespieltenFMV-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 BeispielDiablo.
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.
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 neueGrafikbibliothek fürgrafische 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 undMMX. Mit letzterem wurden beiBit-blit-Operationen eine Geschwindigkeitssteigerung um den Faktor 2 erreicht. Dazu kamen die FeaturesSort IndependentAntialiasing,Range Based Fog,Anisotropic Texture Filtering undBufferless Hidden Surface Elimination.[10]
Die früher unterActiveMovie zur Wiedergabe von Video auf Windows verwendete Schnittstelle kommt alsDirectShow zu DirectX.
DirectX 6.0 (Codename Kool-Aid) unterstützte erstmals Multitexturing (die Verwendung von mehr als einer Textur auf einem Objekt) undBumpmapping. Außerdem wurde der3DNow-Befehlssatz vonAMD-Prozessoren unterstützt. Des Weiteren wurde die Performance verbessert: gegenüber DirectX 5.0 brachte DirectX 6.0 laut Aussage vonPC Professionell 8/98 einen Geschwindigkeitsvorteil von 14 % beimRiva 128 Chipsatz und 28 % beimVoodoo Graphics Chipsatz.[11] Von derGame Developers Conference wurde berichtet, dass DirectX 6.0 für Spieleentwickler leistungsfähig genug war, um auf chip-spezifischeProgrammierschnittstellen, wie bspw. dieGlide-API zu verzichten, allerdings erwies sich dieses Urteil als verfrüht.[12] Die GrafikkartenVoodoo 3,4 und5 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 undDepth of Field, die DirectX 6.x und auch das spätere DirectX 7 noch nicht unterstützten.[13]
In DirectX 6.1 kam die Unterstützung derSSE-Befehlssatzerweiterung desPentium 3 hinzu.[14] Außerdem wurdeDirectMusic als eine mächtige Live-Produktionsschnittstelle für Musikausgabe hinzugefügt.
Ab Version 7 gehörenTransform and Lighting und Cubic Environment Mapping (CubeMaps) zum Funktionsumfang. Das T&L-Paket wurde in der darauffolgenden Version deutlich ausgebaut und um Funktionen wieTriangle Tessellation erweitert. Dazu kam die Unterstützung von herstellerspezifischen Erweiterungen, die es unter anderem erlaubten, frei programmierbareVertex- undPixel-Shader diverser Grafikchips wie die derGeforce 256 zu nutzen.[12][13][15] Aufgrund eines Fehlers in DirectX 7.0 konnte die T&L-Einheit der Geforce-Karten inWindows 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]
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 undDirect3D wurden inDirectX 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 von3DFX,ATI undNvidia erweitert. Dazu gehört die Unterstützung vonPixel- undVertexshader in Version 1.1[17], sowie3D-Texturen.[18]
Außerdem wurde ein Großteil der 3D-Funktionen von DirectX 8.0 auf den angekündigten NV20-Prozessor derNvidia-GeForce-3-Serie optimiert, da Microsoft beabsichtigte, die erste Xbox mit dem verwandten Grafikchip NV2A von Nvidia auszustatten. Die Programmiersprache derShader 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 seinerx87FPU, wodurch sich erhebliche Leistungssteigerungen ergaben. Die Einführung der Shader erlaubten neue Effekte wie bspw.Per-Pixel-Lighting, besseresPer-Pixel-Bump-Mapping, Spline Surfaces undvolumetrische Nebel mit Hardwarebeschleunigung. Neben den Shadern wurde DirectX 8.0 auf die Unterstützung der Fähigkeiten vonFull-Scene Antialiasing,Motion Blur,Depth of Field,Point Sprites und 3D-Texturen erweitert.
InDirectX Audio wurdenDirectSound undDirectMusic zusammengefasst, was die Synchronisation vonWave- undMIDI-Dateien vereinfachte. DirectX Audio unterstützt im Zusammenspiel mit DirectX Play Sprachkommunikation. Der DirectX MusicSynthesizer unterstützt nun denDLS2 Standard. Außerdem wurde mit DirectX Audio Scripting ermöglicht, das ein situationsbedingtes Abspielen von Musikstücken erlaubt.
DieDirect 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.
InDirectX Input wurde durch die Einführung von Action Mapping, einer Tastenzuweisung, die Ansteuerung neuer Eingabegeräte verbessert.
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 vonDisplacement Mapping und das Rendering in 64 und 128 BitFloating 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.
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 wennWindows Vista und DirectX 10/10.1 in der Praxis zum Einsatz kommen. Im Juni 2010 veröffentlichte Microsoft die aktualisierte Version 9.29, welche lautdxdiag aber weiterhin DirectX 9.0c entspricht.
Die Version DirectX 10.0 erschien Anfang 2007. Anders als die Vorgänger lief diese nur unter den Betriebssystemen Windows Vista undWindows 7. Zusätzlich musste im Computer eine für DirectX 10.0 taugliche Grafikkarte eingebaut sein. Unter den SystemenWindows 98,Me, 2000,XP oderServer 2003 stand weiterhin nur DirectX 9.0c zur Verfügung.
Neu an Version 10 war nur Direct3D 10, das das neueWindows Display Driver Model undShader Model 4 benutzte, kombiniert mit strengeren Anforderungen an die Hersteller vonGrafikkarten, die die Direct3D-10-Kompatibilität für sich in Anspruch nehmen wollten.
Windows Vista war 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, wieWindows 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 keinecap-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.
Im April 2007 kamen Meldungen auf, wonach die Firma Falling Leaf Systems LLC plante, die neuen DirectX-10-Funktionen mittels eigener Bibliotheken und eines Wrappers unter Mac OS X und Linux nutzbar zu machen. Anders als etwa im Fall des „Wine“-Projekts hätte dies die Verwendung von DirectX-10 auch auf anderen (älteren) Windows-Versionen ermöglicht.[21] Das Unternehmen stellte einige Testversionen für Entwickler zur Verfügung, beendete jedoch seine Tätigkeit im Januar 2008 aus ungenannten Gründen, ohne die Entwicklung abzuschließen. Die bis dato erreichten Ergebnisse wurden als Open-Source Code der Öffentlichkeit zur Verfügung gestellt.[22][23]
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 wirdXAudio2 als Ersatz für DirectSound eingeführt.
Microsoft hatte bereits auf der MesseGamefest (22. bis 23. Juli 2008) in Seattle neue Details zu DirectX 11 offiziell enthüllt.[24]
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 dieGPGPU-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 allenAMD-Grafikkarten ab der HD-5XXX Serie sowie von allenNvidia-Grafikkarten ab der GeForce-GTX-4XX-Serie unterstützt.[25]
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 perWindows Update.[26]
Der technische Entwicklungsleiter für den Grafikbereich bei AMD teilte in einer Rede inReykjavík mit, dass schon im ersten Quartal 2009 die voraussichtlich erste DirectX-11-Grafikkarte auf den Markt kommen sollte.[27] Dies war allerdings erst mit dem Erscheinen derATI-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.[28]
Microsoft hat DirectX 12 auf derGame Developers Conference in San Francisco am 20. März 2014 vorgestellt. Ähnlich wieAMD Mantle bietet DirectX 12 über eine Low-Level-API die Möglichkeit zur direkten, hardwarenahen Programmierung.[29] 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 derXbox One. Die ersten Spiele mit DirectX-12-Unterstützung erschienen Ende 2015. DirectX 12 wird fürRaytracing auf kompatiblenNvidia-RTX-Grafikkarten benötigt.[30][31] 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 wieVulkan, einer API, die aus AMD Mantle hervorgegangen ist und von einem breiten Konsortium aus der Industrie unterstützt wird.
Am 19. März 2020 wurde von Microsoft imDirectX 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 abGeForce-20-Serie oder eine AMD-Grafikkarte basierend auf derRDNA-2-Architektur nötig. DieXbox Series X ist die einzige Videospielkonsole, die DirectX 12 Ultimate unterstützt. SonysPlayStation 5, die auf die gleiche Hardwarebasis setzt, fehlt es an softwareseitiger Unterstützung, da der japanische Hersteller andere Grafik-APIs einsetzen wird.[32][33]
Ä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 undXbox
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 undXbox 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.[34] Die letzte Version für Windows 2000 ist vom Februar 2010.[35] Die erste 64-Bit-fähige Version ist vom Februar 2005.[36]
von Oktober 2004 bis August 2007 zweimonatlich; anschließend vierteljährlich; aktuelle Version: Juni 2010
Ältere Version; nicht mehr unterstützt: DirectX 9.29
DirectX 4 wurde nie veröffentlicht. Raymond Chen erklärt in seinem BlogThe 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.[40][41]
Die Versionsnummer, die von MicrosoftsDxDiag-Tool (Version 4.09.0000.0900 und höher) gezeigt wird, nutzt das Format „x.xx.xxxx.xxxx“ für Versionsnummern. Jedoch wird in derRegistry 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.
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“)[42][43] 2D- und (mit „Direct3D“)3D-Grafik.
DirectX Graphics stellt sowohl eine Low-Level-API (Direct3D) als auch eine High-Level-API (Direct3DX) bereit. DieLow-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.
DieHigh-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 derHardware Emulation Layer (HEL) die Möglichkeiten vonMMX-Prozessoren zur Manipulation von Bildern und greift auf Funktionen des GDI zurück. Unterstützt werden unter anderem Seitenumschaltung (Flipping) (sieheDoppelpufferung),Blitting,Clipping, 3D-Z-Puffer, Overlays und direkte Steuerung des Datenflusses durch die Video-Port Hardware (Video-Port Manager).
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 basiert auf der Xbox-360-Sound-API und hat DirectSound abgelöst. Die programmierbaren DSP-Programme ermöglichenEAX-ä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 demHauptprozessor ausgeführt. Dies hat vor allem Kritik seitens des HerstellersCreative 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 ist der neue Standard für Eingabegeräte unter Windows XP und späterer Betriebssysteme sowie für die Xbox 360.[44] 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.
DirectInput unterstützt Eingabegeräte, wieTastatur,Maus,Joysticks usw. und ermöglichtForce-Feedback-Effekte (zum Beispiel das Vibrieren einesGamepads oder Widerstand beim Bewegen eines Joysticks) und unterstützt den Zugriff aufanaloge unddigitaleEingabegeräte, welche ein absolutesKoordinatensystem verwenden. Ein Eingabegerät kann über bis zu sechs Bewegungsachsen und 32 Knöpfe verfügen. Der Zugriff über DirectInput umgeht dasWindows Message System, einen systemweitenNachrichtenbus, und erfolgt direkt auf die Hardware. DirectInput erlaubtAnwendungen die Nutzung von möglichenForce-Feedback-Fähigkeiten der Eingabegeräte, um so Kraftrückkopplungseffekte zu erzeugen.
Für die Wiedergabe und Live-Produktion von Musik und Raumklang. DirectMusic liefert dazu unter anderemSoftware-Synthesizer und einenDLS2-Sampler. Für die Wiedergabe von komprimierten Musikdateien wie MP3 und Video (AVI,MPEG) wird DirectShow verwendet.
DirectPlay dient zur Kommunikation vonMultiplayerspielen untereinander, die auf verschiedenen Computern laufen (bei Netzwerkspielen oderOnlinespielen). Im Wesentlichen handelt es sich um ein Protokoll auf Anwendungsebene, und es ist somit unabhängig von konkret genutzten Protokollen der Transport- und Übertragungsebene (sieheOSI-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 vonWinsock vorzuziehen oder andere Bibliotheken zu nutzen. Außerdem wurden für Spiele mit hohem Datendurchsatz, wieFirst-Person-Shooter, bevorzugtLinux-basierteMehrspieler-Server entwickelt, für die das proprietäre DirectPlay ungeeignet war.
DirectShow, vor seiner Einführung in DirectX ActiveMovie, später DirectX Media dient der Verarbeitung vonVideo- undAudiodateien, womit sich verschiedenste Arten von Videodateien (AVI,MPEG) und Ton-Dateien (z. B.MP3) wiedergeben oder erstellen lassen. Es wird auchStreaming 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 wurdeFull 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 mitIngame-Grafik, also der spieleigenen Grafik aus seiner Engine, verbreitet.
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ügbareRechenleistung begrenzt. Es passt sich automatisch dem Leistungsspektrum der installierten Soundkarte an. Basiseffekte, wieVolume,Frequency Control,Panning bzw. Balance, zusätzliche Effekte, wieReverb (Halleffekt),Chorus,Distortion,Equalization und 3D-Effekte, wieRolloff,Amplitude Panning,Muffling,Arrival Offset undDoppler 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 bietet Möglichkeiten, Audio- undVideo-Ströme zu verändern, und kann auch zusammen mitDirectSound und DirectShow verwendet werden.
DirectX Video Acceleration ist eine vonMicrosoft entwickelteProgrammierschnittstelle (API) fürWindows undXbox 360, mit der es ermöglicht wird, dieVideodekodierung per Hardware zu beschleunigen, indem unter anderem der Zugriff auf dieGPU 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 dieMedia Foundation integriert.
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 (englischhardware emulation layer,HEL)emuliert.
Inzwischen hat sich die Industrie auf einheitliche Schnittstellen und Standards geeinigt und diese als offenen Standard mit dem NamenVulkan 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.
Neben der in aktuellenWindows-Versionen enthaltene DirectX-API vonMicrosoft gibt es auch Varianten für andereBetriebssysteme. 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 mittelsOpenGL bereitgestellt. Beispiele von DirectX-Implementierungen:
Cedega: Eine kommerzielle Win32- und DirectX-Implementierung mit dem Ziel, Windows-Spiele unter Linux lauffähig zu machen.
Wine: EinOpen-Source-Projekt mit dem Ziel, eine vollständigeWin32- undWin64-API und damit auch DirectX fürLinux- undUnix-artige Betriebssysteme zu erstellen. Bei der DirectX-Implementierung von Wine handelt es sich nur um eine schlanke Abstraktionsschicht zumX-Server und OpenGL.[45]
Neben DirectX sind auchfreie 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 Entwicklungplattformübergreifender Software. Einige dieser Alternativen wie etwaOpenGL undOpenAL bieten ebenso wie DirectX Hardwarebeschleunigung.
Wichtige APIs:
OpenAL für (3D-)Sound, ersetzt DirectSound und DirectMusic
OpenGL für (3D-)Grafik, ersetzt Direct3D bzw. DirectX Graphics
OpenML fürMultimedia-Verarbeitung, d. h. vor allem Video, ersetzt DirectShow bzw. DirectX Media
SFML,SDL,ClanLib oderAllegro 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.
Anwendungen fürDirectX werden mit Hilfe des DirectXSDK erstellt.
Ein informatives Testprogramm ist dasDirectX-Diagnoseprogramm. Es ist in Windows enthalten und kann überStart → 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.
Commons: DirectX – Sammlung von Bildern, Videos und Audiodateien
DirectX Developer Blog. In: devblogs.microsoft.com. Abgerufen am 16. Januar 2024 (englisch, Neuigkeiten, Ankündigungen und aktuelle Entwicklungen zum Thema DirectX).
DirectX 11 Tutorials. In: rastertek.com. Archiviert vom Original (nicht mehr online verfügbar) am 16. Januar 2024; abgerufen am 29. Januar 2025 (englisch).
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).
↑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.“
↑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).“
↑„Neue Freiheiten in 3D“ PC Professionell 11/2002 S. 190
↑„Technik Nvidia GeforceFX“ ab Abschnitt DirectX 9.0 PC Professionell 02/2003 S. 82
↑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).
↑Cody Brocious: Alky Project. In: Blog des Alky-Project. 6. Januar 2008, archiviert vom Original (nicht mehr online verfügbar) am 10. Januar 2008; abgerufen am 14. September 2025 (englisch).
↑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).
↑DirectX (englisch), ReactOS-Projekt, zugegriffen: 16. Februar 2012