DirectX

DirectX

Information
Entwickelt von Microsoft
Letzte Version 12 (19. Mai 2019)
Betriebssystem Microsoft Windows
Typ Programmierschnittstelle
Lizenz EULA
Dokumentation docs.microsoft.com/windows/win32/directx

Microsoft DirectX ist eine Sammlung von Bibliotheken zum Programmieren von Multimediaanwendungen , insbesondere Spielen oder Programmen mit Video , auf Microsoft- Plattformen ( Xbox , Windows- Betriebssysteme ).

Die verschiedenen Bibliotheken

Ursprünglich begann der Name jeder dieser Bibliotheken mit Direct, zum Beispiel: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound und so weiter. DirectX ist der generische Name, der sich auf all diese Technologien bezieht. Im Laufe der Zeit wurde diese Namenskonvention nicht mehr verwendet, wobei das X die Technologien namens Xact, Xinput ablöste und sich der großen Familie der DirectX-Technologien anschloss. Als Microsoft mit der Entwicklung einer Konsole begann , die diese Technologien intensiv nutzte, war das X vorherrschend, was möglicherweise zum Namen Xbox geführt hat (und später Xbox 360 , Xbox One und dann Xbox Series X und S ).

Direct3D (die Bibliothek für Echtzeit-3D) wird häufig bei der Entwicklung von Spielen für die Microsoft Windows-Plattform , für Xbox und Xbox 360 verwendet . Direct3D wird auch für andere Arten von Anwendungen verwendet, die auf hochwertige 3D-Grafiken zur Visualisierung komplexer Daten angewiesen sind, beispielsweise im CAD / CAM- Bereich, obwohl der Konkurrent OpenGL in diesem Bereich besser etabliert ist, da auf vielen weiteren Plattformen vorhanden. Direct3D ist vielleicht eine der bekanntesten DirectX-Technologien, daher ist es nicht ungewöhnlich, dass der Name DirectX anstelle von Direct3D verwendet wird.

Die Vielzahl der DirectX-Komponenten gibt es in zwei Formen. Die eine diente nur dazu, mit diesen Technologien entwickelte Anwendungen ( Runtime-Komponenten ) auszuführen , die andere ist ein Development Kit für Entwickler. Anfangs wurden die für die Ausführung der Anwendungen bestimmten Komponenten mit den Spielen, die sie verwendet haben, neu verteilt, in den neueren Versionen sind sie auch mit Windows vorinstalliert. Das SDK steht als kostenloser Download von der Microsoft Development Site (MSDN) zur Verfügung . Der Laufzeitteil ist proprietär und die Quellen sind nicht zugänglich. Die Quellen der SDK-Beispiele sind mit diesem verfügbar.

Direct3D-Versionen 9Ex und 10 wurden von Windows Vista verwendet . Diese beiden Versionen nutzten spezifische Funktionen des neuen Windows-Anzeigetreibermodells, das mit Windows Vista erschienen ist. Die neue grafische Windows-Infrastruktur unterstützt die Virtualisierung der grafischen Hardware gegenüber mehreren Anwendungen und Diensten, beispielsweise dem Desktop Window Manager (der Vista Desktop Manager bei aktiviertem Aero). Bisher hatten Anwendungen mit Windows XP exklusiven Zugriff auf die Grafikkarte und konnten deren Ressourcen beanspruchen.

Auf dem PC ist DirectX derzeit Version 12 für Windows 10 , Version 11 für Windows 7 , für Windows Vista und Windows Server 2008 und 9.0c für alle früheren Versionen von Windows .

Komponenten

Die Komponenten, aus denen DirectX besteht, sind:

Historisch

Bis zu DirectX 9

