DirectX
Microsoft DirectX | |
---|---|
Microsoft DirectX-Logo Schriftzug | |
Entwickler | Microsoft Corporation |
Aktuelle Version | 12.0 (für Windows 10) (29. Juli 2015) |
Betriebssystem | Microsoft Windows |
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 , Abgerufen am 6. März 2014.</ref><ref name="DirectX-12 mit Unterstützung von AMD bis Qualcomm">[2], Abgerufen am 6. März 2014.</ref>
Versionshistorie
Legende: | Ältere Version; nicht mehr unterstützt | Ältere Version; noch unterstützt | Aktuelle Version | Zukünftige Version |
---|
DirectX-Version | Versionsnummer | Betriebssystem | Veröffentlichung |
---|---|---|---|
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 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 | |
regelmäßige Veröffentlichungen |
DirectX 9.0c4.09.00.0904 (RC0) | Die letzte Version für Windows 98 und ME ist vom Dezember 2006.<ref>DirectX 9.0c vom Dezember 2006</ref> Die letzte Version für Windows 2000 ist vom Februar 2010.<ref>DirectX 9.0c vom Februar 2010</ref> Die erste 64-Bit-fähige Version ist vom Februar 2005.<ref>DirectX 9.0c vom 9. Februar 2005</ref> | von Oktober 2004 bis August 2007 zweimonatlich; anschließend vierteljährlich; aktuelle Version: Juni 2010 |
DirectX 9.29 | 4.09.0000.0904 | ab Windows XP<ref>Offizielle DirectX 9.29-Referenz auf www.microsoft.com</ref> | 7. Juni 2010 |
DirectX 10 | 6.00.6000.16386 | Windows Vista | 20. November 2006 |
DirectX 10.1 | 6.00.6001.18000 | Service Pack 1 für Windows Vista, Windows Server 2008 mit Direct3D 10.1 |
4. Februar 2008 |
DirectX 11 | 6.01.7600.0000 | Windows Vista SP2, Windows 7 | 22. Oktober 2009 |
DirectX 11.1 | 6.02.9200 | Windows 8 | 26. Oktober 2012 |
DirectX 11.2 | 6.03.9600 | Windows 8.1 | 18. Oktober 2013 |
DirectX 12 | 10.00.10240.16384 | Windows 10<ref>DirectX 12: Microsoft zwingt Spieler zu Windows-Upgrade</ref> | 29. Juli 2015 |
Anmerkungen:
- 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.<ref name="chen_dx4" /><ref>Raymond Chen: The Old New Thing. 1. Auflage. Pearson Education, 2006, ISBN 0-321-44030-7, S. 330.</ref>
- 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
DirectX besteht aus folgenden Teilen:
DirectX Graphics
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“)<ref>Windows 7 - Direct2D für 2D-Darstellung – Artikel bei der GameStar, vom 30. Oktober 2008</ref> 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 und/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 setzt auf Direct3D auf, das heißt, es nutzt dessen Basisfunktionalität. Außerdem emuliert die Funktionsgruppe nicht durch die Hardware unterstützte Funktionen. 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 Backbuffer), Blitting, Clipping, 3D-Z-Puffer, Overlays und direkte Steuerung des Datenflusses durch die Video-Port Hardware (Video-Port Manager).
DirectSound
DirectSound wird zur Wiedergabe und Aufnahme von Soundeffekten, 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 limitiert. 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 XAudio 2 abgelöst wurde, sind keine Samples mehr für DirectSound in den DirectX-SDK-Releases nach November 2007 enthalten.
DirectMusic
Für die Wiedergabe von Musik (MIDI-Musik, allerdings keine komprimierte Musik wie MP3). DirectMusic liefert dazu einen Software-Synthesizer-Service. Verwendet wird ein DLS2-Synthesizer. Siehe DirectShow für die Wiedergabe von komprimierter Musik wie MP3 und Video (AVI, MPEG).
XAudio 2
XAudio 2 basiert auf der Xbox-360-Sound-API und hat DirectSound abgelöst. Die programmierbaren DSP-Programme ermöglichen EAX-ähnliche Effekte auf allen Soundkarten; diese werden allerdings auf dem Hauptprozessor ausgeführt. Dies hat vor allem Kritik seitens des Soundkartenherstellers Creative hervorgerufen, weil auf dessen Karten solche DSP-Programme „in Hardware“ ausgeführt werden könnten, um Spielern somit einen Geschwindigkeitsvorteil zu bieten (durch Entlastung der CPU).
DirectInput
Direct Input 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 (das heißt Ereignis-, Melde- und Warteschlangen) und erfolgt direkt auf die Hardware; ein Geschwindigkeitsvorteil gegenüber der Win32-API. DirectInput erlaubt Anwendungen die Nutzung von möglichen Force-Feedback-Fähigkeiten der Eingabegeräte, um so Kraftrückkopplungseffekte zu erzeugen.
XInput
XInput ist der neue Standard für Eingabegeräte unter Windows XP und späterer Betriebssysteme, sowie für die Xbox 360.<ref>Microsoft: XInput and DirectInput Abgerufen am 11. August 2014</ref> 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 betreiben, empfiehlt es sich, einen entsprechenden Emulator zu verwenden. Ob Microsoft in Zukunft reine DirectInput-Geräte mit XInput unterstützen wird, ist fraglich.
DirectPlay
DirectPlay dient zur Kommunikation von Multiplayerspielen untereinander, die auf mehreren 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 dazu auch OSI-Modell). DirectPlay realisiert keine Mechanismen für das Zusammentreffen der Spieler (Matchmaking) oder das Abrechnen von Spielteilnahmen. 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).
Hinweis: Für viele Spieleentwickler war der gewaltige Overhead von DirectPlay dafür entscheidend, es nicht zu verwenden und lieber einen eigenen effektiveren Netzwerk-Zugriff auf Basis von Winsock zu realisieren. Andere haben sich wegen der festen Bindung an Windows dagegen ausgesprochen, da zum Beispiel für speziell auf Windows-Systemen lauffähige First-Person-Shooter gerne auch eigene Linux-Server entwickelt werden.
DirectShow (ehemals „Direct Media“)
DirectShow oder ehemals ActiveMovie bzw. DirectX Media dient der Verarbeitung von Video- und Audio-Dateien, womit sich verschiedenste Arten von Video-Dateien (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.
DirectSetup
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.
DirectX Media Objects
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.
Funktionsweise
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 (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 nicht 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.
DirectX außerhalb von Windows
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 original 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.<ref name="Wine">DirectX (englisch), Wine-Projekt, zugegriffen: 16. Februar 2012</ref>
- CrossOver: Eine kommerzielle Erweiterung von Wine.
- Darwine: Eine Wine-Portierung für Mac OS X.
- ReactOS: Verwendet einen Teil der Wine-Bibliotheken, darunter auch DirectX, um sich doppelte Entwicklungsarbeit zu sparen.<ref name="reactos">DirectX (englisch), ReactOS-Projekt, zugegriffen: 16. Februar 2012</ref>
Alternativen zu DirectX
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 eine plattformunabhängige Softwareentwicklung. Einige dieser Alternativen wie etwa OpenGL und OpenAL bieten ebenso wie DirectX Hardwarebeschleunigung.
Wichtige APIs:
- Lightweight Java Game Library und JOGL, Open Source Bibliotheken für den Zugriff auf OpenGL-, OpenAL- und OpenCL aus Java Programmen.
- 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, plattformunabhängige Thread-Verwaltung und Netzwerk. Diese Bibliotheken setzen auf DirectX oder OpenGL auf.
Für die neue AMD Grafikkartengeneration "Volcanic Islands" kündigte AMD für Ende 2013 die neue 3D-Schnittstelle AMD Mantle als DirectX-Konkurrenz an.<ref>http://www.heise.de/newsticker/meldung/Neue-3D-Schnittstelle-AMD-Mantle-als-DirectX-Konkurrenz-1967989.html</ref>
Weitere Informationen
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.
Weblinks
- Microsoft DirectX Developer Center (englisch) – Website für Entwickler
- Direct3D11 Tutorials Direct3D11 Tutorials
- DirectX-Wiki (deutsch, englisch und russisch) – DirectXers DirectX-Community
- DirectX – OldVersion.com (englisch) – Ältere Versionen von DirectX
- DirectX World (englisch) – C++-Übungen für Spieleentwickler
- DirectX-10-Bibliotheken für Windows XP – Artikel von „heise online“ vom 24. April 2007
- SIGGRAPH: Microsoft arbeitet an Direct3D 10.1 – Artikel von „heise online“ vom 9. August 2007
- Herunterladen der neuesten Bibliotheken für DirectX 9 bei Microsoft
Einzelnachweise
<references />