DirectDraw

DirectDraw
Microsoft DirectX
Datei:DirectX10 logo.png
Entwickler: Microsoft Corporation
Aktuelle Version: 10.1
(März 2009 Build)
Betriebssystem: Microsoft Windows
Kategorie: Programmierschnittstelle
Lizenz: MS-EULA
Für Endbenutzer:
www.microsoft.com/windows/directx/
Für Entwickler:
msdn.microsoft.com/directx/

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 multimediaintensive 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 (zum Beispiel Maus, Joystick) und Netzwerkkommunikation.

Inhaltsverzeichnis

Entwicklungsgeschichte

Vorgeschichte und MS-DOS

Nachdem sich seit Mitte der 1980er Jahre der IBM (kompatible) PC mit dem Betriebssystem MS-DOS als „Computer für Jedermann“ durchgesetzt hatte, begann ein paar Jahre später auch der Siegeszug der grafischen Benutzeroberfläche Microsoft Windows. In den 1990ern wurden die verbreiteten Anwendungen zunehmend für Microsoft Windows portiert, und viele neue Anwendungen wurden exklusiv für Windows mithilfe 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. Microsoft schenkte der Entertainment-Branche und Unterhaltungsmedien wie Computerspielen zu diesem Zeitpunkt noch wenig Beachtung.

Siegeszug der 3D-Grafik

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 MS-DOS wegzulocken hin zu 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, die jahrelang für MS-DOS entwickelt und dort Erfahrung gesammelt hatte, nicht weiter beachtet.

Parallel dazu entwickelte Microsoft WinG, eine Bibliothek mit gleichem 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 bewegen, 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 MS-DOS.

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.

DirectX 1.0 bis 9.26

Mit DirectX 3.0, das mit Direct3D auch erstmals 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, zum Beispiel 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. Dazu 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 (siehe unten).

Lückenhaft 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 Shading Language“ (HLSL), 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 Neuerung 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.

Die Version DirectX 9.0c wurde im August 2008 als aktualisierte Version veröffentlicht. 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. Im März 2009 veröffentlichte Microsoft die aktualisierte Version 9.26.1590.

DirectX 10

Die Version DirectX 10.0 erschien Anfang 2007. Anders als die Vorgänger läuft diese nur unter dem 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, XP oder Server 2003 steht weiterhin nur DirectX 9.0c zur Verfügung.

Im April 2007 erschienen Meldungen, wonach die neuen Direct3D-10-Funktionen über eigene Bibliotheken auch auf anderen Windows-Versionen nutzbar seien.[2] Das Unternehmen hinter diesem Projekt hat das Vorhaben inzwischen aber eingestellt und den Quelltext 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.

Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Bitte entferne erst danach diese Warnmarkierung.

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

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

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

Falls eine Grafikkarte eine dieser Funktionen nicht beherrscht, kann sie keine Direct3D-10.1-Schnittstelle anbieten, und die Applikation muss auf Direct3D 10 zurückfallen. 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.

DirectX 11

Microsoft hat auf der Gamefest-Messe (22. bis 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 ausschließt).

Wesentliche geplante Neuerungen sind:

  • Shader Model 5, mit dem die sogenannten „Compute Shaders“ eingeführt werden, womit Microsoft die GPGPU-Programmierung vereinheitlichen möchte.
  • Grafikkartenseitige Unterteilung von 3D-Flächen in Dreiecke (Tesselation), durch die der Detailgrad von 3D-Szenen ohne Belastung des restlichen Systems erhöht werden kann. Dieses Feature wird derzeit schon von allen AMD-Grafikkarten der HD-Serien unterstützt.[5]
  • Thread-Unterstützung der Rendering-Pipeline verbessert, insbesondere in Hinblick auf effizientere GPGPU-Programmierung.

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 dritten oder vierten Quartal 2009 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] Zudem wurden in der neuesten Version der DirectX SDK (November 2008) bereits die ersten DirectX 11 Beispiele gezeigt.