In 1994 , Microsoft war über sein Betriebssystem zu starten, Windows 95 . Einer der bestimmenden Faktoren für den Erfolg eines jeden Betriebssystems (OS) bleibt die Bandbreite an Software, die es laufen lässt. Drei Microsoft-Mitarbeiter – Craig Eisler, Alex St. John und Eric Engstrom – waren tatsächlich ziemlich besorgt, dass eine Reihe von Entwicklern anscheinend der Meinung waren, dass Microsofts vorheriges Betriebssystem MS-DOS eine bessere Plattform für Spiele sei, was bedeuten könnte, dass weniger Spiele dies tun würden für Windows 95 entwickelt werden, was sich negativ auf den Erfolg dieses Betriebssystems auswirken könnte.

MS-DOS ermöglichte den direkten Zugriff auf die Grafikkarte, Tastatur, Maus, Soundkarten und andere Teile des Systems im Gegensatz zu Windows 95, das für jeden Prozess spezifische Adressraumkonzepte einführte. Microsoft musste den Entwicklern daher das bieten, was sie wollten; zudem war eine schnelle Bereitstellung erforderlich, da der Release-Termin des neuen Betriebssystems nur noch wenige Monate entfernt war. Eisler, St. John und Engstrom machten sich dann an die Arbeit an einer Lösung für dieses Problem, die sie DirectX nannten.

Die erste Version von DirectX wurde in der Öffentlichkeit veröffentlicht September 1995unter dem Namen Windows Games SDK. Dies war DCIs Ersatz für Win32 und die für Windows 3.1 verfügbare WinG- API . Ein Entwicklungsteam von ATI Technologies machte Microsoft auf eine Reihe von Grafiktechnologien speziell für die Spielewelt aufmerksam.Die Entwicklung von DirectX wurde vom Team von Eisler (Chefentwickler), St. John und Engstrom (Projektmanagement) geleitet. Kurz gesagt, es ermöglichte allen Windows-Versionen seit Windows 95 , von leistungsstarken Multimedia-Funktionen zu profitieren. Eisler schrieb in seinem Blog über die Raserei, mit der DirectX- Versionen 1 bis 5 gemacht wurden.

Bevor DirectX existierte, hatte Microsoft bereits OpenGL unter Windows NT unterstützt . OpenGL erforderte damals High-End-Hardware, die Anwendern mit erheblichen finanziellen Mitteln wie in der Industrie und allgemein Anwendern von CAD-Systemen vorbehalten blieb . Direct3D (eingeführt von Eisler, Engstrom und St. John als Alternative zu OpenGL von SGI ) sollte eine leichtere und spezialisiertere Begleittechnologie für Spiele sein. Mit der rasanten Entwicklung von Grafikkarten und Computern wurde OpenGL zu einem De-facto-Standard und einer für alle zugänglichen Technologie. Zu dieser Zeit könnte der Konflikt zwischen den Unterstützern jeder der beiden APIs tobt sein, da Microsofts Initiative als Wunsch gesehen wurde, die Verwendung von OpenGL zu marginalisieren (siehe Fahrenheit oder Direct3D vs. OpenGL). Auf jeden Fall wird OpenGL manchmal in Verbindung mit bestimmten DirectX-APIs verwendet: Tatsächlich ist OpenGL das Gegenstück zu Direct3D und enthält nicht unbedingt Funktionen, die es ermöglichen, Tastatur- oder Mauseingaben oder Sound zu verwalten. Dies auch wenn heute Bibliotheken wie SDL diesen Anforderungen ebenfalls gerecht werden und ebenfalls weit verbreitet sind.

In seiner Konsolenversion wurde DirectX als Rückgrat der für die Entwicklung auf Xbox und Xbox 360 angebotenen APIs verwendet . Die API wurde gemeinsam von Microsoft und Nvidia entwickelt , die die auf der ursprünglichen Xbox vorhandene Grafikhardware bereitgestellt haben. Die für diese Version der Xbox verfügbare API war mehr oder weniger äquivalent zu DirectX 8.1 , sie hieß DirectXbox, die zu Xbox abgekürzt wurde, um den Handelsnamen zu erhalten.

