| Microsoft DirectX | |
|---|---|
![]() |
|
| Entwickler: | Microsoft Corporation |
| Aktuelle Version: | 10.1 (November 2007 Build) |
| Betriebssystem: | Microsoft Windows |
| Kategorie: | Programmierschnittstelle |
| Lizenz: | MS-EULA |
| Website: | für Endbenutzer |
DirectX [dɪˈrekt eks (AE) bzw. 'daɪrekt eks (BE)] ist eine Sammlung von COM-basierten Programmierschnittstellen (englisch: Application Programming Interface, kurz API) für multimedia-intensive Anwendungen (besonders Spiele) auf der Windows-Plattform und kommt auch auf der Spielekonsole Xbox zum Einsatz.
Die DirectX-Sammlung von Software-Komponenten deckt nahezu den gesamten Multimediabereich ab. Vorrangig kommt es zum Einsatz bei der Darstellung komplexer 2D- und 3D-Grafik, bietet aber auch Unterstützung für Audio, diverse Eingabegeräte (z. B. Maus, Joystick) und Netzwerkkommunikation.
Inhaltsverzeichnis |
Nachdem sich seit Mitte der 1980er Jahre der IBM (kompatible) PC mit dem Betriebssystem MS-DOS als „Computer für Jedermann“ durchgesetzt hatte, begann auch der Siegeszug der grafischen Benutzeroberfläche (engl. GUI) Microsoft Windows. In den 1990ern wurden die verbreiteten Anwendungen zunehmend für Microsoft Windows portiert, und viele neue Anwendungen wurden exklusiv für Windows mit Hilfe der WinAPI entwickelt. Einzige Ausnahme blieben Computerspiele, die anfangs zwar vorwiegend auf den mit besseren Multimediafähigkeiten bestückten Heimcomputern erschienen, aber auch mehr und mehr auf dem PC Einzug hielten.
Windows bot zu diesem Zeitpunkt noch keine optimierten Programmier-Schnittstellen für schnelle Grafik- und Audio-Operationen, die aber für Spiele meist unabdingbar sind. Deshalb wurden Spiele meist nur für MS-DOS entwickelt. MS-DOS bot zwar auch keine speziell für Spiele entworfenen Schnittstellen, aber es erlaubte die völlige Kontrolle über den Prozessor und den ungehinderten Zugriff auf die gesamte angeschlossene Hardware. Vor allem konnte ein Programm unter MS-DOS sicher sein, nicht von anderen gleichzeitig auf demselben Rechner laufenden Programmen behindert zu werden, weil unter dem Singletasking-System MS-DOS immer nur ein einziges Programm gleichzeitig lief. Im Gegensatz dazu müssen Programme unter Multitasking-Systemen wie Windows auf andere Programme Rücksicht nehmen, die auf demselben Rechner simultan laufen. Dadurch behindern und bremsen sich alle Programme gegenseitig.
Microsoft schenkte der Entertainment-Branche und Unterhaltungsmedien wie Computerspielen abseits von Solitär zu diesem Zeitpunkt noch wenig Beachtung.
Nach dem einschlagenden Erfolg des Computerspiels Doom von der Firma id Software, die schon vorher mit Wolfenstein 3D gezeigt hatte, welches technische Potenzial in den eigentlich vorrangig für Büroarbeit verwendeten „IBM-kompatiblen PCs“ steckt, wurde Microsoft hellhörig für die Entwicklung des Unterhaltungssegments. Dem System Windows 95, das genau wie seine Vorgänger bei Erscheinen noch über keine Programmierschnittstelle für Spiele verfügte, wollte Microsoft nachträglich eine Schnittstelle hinzufügen, um den wachsenden Markt der PC-Spieler von dem veralteten Betriebssystem MS-DOS wegzulocken hin auf Windows 95. Diese erste Schnittstellen-Version nannte Microsoft „Game SDK“. Sie bestand lediglich aus einer Handvoll Funktionen, mit denen Grafiken direkt in den Grafikspeicher geblittet werden konnten. Diese erste Schnittstellen-Version wurde von der Spieleindustrie völlig ignoriert, die jahrelang für MS-DOS entwickelt und dort Erfahrung gesammelt hatte.
Parallel dazu entwickelte Microsoft WinG, eine Bibliothek mit identischem Ansatz, jedoch bevorzugt für den 256-Farben-Modus. Diese Bibliothek kam zum Beispiel in „Lemmings for Windows“ zum Einsatz und war auch unter dem Betriebssystem Windows 3.11 (for Workgroups) verfügbar.
Einen weiteren Anlauf unternahm Microsoft mit DirectX (Version 1.0). Microsoft konnte id software dazu anhalten, eine Portierung ihres erfolgreichen Spiels „Doom“ mit diesem API für Windows 95 zu entwickeln. Diese Spiel-Portierung wurde von Microsoft auf einer Messe präsentiert, um Entwickler aus aller Welt dazu zu bringen, mit DirectX direkt für den De-facto-Standard Windows 95 zu entwickeln statt für das veraltete MS-DOS [1].
Aber auch dieser Versuch scheiterte zunächst, da Microsoft den Aufwand weit unterschätze, der für eine brauchbare Programmbibliothek mit auf Spiele optimierten Grafik- und Sound-Funktionen nötig war. Noch Jahre später kamen Spiele auf den Markt, die eigentlich durchgängig Protected-Mode-DOS-Spiele waren und höchstens ein paar zusätzliche Hilfsprogramme (z. B. Editoren) für Windows mitbrachten oder nur die Autoplay-Funktionalität von Windows nutzten.
Erst mit DirectX 3.0, das mit Direct3D auch erstmalig 3D-Funktionalität mitbrachte, erhielt DirectX eine gewisse Reife und wurde allmählich auch von Entwicklern ernstgenommen. Mit ihm erschienen auch die ersten Spiele, die nur noch unter Windows mit DirectX und nicht mehr unter MS-DOS liefen, z. B. Tomb Raider II oder Diablo.
Während der Entwicklung von DirectX 4.0 stellte sich heraus, dass viele Programmierer auf Features 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. [1]. DirectX 6.0 unterstützte erstmals Multitexturing und Bump Mapping. Seit 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 Tesselation erweitert. Hinzu kamen außerdem frei programmierbare Vertex- und Pixel-Shader.
DirectX 8 deckte viele Gebiete der Multimedia- und Spiele-Programmierung ab, wie 2D- und 3D-Grafik, Sound und Musik, Video/Capturing, Eingabe (und über Force Feedback auch „Ausgabe“ auf eigentlichen Eingabegeräten) und Netzwerk (s. u.).
| In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Infos zu den Versionen 6 bis 8.x, vor Allem außerhalb Direct3D
Du kannst Wikipedia helfen, indem du sie recherchierst und einfügst. |
DirectX 9.0 erschien im Juni 2004. Es bot als große Neuerung die so genannte „High-Level Shader Language“ (HLSL, C-basiert), womit Entwickler erstmals leichter 3D-Grafiken und Effekte erstellen konnten. HLSL 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 Neuerungen war eine Bibliothek, die Patch-Meshes und herkömmliche Polygon-Meshes sowie verbesserte Echtzeit-Animationen bot. Die Direct3D-APIs enthielten allesamt erweiterte Programmfähigkeiten bei Low-Level-Grafiken mit programmierbaren Vertex- und Pixel-Shader-2.0-Modellen. 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.0 arbeitete zudem gut mit dem Entwicklungssystem Visual Studio .NET von Microsoft zusammen.
Die Version DirectX 9.0c ist im März 2008 als aktualisierte Version veröffentlicht worden. Nach Aussage von Microsoft ist der Support 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.
Die Version DirectX 10.0 erschien Anfang 2007. Anders als die Vorgänger läuft diese nur unter dem neuen Betriebssystem Windows Vista. Zusätzlich muss im Computer eine für DirectX 10.0 taugliche Grafikkarte eingebaut sein.
Unter den Systemen Windows 98, Me, 2000 oder XP 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 Betriebssystemen nutzbar seien. [2] Das Unternehmen hinter diesem Projekt hat das Vorhaben inzwischen aber eingestellt und den Sourcecode veröffentlicht. [3]
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.
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.
Direct3D 10 unterscheidet sich von seinen Vorgängern weniger durch direkt sichtbare Eigenschaften als vielmehr durch Erweiterung, Modularisierung und Flexibilisierung der 3D-Funktionen. Es wird deshalb erst in Zukunft Anwendungen geben, die die neuen Möglichkeiten so ausschöpfen, dass der Anwender einen spürbaren Fortschritt sieht.
DirectX 10.1 wurde zusammen mit Windows Vista SP1 ausgeliefert und enthält gegenüber DirectX 10 folgende Änderungen, die das Direct3D-API betreffen:
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. Bisher sind lediglich die ATI-Radeon-HD-3000-Serie, ATI-Radeon-HD-4000-Serie und die S3-Graphics-Chrome-400-Serie für DirectX 10.1 geeignet (Stand Juli 2008).
Zusätzlich wird XAudio 2 als Ersatz für DirectSound eingeführt.
Microsoft hat auf der Gamefest-Messe (22.–23. Juli 2008) in Seattle neue Details zum kommenden DirectX 11 offiziell enthüllt [4]. Grundsätzlich sollen alle Grafikkarten, die mit DirectX 10.x kompatibel sind, auch unter DirectX 11 eine vollständige Kompatibilität erreichen (was neue Features von DirectX 11 auf älterer Hardware natürlich ausschließt).
Wesentliche geplante Neuerungen sind:
Lange wurde damit gerechnet, dass DirectX 11 zusammen mit dem sich in Entwicklung befindenden Windows 7 erscheinen sollte. Da die kommende DirectX-Version allerdings auch auf Windows Vista laufen wird, wird derzeit von verschiedenen Quellen vermutet, dass DirectX 11 bereits im 3. oder 4. Quartal 2009 (und somit vor dem geplanten Termin für Windows 7) erscheinen wird [6]. Des Weiteren teilte der technische Entwicklungsleiter für den Grafikbereich bei AMD in einer Rede in Reykjavík mit, dass im ersten Quartal 2009 bereits die voraussichtlich erste DirectX 11 Grafikkarte auf den Markt kommen soll [7].
| DirectX version | Versionsnummer | Betriebssystem | Veröffentlichungsdatum |
|---|---|---|---|
| DirectX 1.0 | 4.02.0095 | 30. September 1995 | |
| DirectX 2.0 | ? | wurde nur mit wenigen Drittanbieterprogrammen zusammen veröffentlicht | 1996 |
| DirectX 2.0a | 4.03.00.1096 | Windows 95 OSR2 und NT 4.0 | 5. Juni 1996 |
| 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 | |
| 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 |
Dezember 1996 |
| 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 |
| DirectX 4.0 | niemals veröffentlicht | ||
| DirectX 5.0 | 4.05.00.0155 (RC55) | verfügbar als Beta für Windows NT 5.0 | 16. Juli 1997 |
| 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 | |
| DirectX 6.0 | 4.06.00.0318 (RC3) | Windows CE als Dreamcast-Implementierung | 7. August 1998 |
| DirectX 6.1 | 4.06.02.0436 (RC0) | 3. Februar 1999 | |
| DirectX 6.1a | 4.06.03.0518 (RC0) | exklusiv für Windows 98 SE | 5. Mai 1999 |
| DirectX 7.0 | 4.07.00.0700 (RC1) | 22. September 1999 | |
| 4.07.00.0700 | Windows 2000 | 17. Februar 2000 | |
| DirectX 7.0a | 4.07.00.0716 (RC0) | 8. März 2000 | |
| 4.07.00.0716 (RC1) | 2000 | ||
| DirectX 7.1 | 4.07.01.3000 (RC1) | exklusiv für Windows Me | 14. September 2000 |
| DirectX 8.0 | 4.08.00.0400 (RC10) | 12. November 2000 | |
| DirectX 8.0a | 4.08.00.0400 (RC14) | letzte Version für Windows 95 | 5. Februar 2001 |
| 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 | |
| DirectX 8.1a | 4.08.01.0901 (RC?) | Direct3D-Update (D3d8.dll) | 2002 |
| DirectX 8.1b | 4.08.01.0901 (RC7) | DirectShow-Korrektur für Windows 2000 (Quartz.dll) | 25. Juni 2002 |
| DirectX 8.2 | 4.08.02.0134 (RC0) | identisch zu DirectX 8.1b, aber mit DirectPlay 8.2 | 2002 |
| DirectX 9.0 | 4.09.00.0900 (RC4) | 19. Dezember 2002 | |
| DirectX 9.0a | 4.09.00.0901 (RC6) | 26. März 2003 | |
| DirectX 9.0b | 4.09.00.0902 (RC2) | 13. August 2003 | |
| 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 | |
| DirectX 9.0c - zweimonatliche Veröffentlichungen | 4.09.00.0904 (RC0) | Die letzte Version für Windows 98 und Windows ME ist vom Oktober 2006.[8] Die erste 64-Bit-fähige Version ist vom Februar 2005.[9] | zweimonatlich vom Oktober 2004 bis August 2007, und vierteljährlich danach; aktuelle Version: August 2008 |
| DirectX 10 | 6.00.6000.16386 | exklusiv für Windows Vista | 20. November 2006 |
| 6.00.6001.18000 | Service Pack 1 für Windows Vista, Windows Server 2008 mit Direct3D 10.1 |
4. Februar 2008 | |
| DirectX 11 | ? | Service Pack 2 für Windows Vista, Windows 7 | Januar 2010 |
Anmerkungen:
| Dieser Artikel oder Abschnitt besteht hauptsächlich aus Listen, an deren Stelle besser Fließtext stehen sollte. |
DirectX besteht aus folgenden Teilen:
DirectX ermöglicht direkte Zugriffe auf die Hardware des Systems, ohne die Programme von der Hardware abhängig zu machen. So wird Spiele-Entwicklern eine Hardware-Abstraktions-Schicht (HAL von engl. hardware abstraction layer) für die Spieleprogrammierung zur Verfügung gestellt, mit der langsame Schnittstellen (zum Beispiel Win GDI) umgangen werden. Funktionen, die von der Hardware und damit nicht von der HAL bereitgestellt werden können, werden in der Hardware-Emulations-Schicht (HEL von engl. hardware emulation layer) emuliert.
Neben DirectX sind auch freie APIs verfügbar, die im Gegensatz zu DirectX nicht auf die Windows-Plattform beschränkt sind. Allerdings sind die APIs nicht so umfassend, können aber große Teile von DirectX ersetzen und ermöglichen eine plattformunabhängige Softwareentwicklung. Einige dieser Alternativen wie etwa OpenGL und OpenAL bieten ebenso wie DirectX Hardwarebeschleunigung.
Wichtige APIs:
Mit der Software Cedega der Firma TransGaming Technologies kann man DirectX-Spiele (bis Version 9) auch unter verschiedenen Linux-Versionen spielen. Mittlerweile ist dies auch mit Wine möglich und der darauf aufbauenden Software CrossOver der Firma CodeWeavers.
Damit Anwendungen, die DirectX nutzen, auch ohne Microsoft-Betriebssysstem genutzt werden können, werden nach dem Prinzip der Blackbox-Beobachtung DirectX-kompatible Bibliotheken erstellt. Grafische Funktionen werden dabei meist mittels OpenGL bereitgestellt. Die Portierung ist notwendig, da für die Verwendung von DirectX eine Windowslizenz erforderlich ist.
Anwendungen für DirectX werden mit Hilfe des DirectX SDK erstellt.
Ein informatives Testprogramm ist DxDiag. Dieses wird mitgeliefert und kann über Start → Ausführen → dxdiag gestartet werden.