Versionshistorie

Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version
DirectX-Version Versionsnummer Betriebssystem Veröffentlichung
Ältere Version; nicht mehr unterstützt: DirectX 1.0 4.02.0095   30. September 1995
Ältere Version; nicht mehr unterstützt: DirectX 2.0 wurde nur mit wenigen Drittanbieterprogrammen zusammen veröffentlicht 1996
Ältere Version; nicht mehr unterstützt: DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 und NT 4.0 5. Juni 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0 4.04.00.0068   15. September 1996
4.04.00.0069 spätere Pakete von DirectX 3.0 enthielten Direct3D 4.04.00.0069 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0a 4.04.00.0070 Windows NT 4.0 SP3 (und darüber)
letzte unterstützte Version von DirectX für Windows NT 4.0
Dezember 1996
Ältere Version; nicht mehr unterstützt: DirectX 3.0b 4.04.00.0070 geringfügige Verbesserung gegenüber 3.0a, da nur ein kosmetisches Problem in der japanischen Version korrigiert wurde Dezember 1996
Ältere Version; nicht mehr unterstützt: DirectX 5.0 4.05.00.0155 (RC55) verfügbar als Beta für Windows NT 5.0 16. Juli 1997
Ältere Version; nicht mehr unterstützt: DirectX 5.2 4.05.01.1600 (RC00) DirectX 5.2 Veröffentlichung für Windows 95 5. Mai 1998
4.05.01.1998 (RC0) Windows 98 exklusiv 25. Juni 1998
Ältere Version; nicht mehr unterstützt: DirectX 6.0 4.06.00.0318 (RC3) Windows CE als Dreamcast-Implementierung 7. August 1998
Ältere Version; nicht mehr unterstützt: DirectX 6.1 4.06.02.0436 (RC0)   3. Februar 1999
Ältere Version; nicht mehr unterstützt: DirectX 6.1a 4.06.03.0518 (RC0) exklusiv für Windows 98 SE 5. Mai 1999
Ältere Version; nicht mehr unterstützt: DirectX 7.0 4.07.00.0700 (RC1)   22. September 1999
4.07.00.0700 Windows 2000 17. Februar 2000
Ältere Version; nicht mehr unterstützt: DirectX 7.0a 4.07.00.0716 (RC0)   8. März 2000
4.07.00.0716 (RC1)   2000
Ältere Version; nicht mehr unterstützt: DirectX 7.1 4.07.01.3000 (RC1) exklusiv für Windows Me 14. September 2000
Ältere Version; nicht mehr unterstützt: DirectX 8.0 4.08.00.0400 (RC10)   12. November 2000
Ältere Version; nicht mehr unterstützt: DirectX 8.0a 4.08.00.0400 (RC14) letzte Version für Windows 95 5. Februar 2001
Ältere Version; nicht mehr unterstützt: DirectX 8.1 4.08.01.0810 exklusiv für Windows XP, Windows Server 2003 und Xbox 25. Oktober 2001
4.08.01.0881 (RC7) Version für die älteren Betriebssysteme (Windows 98, Windows Me und Windows 2000) 8. November 2001
Ältere Version; nicht mehr unterstützt: DirectX 8.1a 4.08.01.0901 (RC?) Direct3D-Update (D3d8.dll) 2002
Ältere Version; nicht mehr unterstützt: DirectX 8.1b 4.08.01.0901 (RC7) DirectShow-Korrektur für Windows 2000 (Quartz.dll) 25. Juni 2002
Ältere Version; nicht mehr unterstützt: DirectX 8.2 4.08.02.0134 (RC0) identisch zu DirectX 8.1b, aber mit DirectPlay 8.2 2002
Ältere Version; nicht mehr unterstützt: DirectX 9.0 4.09.00.0900 (RC4)   19. Dezember 2002
Ältere Version; nicht mehr unterstützt: DirectX 9.0a 4.09.00.0901 (RC6)   26. März 2003
Ältere Version; nicht mehr unterstützt: DirectX 9.0b 4.09.00.0902 (RC2)   13. August 2003
Ältere Version; nicht mehr unterstützt: DirectX 9.0c 4.09.00.0903 ausschließlich für Service Pack 2 für Windows XP  
4.09.00.0904 (RC0)   4. August 2004
4.09.00.0904 Windows XP SP2, Windows Server 2003 SP1, Windows Server 2003 R2 und Xbox 360 6. August 2004
Ältere Version; noch unterstützt: 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] von Oktober 2004 bis August 2007 zweimonatlich; anschließend vierteljährlich; aktuelle Version: März 2009
Ältere Version; noch unterstützt: DirectX 9.26 4.09.00.0904 ab Windows XP 17. März 2009
Ältere Version; noch unterstützt: DirectX 10 6.00.6000.16386 Windows Vista 20. November 2006
Aktuelle Version: DirectX 10.1 6.00.6001.18000 Service Pack 1 für Windows Vista, Windows Server 2008
mit Direct3D 10.1
4. Februar 2008
Zukünftige Version: DirectX 11 6.01.7000.0000 Windows Vista, Windows 7 vermutlich erstes Quartal 2010