Im Jahr 2002 veröffentlichte Microsoft DirectX 9, das längere Shader und Version 2.0 von Vertex-Shadern unterstützt. Seitdem hat Microsoft DirectX 9 weiterentwickelt, indem es beispielsweise die Unterstützung für das Shader- Modell 3.0 mit der DirectX 9.0c- Version hinzugefügt hat , die in . geliefert wirdAugust 2004.

In April 2005, DirectShow wurde vom DirectX SDK in das Microsoft Platform SDK verschoben. DirectX ist jedoch weiterhin erforderlich, um die DirectShow-Beispiele zu kompilieren.

DirectX 10

DirectX 10 ist ein wichtiges Update der DirectX-API. Nur ab Windows Vista verfügbar , frühere Versionen von Windows können keine Anwendungen ausführen, die ausschließlich auf dieser API-Version basieren. Die von DirectX 10 eingeführten Änderungen sind tiefgreifend, aber nur der Direct3D-Teil ist wirklich davon betroffen. Viele Teile der DirectX-API gelten in der neuesten Version des SDK als veraltet und sind aus Kompatibilitätsgründen nicht mehr vorhanden: DirectInput wird zu Gunsten von XInput, DirectSound zu Gunsten von XACT und Xaudio2 abgelöst und verliert seinen direkten Zugriff auf die Hardware unter Windows Vista. Tatsächlich führt der neue Audio-Stack von Vista eine neue API namens WASAPI ein, auf die die Funktionalitäten von DirectSound umgeleitet wurden. Die DirectPlay DPLAY.dll-Bibliothek ist ebenfalls verschwunden und wurde durch eine Bibliothek namens dplayx.dll ersetzt.

Aus Kompatibilitätsgründen sind unter Windows Vista mehrere Versionen von Direct3D installiert:
Direct3D 9 bietet die gleichen Funktionalitäten wie die für Windows XP verfügbare Version von Direct3D 9 . Dies ist die einzige verfügbare Version, solange kein Windows Display Driver Model-Treiber mit Vista installiert wurde, zum Beispiel direkt nach einem Update, wenn nur ein XP-Grafiktreiber (XPDM) vorhanden ist.

Direct3D 9Ex (auch bekannt als 9.0L oder 9.L, das L bezieht sich auf Longhorn, der vor seiner Veröffentlichung verwendete Windows Vista-Codename): Diese Version ermöglicht es Ihnen, von bestimmten Funktionen zu profitieren, die durch die Verwendung der WDDM- Treiber eingeführt wurden, während sie jetzt kompatibel mit Anwendungen, die für Direct3D 9 geschrieben wurden . Die Windows Aero-Schnittstelle basiert auf D3D 9Ex und verwendet einige der Funktionen, die in Direct3D 9 nicht vorhanden sind, wie z. B. die Möglichkeit, DirectX-Oberflächen für mehrere Prozesse freizugeben .

Direct3D 10  : Soll den direktesten und vollständigsten Zugriff auf moderne Grafikkarten über das neue WDDM-Treibermodell bieten. Diese Version enthält eine Vielzahl neuer Funktionen wie die Möglichkeit, die HLSL-Sprache in ihrer Shader Model 4- Version zu verwenden .

Direct3D 10.1 ist ein kleineres Update für Direct3D 10, das verteilt wird und Windows Vista Service Pack 1 erfordert . Diese Version fügt einige zusätzliche Funktionen hinzu, um Entwicklern mehr Kontrolle über die Qualität des resultierenden Bildes zu geben. Diese Version hat ihre eigenen Anforderungen und erfordert die Unterstützung von Shader Model 4.1 für 32-Bit-Gleitkommaoperationen.

DirectX 10.1 nutzt weiterhin alle DirectX 10- kompatiblen Karten vollständig aus , aber um von allen neuen Funktionen zu profitieren, benötigen Sie eine geeignete Karte.

DirectX 11

