[II] DX8-Architektur
05.07.05

DirectX beinhaltet mehrere Schnittstellen, die wir benötigen, um Spiele, oder, allgemeiner, Multimediaanwendungen, zu programmieren. In der achten Version sind dies folgende Komponenten (= Oberklassen):



  • DirectX Graphics
  • Das ist die wohl wichtigste und am meisten genutzte Schnittstelle. Sie stellt 2D- und 3D-Grafik, Schrift und Animation auf dem Bildschirm dar und bietet einen direkten Zugriff auf die Grafikhardware vorbei am langsamen Windows-GDI.

    Die noch aus DirectX7 bekannte Schnittstelle DirectDraw, mit der man leicht 2D-Objekte wie Menüs rendern konnte, wurde im Zuge einer Überarbeitung des Grafikbereichs in Version 8 gestrichen (aus Kompatibilitätsgründen wird sie trotzdem noch unterstützt, sollte aber nicht weiter verwendet werden). Stattdessen muss man auf umständlichere Direct3D-Funktionen zurückgreifen, um das Gleiche Ergebnis zu erhalten. Mit dem aktuellen DirectX9 sieht die Sache allerdings wieder ganz anders aus.


    Die 3D-Grafik ist ohne Frage ein faszinierendes, wenngleich auch ziemlich fortgeschrittenes Terrain. Die Komplexität vor Augen möchte ich mich diesem trotzdem in den folgenden Kapiteln im Rahmen des Möglichen näher widmen.



  • DirectX Audio
  • DirectX Audio umfasst seit DX8 Musik und Soundeffekte. Diese Komponente kommuniziert also mit der Soundkarte, wobei nicht unterstütze Features der jeweiligen Hardware mit Hilfe des Prozessors teilweise emuliert werden können. Intern gibt es eine Verzweigung in DirectMusic und DirectSound.


    • DirectMusic
    • DirectMusic hat in DirectX8 die primäre Rolle, was die Wiedergabe von diversen Musikdateitypen (WAV, MIDI, usw.) angeht, übernommen. Auch können Aufnahmen von Streams in das Wave-Format stattfinden.


    • DirectSound
    • Mit DirectSound wird man sich nun vor allem dann beschäftigen, wenn man low-level-Manipulationen vornehmen will. Dazu gehören Sound-Effekte, sowie die Realisierung eines Raumklangs. Die Innenarchitektur von DirectSound ist so aufgebaut, dass Daten aus mehreren Eingangspuffern (Secondary Sound Buffers), die z.B. statisch von einer Datei, oder dynamisch von einem Mikrofon kommen können, auf einen Ausgangpuffer (Primary Sound Buffer) gemischt werden. Die Eingangspuffer können – wie erwähnt - mit diversen Effekten belegt werden (z.B. Hall oder Chor aber auch 3D-Effekte wie Doppler-Verschiebung).



  • DirectInput
  • DirectInput ist für den Bereich der Steuerung zuständig. Man kann damit den aktuellen Zustand eines oder mehrerer Eingabegeräte abfragen. Eingabegeräte werden nochmals in folgende Bereiche unterteilt: Tastatur, Maus und Joystick.



  • DirectPlay
  • Diese Komponente wird benötigt, wenn man auf Multiplayer-Funktionen zugreifen möchte. Darunter ist die Kommunikation zweier oder mehrerer PCs bei einem Spiel über eine lokale (Netzwerk) oder globale Verbindung (Internet) zu verstehen, bei dem die Spieler ihre Kräfte messen. DirectPlay ist im Grunde also ein Protokoll auf Anwendungsebene. Es steht über den Transportprotokollen wie TCP und ist von diesen unabhängig. Des Weiteren kann man mit verhältnismäßig geringem Aufwand ein Chat-System in seine Anwendung implementieren, mit dem die Spieler durch Nachrichtenverkehr in der Lage sind, miteinander in Echtzeit zu kommunizieren.



  • DirectShow
  • DirectShow dient zur Verarbeitung von Video- und komprimierten Audio-Dateien. Konkret lassen sich damit diverse Arten von Video-Dateien wie avi oder mpeg und Musik-Dateien wie wma wiedergeben oder erstellen. Windows Media Player und alle anderen Abspielprogramme sind sogar auf die DirectShow-Filter angewiesen; ohne diese würde das Bild schwarz bzw. die Lautsprecher stumm bleiben. DirectX ist also nicht nur unentbehrlich für Computerspiele, sondern auch für die Wiedergabe von Filmen und Musik.



    Zusätzlich gibt es noch ein paar weitere kleinere Komponenten wie DirectSetup, das die vorhandene DirectX-Version während der Installationsroutine überprüft und gegebenenfalls eine neuere von einem Datenträger aufspielt. Eine weitere, nicht unwichtige Komponente, ist Direct3DX Utility Library. Sie beinhaltet verschiedene Hilfsfunktionen für die 3D-Programmierung, die einem das Leben sehr erleichtern können.