Zum Inhalt springen

DirectX

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. Januar 2006 um 18:58 Uhr durch Frank Klemm (Diskussion | Beiträge) (Alternativen zu DirectX). Sie kann sich erheblich von der aktuellen Version unterscheiden.

DirectX ist eine Sammlung von Application Programming Interfaces (APIs) für Multimediaprogramme auf der Windows-Plattform seit Windows 95. DirectX wird auch auf der Spielekonsole Xbox verwendet.

DirectX wird vorrangig zur Darstellung komplexer 2D- und 3D-Grafik benutzt. Es bietet aber auch Unterstützung für Audio, diverse Eingabegeräte (z.B. Maus, Joystick) und Netzwerkkommunikation.

Die aktuelle Version ist DirectX 9.0c.

Aufbau von DirectX

DirectX besteht (in der aktuellen Version 9c) aus folgenden Teilen:

  1. DirectX Graphics: Unterstützung von 2D- und 3D-Grafik
    Dies ist der am meisten genutzte Teil von DirectX. Er ermöglicht einen schnellen Direktzugriff auf die Grafikkarte.
    • DirectX Graphics stellt eine low-level API (Direct3D) und 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 z. B. 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, mit vertretbarem Aufwand 3D-Anwendungen zu realisieren. Direct3DX setzt auf Direct3D auf, d. h. es nutzt dessen Basisfunktionalität.
    • DirectX Graphics bietet direkten Zugriff auf die Grafikhardware vorbei am Graphics Device Interface (GDI) und Display Device Interface (DDI). Nicht durch die Hardware unterstützte Funktionen werden durch DirectX emuliert. Dafür nutzt der Hardware Emulation Layer (HEL) die Möglichkeiten von MMX-Prozessoren zur Manipulation von Bildern und greift auf Funktionen des Graphics Device Interface (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).
  2. DirectSound: Zur Wiedergabe und Aufnahme von Soundeffekten, unterstützt Raumklang (d. h. Positionierung der Klänge im 3D-Raum)
    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 (z. B. aus einer Datei) oder dynamisch (z. B. Streaming von einem Mikrofoneingang) Daten liefern. Die Anzahl der Eingangspuffer, die gemischt werden können, ist ausschließlich durch die verfügbare Rechenleistung limitiert.
    DirectSound stützt sich automatisch auf das Leistungsspektrum der installierten Soundkarte ab.
    Es stehen 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 zur Verfügung.
  3. 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.
  4. DirectInput: Unterstützung von Eingabegeräten, wie Tastatur, Maus, Joysticks usw.
    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 (d. h. Ereignis-, Melde- und Warteschlagen) und erfolgt direkt auf die Hardware. Ein Vorteil 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.
  5. DirectPlay: Für die Kommunikation von Multiplayerspielen untereinander, die auf mehreren Computern laufen (bei Netzwerkspielen oder Onlinespielen).
    Im Wesentlichen handelt es sich um ein Protokoll auf Anwendungsebene und ist somit unabhängig von konkret genutzen 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.
    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 und Spieler sind in der Lage an andere Spieler Nachrichten zu versenden (Chat)
    Hinweis: Für viele Spiele-Entwickler war der gewaltige Overhead von DirectPlay entscheidend, es nicht zu verwenden, und lieber einen eigenen performanteren Netzwerk-Zugriff auf Basis von WinSock zu realisieren. Andere haben sich wegen der festen Bindung an Windows dagegen ausgesprochen, da z. B. für speziell auf Windows-Systemen lauffähige First-Person-Shooter gerne auch eigene Linux-Server entwickelt werden.
  6. DirectShow: Für die Verarbeitung von Video- und Audio-Dateien.
    Damit lassen sich verschiedenste Arten von Video-Dateien (AVI, MPEG) und Ton-Dateien (zum Beispiel MP3) wiedergeben oder erstellen. Unterstützt auch Internetstreaming und ist durch sog. DirectShow-Filter beliebig erweiterbar.
  7. 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
  8. 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 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.

Alternativen zu DirectX

Neben DirectX sind weitere 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:

  • OpenGL für die 3D-Grafik
  • OpenAL für den 3D-Sound
  • SDL oder Allegro für Aufgaben wie z. B. die Unterstützung von Eingabegeräten, 2D-Grafik, plattformunabhängige Threadverwaltung und Netzwerk. Unter Windows setzen diese Bibliotheken auf DirectX auf.

Weitere Informationen

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

Informatives Testprogramm: DxDiag

WGF sollte in Windows Vista DirectX als API ablösen, wurde nun aber doch DirectX 10 benannt.