Microsoft hat DirectX 11 auf dem 'Gamefest 08' in Seattle vorgestellt, mit geplanten Funktionen wie GPGPU (DirectCompute)-Unterstützung, Direct3D11 mit Tesselation sowie verbessertem Multi-Threading, um Videospielentwicklern zu helfen, Multi-Core-Software zu erreichen. Direct3D 11 läuft unter Windows Vista und Windows 7. Es funktioniert auch auf den folgenden Versionen. Elemente der neuen APIs wie 'Multithreaded Resource Handling' können von Direct3D 9/10 / 10.1 Hardware unterstützt werden. Die Hardware-Tessellation sowie das 'Shader Model 5.0' erfordern Direct3D 11. Microsoft hat Direct3D 11 zwischenzeitlich aktualisiert. Direct3D 11 ist eine Obermenge von Direct3D 10.1 - alle Features der Version 10.1 sind vorhanden, die neuen Features sind erst dann verfügbar, wenn erforderlich. Dies für eine bessere Kompatibilität.

DirectX 11.1 ist in Windows 8 vorhanden . Es unterstützt WDDM 1.2 für eine bessere Leistung, bietet eine verbesserte Integration von Direct2D, Direct3D, DirectCompute und umfasst DirectXMath, XAudio2 sowie XNA-Bibliotheken des XInput-Frameworks. Es enthält auch stereoskopische 3D-Unterstützung.

DirectX 11.2 ist ein exklusives Windows 8.1 . Diese Entwicklung der API bringt Unterstützung für WDDM 1.3, eine dynamische gemeinsame Nutzung von Ressourcen zwischen den verschiedenen Speichern des Computers (genannt gekachelte Ressourcen ) sowie andere kleinere Entwicklungen.

DirectX 11.3 ist eine neue Entwicklung der API, die bestimmte Funktionen von DirectX 12 haben wird, insbesondere auf der Ebene von Direct3D.

DirectX 12

das 6. März 2014, Microsoft hat die Ankündigung von DirectX 12 auf der Game Developers Conference vom 17.21. Märzin San Francisco . Diese Version von DirectX ist für Windows 10 , Xbox One und Windows Phone verfügbar und bietet einen niedrigeren Zugriff auf die Ressourcen der Grafikschaltungen, um eine bessere Leistung und einen geringeren Stromverbrauch zu erzielen. Die verwendeten Mittel bestehen darin, die Verteilung der verwendeten Ressourcen zu erleichtern, um Multi-Prozesse und Multi-Grafikkarten besser auszunutzen.


Am Mittwoch, den 20. Mai 2020, hat Microsoft die Portierung von DirectX 12 unter das Betriebssystem Linux im Rahmen seines Wunsches bekannt gegeben, Windows 10 näher an Linux zu bringen. Deren Quellcode ist Open Source und kann kostenlos eingesehen werden.

Ports außerhalb von Microsoft

Obwohl DirectX eine API für das Windows- Betriebssystem ist , gibt es Treiber und Softwarebibliotheken, die einen Teil der API auf anderen Betriebssystemen bereitstellen, wie zum Beispiel:

Versionen