Anmerkungen:

  1. DirectX 4 wurde nie veröffentlicht. Raymond Chen erklärt in seinem Buch The Old New Thing, dass, nachdem DirectX 3 veröffentlicht wurde, 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.[10]
  2. 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 2D- und 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, unterstützt Raumklang (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, Doppler Shift Effekt stehen zur Verfügung.

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

XAudio2 basiert auf der Xbox-360-Sound-API und soll zukünftig DirectSound ablösen. 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 Herstellers von Soundkarten 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äten, 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 Win-32 API. DirectInput erlaubt Anwendungen die Nutzung von möglichen Force-Feedback-Fähigkeiten der Eingabegeräte, um so Kraftrückkopplungseffekte zu erzeugen.

XInput

XInput wird ausschließlich für Xbox-360-Controller unter Windows vorgesehen.

DirectPlay

Direct Play 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 Direct 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

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 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.

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 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:

  • OpenML für Multimedia-Verarbeitung, d. h. vor allem Video, ersetzt DirectShow bzw. DirectX Media
  • OpenGL für (3D-)Grafik, ersetzt Direct3D bzw. DirectX Graphics
  • OpenCL als Ersatz für DirectX 11 Compute Shader
  • OpenAL für (3D-)Sound, ersetzt DirectSound und DirectMusic
  • 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. Unter Windows setzen diese Bibliotheken auf DirectX auf.

Damit Programme, die DirectX nutzen, auch ohne Microsoft-Betriebssystem 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.

Ein Beispiel für die Nachbildung der DirectX-Funktionen ist Wine. Mit Wine kann man DirectX-Spiele auch unter Linux spielen, die von der Firma TransGaming Technologies entwickelte Software Cedega sowie das von der Firma CodeWeavers entwickelte CrossOver basieren auf Wine und sind ebenfalls hierzu in der Lage.

Im Betriebssystem ReactOS wurden die Headerfiles und einige andere ausgesuchte DLL-Dateien aus Wine verwendet. Nach einer lebhaften projektinternen Diskussion über den Sinn dieser Implementierung wurde so eine zunächst grundlegende DirectX-Unterstützung integriert, da außer Spielen auch viele Multimediaanwendungen, wie TV- und Videokarten oder CAD-Programme auf diese Funktionalität zurückgreifen.[11]

Weitere Informationen

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

Ein informatives Testprogramm ist DxDiag. Es ist in Windows enthalten und kann über Start → Ausführen → dxdiag gestartet werden.

Weblinks

Einzelnachweise

  1. http://blogs.msdn.com/oldnewthing/archive/2004/01/22/61647.aspx
  2. Alky Project Blog
  3. Entwicklung an DirectX-10-Wrapper für Windows XP eingestellt, Golem-News vom 8. Januar 2008
  4. Microsoft bringt DirectX 11 und renoviert Spieledienste (Golem.de vom 23.07.2008)
  5. Tesselierte Froblins - Videos der AMD-Tech-Demos zur 4850 (Golem.de vom 27.06.2008)
  6. FudZilla zum Erscheinungstermin von DirectX 11
  7. TG Dayly zur ersten DirectX 11 Grafikkarte
  8. DirectX 9.0c vom Oktober 2006
  9. DirectX 9.0c vom 9. Februar 2005
  10. Raymond Chen: The Old New Thing. 1. Auflage. Pearson Education, 2006, ISBN 0-321-44030-7, S. 330. 
  11. DirectX-Seite im ReactOS-Wiki; derzeit über ein Jahr alt, aktuelle Newsletters lassen aber den Schluss zu, dass aus Kompatibilitätsgründen auch weiterhin die DirectX-Unterstützung ausgebaut wird.

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • DirectDraw — is part of Microsoft s DirectX API. DirectDraw is used to render graphics in applications where top performance is important. DirectDraw also allows applications to run fullscreen or embedded in a window such as most other MS Windows applications …   Wikipedia

  • DirectDraw — est une bibliothèque logicielle de la suite DirectX de Microsoft. Elle est utilisée pour le rendu d image où une haute performance est importante. DirectDraw permet aussi aux applications de se lancer en mode plein écran ou fenêtré comme dans la… …   Wikipédia en Français

  • DirectDraw — DirectDraw,   DirectX …   Universal-Lexikon

  • DirectDraw Surface — The DirectDraw Surface file format (uses the filename extension DDS), from Microsoft, is a standard for storing data compressed with the lossy S3 Texture Compression (S3TC) algorithm,[1] which can be decompressed in hardware by GPUs and consoles… …   Wikipedia

  • DirectDraw Surface — DDS (DirectDraw Surface)  формат хранения данных, разработанный корпорацией Майкрософт для использования в DirectX SDK. Содержание 1 Общая информация 2 История создания …   Википедия

  • DirectDraw — …   Википедия

  • DirectDraw — ● ►en np. tm. m. ►AFFICH Anciennement appelé DCI technique définie par Intel et Microsoft, permettant aux applications d envoyer directement des ordres à la carte graphique lorsque le processeur est occupé …   Dictionnaire d'informatique francophone

  • Direct3D — is part of Microsoft s DirectX API. Direct3D is only available for Microsoft s various Windows operating systems (Windows 95 and above) and is the base for the graphics API on the Xbox and Xbox 360 console systems. Direct3D is used to render… …   Wikipedia

  • Microsoft Direct3D — Direct3D is part of Microsoft s DirectX application programming interface (API). Direct3D is available for Microsoft Windows operating systems (Windows 95 and above), and for other platforms through the open source software Wine. It is the base… …   Wikipedia

  • DirectShow — Logo of the DirectX Media SDK – the first time DirectShow was distributed under its current name.[citation needed] DirectShow (sometimes abbreviated as DS or DShow), codename Quartz, is a multimedia framework and API produced by Microsoft for… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”