Ausführung Veröffentlichungsdatum
Wesentlich Unerheblich Versionscode
1 1.0 4.02.0095 30. September 1995
2 2.0 4.03.00.1096 1996
2.0a 5. Juni 1996
3 3.0 4.04.00.0068 15. September 1996
4.04.00.0069 1996
3.0a 4.04.00.0070 Dezember 1996
3.0b
4 4.0 Nie raus
5 5.0 4.05.00.0155 (RC55) 16. Juli 1997
5.2 4.05.01.1600 (RC00) 5. Mai 1998
4.05.01.1998 (RC0) 25. Juni 1998
6 6.0 4.06.00.0318 (RC3) 7. August 1998
6.1 4.06.02.0436 (RC0) 3. Februar 1999
6.1a 4.06.03.0518 (RC0) 5. Mai 1999
7 7,0 4.07.00.0700  22. September 1999
17. Februar 2000
7.0a 4.07.00.0716 8. März 2000
2000
7.1 4.07.01.3000 (RC1) 14. September 2000
8 8.0 4.08.00.0400 (RC10) 12. November 2000
8.0a 4.08.00.0400 (RC14) 5. Februar 2001
8.1 4.08.01.0810 25. Oktober 2001
4.08.01.0881 (RC7) 8. November 2001
8.1a 4.08.01.0901 (RC?) 2002
8.1b 4.08.01.0901 (RC7) 25. Juni 2002
8.2 4.08.02.0134 (RC0) 2002
9 9,0 4.09.00.0900 (RC4) 19. Dezember 2002
9.0a 4.09.00.0901 (RC6) 26. März 2003
9.0b 4.09.00.0902 (RC2) 13. August 2003
9,0 c 4.09.00.0903  
4.09.00.0904  4. August 2004
6. August 2004
4.09.00.0904 (RC0) August 2005
4.09.00.0905 (RC0) November 2008
4.09.00.0906 (RC0) März 2009
4.09.00.090? (RC0) Juni 2010
10 10,0 6.00.600.16386 30. November 2006
10.1 6.00.6001.18000 18. März 2008
11 11 6.01.7600.16385 22. Juli 2009
11 6.01.7601.17514 6. Februar 2011
11.1 6.02.9200.16384 1 st August 2012
11.2 6.03.9600.16384 17. Oktober 2013
12 12 10.00.10586.0000 29. Juli 2015
10.00.14393.0000 Aug 24 , Jahr 2016
10.00.15063.0000 5. April 2017
10.00.17134.0001 10. April 2018
10.00.17763.0001 2. Oktober 2018
10.00.18362.0387 November 2019

Kompatibilität

APIs wie Direct3D und DirectSound interagieren über Treiber direkt mit der Hardware. Hardwarehersteller sollten diese Treiber für eine bestimmte Version der DirectX-Gerätetreiberschnittstelle (oder DDI) schreiben. Ältere Versionen von DirectX enthielten eine Reihe von DirectX-Treiberupdates, aber diese Praxis wurde zugunsten von Windows Update aufgegeben, das es Benutzern ermöglicht, nur Treiber herunterzuladen, die für ihre Hardware spezifisch sind. Versionen vor DirectX 10 sollten mit älteren Treibern abwärtskompatibel sein, es war möglich, neuere Versionen von DirectX mit Treibern zu verwenden, die eine ältere Version von DDI unterstützen. Zum Beispiel könnte ein auf Direct3D 9 basierendes Spiel auf einem Computer laufen, der mit einer Karte ausgestattet ist, die nur einen Treiber hat, der zum Zeitpunkt von DirectX 6 entwickelt wurde . Auf der anderen Seite ist es mit DirectX 10 unter Vista unter Berücksichtigung des Umfangs der Änderungen und der Tatsache, dass bestimmte von der API bereitgestellte Funktionalitäten nur dank des neuen Treibermodells verfügbar sind, unmöglich, eine für diese Version entwickelte Anwendung treiberlos zu verwenden DirectX entspricht dem neuen WDDM-Treibermodell. Mehrere Versionen von DirectX sind mit vielen Versionen von Windows vorinstalliert, um Anwendungen zu unterstützen, die mit älteren Versionen dieser API geschrieben wurden, solange sie nicht für die neueste Version umgeschrieben wurden und weiterhin verwendet werden.

.Net-Framework

Im Jahr 2002 stellte Microsoft Entwicklern eine Version des DirectX SDK zur Verfügung, die .Net-Assemblys enthält, die die Verwendung von DirectX aus verwaltetem Code ermöglichen, sei es in verwaltetem C ++, C # oder einer anderen vom .Net Framework unterstützten Sprache. Diese Assemblys wurden unter dem Namen "Managed DirectX" (oder MDX) gruppiert und ermöglichten es, eine Leistung zu erzielen, die sich nicht unbedingt für den Vergleich mit dem schämen musste, was in nativem C++ zu erreichen war. InDezember 2005, Februar 2006, April 2006 und August 2006, Microsoft hat Entwicklern sukzessive Updates dieser Technologie zur Verfügung gestellt, um die Version 2.0 zu erreichen, die es nie gab, außer in Form einer Beta-Version, die am abgelaufen ist5. Oktober 2006.

Während der GDC 2006 stellte Microsoft das XNA GSE Framework vor, das als neue Bibliothek gedacht ist, die es Entwicklern ermöglicht, Spiele mit einer .Net-Sprache zu erstellen, um auf DirectX-Funktionen zuzugreifen. Dieses Framework zielt auch darauf ab, ihre Arbeit zu erleichtern, indem Funktionalitäten zusammengefasst werden, die zuvor in verschiedenen Baugruppen verstreut zu finden waren . Dieses Framework unterstützt auch die Ausführung von Anwendungen, die auf Xbox 360 erstellt wurden . Die RTM-Version wurde ausgeliefert am delivered11. Dezember 2006, als kostenlos herunterladbares Paket. Im Gegensatz zu DirectX oder Managed DirectX sind die Komponenten des XNA GSE Framework oder die APIs der Xbox 360 (XInput, XACT  usw. ) bei keiner Windows-Version vorinstalliert, daher wird empfohlen, sie gleichzeitig zu installieren Spiel unter Nutzung.

Anfang 2013 gab Microsoft das Ende der XNA-Entwicklung und den Rückzug aus dem Most Valuable Professionals (MVP)-Zertifizierungsprogramm am . bekannt 1 st April 2014. Die Open-Source-Community übernimmt dann mit Frameworks wie MonoGame (als Open-Source-Implementierung von XNA) und APIs wie SharpDX, die Aufrufe an nativen DirectX-Code machen (wie es MDX tat).

64-Bit & 32-Bit

Das DirectX-System ist mit allen Microsoft-Betriebssystemen kompatibel, 32 Bit (x86) und 64 Bit (x64).

Alternativen

Es gibt mehrere Bibliotheken, die oft einen Teil der Funktionalität von DirectX abdecken. Mit einer Kombination von ihnen können den gleichen Satz von Funktionen wie DirectX erreichen, können wir schon erwähnt , SDL , Allegro , OpenMAX , OpenML , OpenGL , OpenAL , Vulkan , BMVg ,  usw. Diese Bibliotheken können den Vorteil haben, portable Anwendungen auf anderen Betriebssystemen als Windows zu entwickeln. Diese Bibliotheken stammen meist aus Open-Source- Projekten .

Andere Projekte, wie ein Teil von Wine , zielen darauf ab, eine alternative Implementierung desselben Funktionsumfangs bereitzustellen.

Anmerkungen

  1. „  DirectPlay  “ unter docs.microsoft.com ,11. Juni 2009(Zugriff am 17. Januar 2020 )
  2. (in) "  Portal - XNA Xbox LIVE Indie Games  ' , Microsoft
  3. (in) "  Was kommt als nächstes für DirectX? Eine DirectX 11-Übersicht - Eine DirectX 11-Übersicht  » , Elite Bastards,1 st September 2008(Zugriff am 4. September 2008 )
  4. (in) "  DirectX 11: Ein Blick auf das Kommende  " , bit-tech.net,17. September 2008
  5. Windows 7 und D3D 11 Veröffentlichungsdatum Modellfehler {{Archiv link}}  : Geben Sie einen " |titre= " Parameter 
  6. Gamefest 2008 und die DirectX 11-Ankündigung
  7. http://www.hardware.fr/news/13601/directx-12-officialise.html
  8. Fabien Pellegrini, "  DirectX 12: die Versprechen, die ersten Tests  " , auf clubic.com .13. April 2015(Zugriff am 2. Oktober 2020 ) .
  9. Von Romain Pomian-Bonnemaison und 20.05.2020 , „  DirectX 12: Microsoft portiert seine Grafiktechnologie auf Linux!  » , Auf PhonAndroid ,20. Mai 2020(Zugriff am 2. Juni 2020 )
  10. (in) "  microsoft / WSL2-Linux Kernel  " auf GitHub (Zugriff am 2. Juni 2020 )
  11. (in) "  XNA wird sich nicht weiterentwickeln  "

Externe Links