DirectX: Alle Module im Überblick

02.11.1999 von Arne Schaepers
In der Urversion war DirectX ein Zusatz für Spiele. Inzwischen ist dieses Paket weit mehr als das bei neuen Grafiktreibern immer wieder problematische Direct3D: Unter anderem ist DirectX mit von der Partie, wenn Sie ein MPEG-Video oder einen MP3-Sound abspielen.

Vom im ersten Teil erwähnten Game SDK 1994 hat sich DirectX in der aktuellen Version 7 im gesamten Windows-System ausgebreitet. Die Funktionalität ist schon länger nicht mehr auf den Spielesektor beschränkt, sondern bildet inzwischen auch die Grundlage vieler höchst "ernsthafter" Anwendungen.

Die Komponenten

Direct3D ist dank der ungebrochen rasanten Entwicklung auf dem Grafiksektor die Abteilung von DirectX, die bei neuen Versionen üblicherweise am meisten vorzuzeigen hat.

Bis einschließlich Version 6 gab es hier sozusagen zwei Welten:

Immediate Mode in DirectX 7

Bei DirectX 3 war die Programmierung mit dem Immediate Mode eine mittlere Katastrophe, da die Entwickler direkte Aufrufe dieser Schicht erst in letzter Minute eingeflickt hatten. Bei DirectX 5 wurden die Schnittstellen ein erstes Mal begradigt, seit DirectX 6 sind sie wirklich verwendbar. DirectX 7 erklärt schließlich den Retained Mode für abgeschlossen und ergänzt den Immediate Mode mit einer neuen Bibliothek (Direct3DX), die zukünftig das Abschieben von Geometrie- und Beleuchtungsberechnungen auf die Grafik-Hardware ermöglichen soll. Im Moment ist das allerdings noch Zukunftsmusik: Die einzigen bereits real existierenden Chips, die solche Berechnungen zumindest teilweise ausführen könnte, sind NVidias GeForce256 und der Savage 2000 von S3. DirectX7-Treiber dafür gibt es erst seit kurzem - und Anwendungen, die diese Möglichkeiten tatsächlich nutzen, garantiert nicht vor dem nächsten Jahrtausend.

Funktionen, mit denen man ein dreidimensional gezeichnetes Bitmap auf dem Bildschirm darstellen könnte, enthält Direct3D übrigens nicht - dafür ist DirectDraw zuständig.

DirectDraw

Dieser Teil von DirectX stellt sozusagen die direkte Weiterentwicklung des Game SDK dar: Diese Komponente ist für die Manipulation von Bitmaps und ihre Darstellung auf dem Bildschirm zuständig. Im Fensterbetrieb wird dabei der gesamte Desktop als das betrachtet, was er letztlich auch ist: Ein einziges, recht großes Bitmap im Bildspeicher der Grafikkarte. Die Position eines Windows-Fensters legt lediglich fest, auf welchen Ausschnitt dieses Bitmaps sich Zeichenoperationen beziehen.

Für den Vollbildmodus erlaubt DirectDraw sowohl das programmgesteuerte Wechseln des Videomodus (Bildschirmgröße und Farbtiefe) als auch die Umschaltung zwischen mehreren, von der Grafikkarte darzustellenden Bildspeicherbereichen. Das Programm führt seine Zeichenaktionen dann grundsätzlich in den Bildspeicherbereich aus, der momentan nicht sichtbar ist. Zeichenoperationen in Hintergrund-Bitmaps sind natürlich auch im Fenstermodus bzw. mit den Standardroutinen von Windows möglich, nur ist dann für jeden Frame eine Kopie dieses Bitmaps notwendig.

Trotz seiner relativ langen Entwicklungsgeschichte ist DirectDraw den tatsächlichen Möglichkeiten der Hardware auch heute noch mehrere Schritte voraus: Alphakanäle für die Transparenzbestimmung einzelner Pixel wurden beispielsweise bereits mit DirectX 5 eingeführt, werden aber bis heute von keinem einzigen Grafikchip ernsthaft berücksichtigt.

Ähnliches gilt für Overlays, deren Hardware-Unterstützung auch nach zwei Jahren noch eine recht wacklige Angelegenheit ist. In DirectX 7 kennt DirectDraw imVollbildmodus nicht nur den Wechsel zwischen Bildspeicherbereichen, sondern auch die Synchronisation von Shutterbrillen für die "echte" dreidimensionale Darstellung. Dies stellt jedoch mit real existierenden Grafikkarten momentan noch mehr eine Baustelle denn ein verlässliches Feature dar.

Zeichenroutinen wie für Linien und Kreise enthält DirectDraw übrigens nicht. Dafür muss man entweder mit einer separaten Engine (wie Direct3D) auf die von dieser Schnittstelle direkt zur Verfügung gestellten Bitmap-Daten losgehen oder die (langsamen) Funktionen der Windows-GDI benutzen.

Direct Sound

Schon seit der ersten Überarbeitung von DirectX mit von der Partie ermöglicht DirectSound das direkte Ansteuern von Soundkarten. Die wesentlichen Unterschiede zu den regulären Multimedia-Erweiterungen von Windows (MMSystem32.DLL) sind:

Minimale Latenz: Beim Abspielen einer WAV-Datei lassen sich die Standardtreiber von Windows gerne mal eine halbe Sekunde Zeit (und denken derweil über notwendige Konvertierungen bzw. die Dekomprimierung nach). DirectSound arbeitet nach einem anderen Prinzip: Dort müssen Programme ihre Sounddaten selbständig in Puffer einfüllen, wobei ausschließlich das unkomprimierte Format PCM zugelassen ist. Zwischen dem Startbefehl zum Abspielen und dem hörbaren Ergebnis liegen deshalb nur einige Millisekunden.

Mehrere Kanäle: DirectSound richtet einen "Software-Mischer" ein, der das gleichzeitige Abspielen einer fast beliebigen Zahl von Sounds (Motorengeräusch, Piep vom Funkgerät, zischende Raketen...) erlaubt. Standardfunktionen von Windows wie sndPlaySound belegen die Soundkarte dagegen während des Abspielens exklusiv: Während ein Sound oder ein Video läuft, ist nicht einmal ein einfaches Klickgeräusch für Menüs möglich.

3D-Effekte: Die Multimedia-Erweiterungen von Windows sind auf Stereo beschränkt. Eine Unterabteilung von DirectSound - DirectSound3D - erlaubt dagegen für Geräuschquellen die Positionierung im Raum und die Definition eines Schallkegels. Mit Kopfhörern lässt sich hier unter günstigen Umständen erstaunlich viel an Räumlichkeit erreichen (Stichwort: Kunstkopf-Modell). DirectX 7 hat übrigens für 3D-Sounds einige neue Algorithmen zu bieten, die sich vor allem durch einen skalierbaren Rechenaufwand auszeichnen. Diese sind aber leider nur mit den neuen WDM-Treibern von Windows 98 SE bzw. Windows 2000 verfügbar.

DirectMusic und DirectPlay

DirectMusic hat relativ wenig mit Direktzugriffen auf Hardware zu tun: Hier geht es in erster Linie um einen MIDI-Synthesizer, der sich allerdings in recht weiten Grenzen konfigurieren und manipulieren lässt. Solche Synthesizer eignen sich vor allem für die ressourcenschonende, nichtsdestotrotz aber nervenaufreibende akustische Dauer-Untermalung eines Spiels.

DirectPlay

Für die Kommunikation zwischen Spielern vorgesehen trägt dieses Komponente das "Direct" eigentlich nur deshalb im Namen, weil sie zu DirectX gehört: Hier geht es nicht um Zugriffe auf die Hardware, sondern ein Nachrichtenprotokoll, das - man höre und staune - weitgehend von der Hardware unabhängig bleibt. Es kommt deshalb sowohl mit TCP/IP als auch mit IPX zurecht, nicht aber mit Microsofts hauseigenem NetBEUI. Bei der Verbindung zweier Computer über Modems oder die seriellen Schnittstellen kann DirectPlay auch mitspielen. Größere Änderungen in dieser Abteilung gab es das letzte Mal bei DirectX 6.1 mit der Neuerung, dass Bandbreitenbegrenzung auch wirklich funktionierte.

Zu den Nachrichtenprotokollen selbst kommt einiges an interner Verwaltung: So legt DirectPlay unter anderem fest, welche "Master"-Station bei Multiplayer-Spielen den Startschuss für die nächste Runde gibt, kann Spieler zur bestmöglichen Ausnutzung der Bandbreite in Gruppen unterteilen und so weiter.

DirectShow

Auch dieses Modul hat nur indirekt etwas mit DirectX zu tun, sollte aber trotzdem erwähnt werden: Dabei geht es um die Darstellung und Bearbeitung beliebiger Medien-Datenströme, also von MOV über RM bis MPG und MP3. Die Multimedia-Erweiterungen von Windows sehen nur einige dieser Formate vor und behandeln sie monolithisch: Pro Format gibt es ein eigenes Modul, das sämtliche Schritte (Lesen aus einer Datei, Dekomprimierung, Dekodierung, Darstellung) in Eigenregie übernimmt. DirectShow verwendet dagegen Modulketten, deren Elemente zumindest in der Theorie beliebig kombinierbar sind: Als Datenquelle für ein Video kann hier sowohl eine Datei, eine FTP- oder HTTP-Verbindung als auch eine Video-Grabberkarte herhalten. In den Datenstrom lassen sich dann beliebige Effektfilter einsetzen. Das Standardmedium zur Darstellung von Videos ist ein Fenster, das per DirectDraw beschickt wird, für Audio kommt normalerweise DirectSound zum Einsatz. Weil sich die einzelnen Module wirklich fast beliebig kombinieren lassen, könnte am Ende einer solchen Kette auch genauso gut wieder eine Datei stehen.

Das DirectShow-SDK hört auf den Namen "DirectX Media" und ist im Moment noch vom DirectX-SDK getrennt. Das könnte sich allerdings genauso schnell ändern wie bei Direct3DX, das bei DirectX 6 auch noch als separate Abteilung unter dem Namen "DirectX Transform" lief.

Das MediaPlayer-Update von Microsoft arbeitet über DirectShow und damit über DirectDraw und DirectSound, weshalb inzwischen fast jeder Windows-Benutzer diese DirectX-Module im täglichen Gebrauch hat.

DirectAnimation und DirectInput

Auch wenn es der Name vermuten ließe, geht bei DirectAnimation nicht ausschließlich um Animationen - die hübschen Ordnerchen, die auch dann noch munter durch die Gegend segeln, wenn der Explorer längst abgestürzt ist - sondern um Multimedia, jedoch hauptsächlich im Internet Explorer. Die Grundlage für das Berechnen dreidimensionaler Objekte ist Direct3D, für das Zeichnen von Bitmaps kommt DirectDraw zum Einsatz, für die Ausgabe von Sounds ist DirectSound erforderlich. Die Laufzeitkomponenten werden zusammen mit dem Internet Explorer 4.0 installiert, Informationen für Entwickler finden sich zusammen mit dem Material zu DirectShow im "DirectX Media SDK".

DirectInput

Dieser Teil von DirectX ist für die Direktabfrage von Eingabegeräten zuständig und war in den ersten DirectX-Versionen eher eine Sammlung angenehmer Kleinigkeiten: Mit den Funktionen dieses Moduls kann man beispielsweise unabhängig von der jeweiligen Landessprache prüfen, ob die Taste "unterhalb von W/AS" gedrückt ist (was auf beim US-Tastaturlayout auf die Abfrage der Taste "Z" hinausläuft, beim deutschen Layout dagegen "Y" testet). Mit etwas Trickserei (nämlich der Auswertung von Scancodes) ließe sich das aber auch über Windows-Funktionen hinkriegen. Ähnliches gilt für die Maus, bei der DirectInput einfach Rohdaten liefert und so die Erkennung von Bewegungen auch dann noch zulässt, wenn der Cursor bereits an einer Bildschirmecke hängt.

Interessant wurde DirectInput erst mit DirectX 5, weil dort zwei komplett neu Bereiche definiert sind:

Force Feedback: Der Computer schlägt zurück

Wie so oft bei neuen Techniken hat Microsoft auch hier erst einmal auf fremden Federn aufgebaut: Den Vorarbeiten der Firma Immersion, von der das Innenleben praktisch aller auf dem Markt befindlichen aktiven Joysticks und Lenkräder (mit Ausnahme der SideWinder-Reihe) stammt und die - wen wundert's - inzwischen zu 20 Prozent den Redmondern gehört. Der durchaus erfreuliche Nebeneffekt dieses Einkaufs: Während es bei DirectX 5 und 6 noch ein Nebeneinander verschiedener (natürlich inkompatibler) Editoren und Dateiformate für Kraftrückmeldungseffekte gab, enthält das DirectX-7-SDK nun einen eigenen Editor, der das Beste beider Welten in sich vereinen soll.

Kraftrückmeldungen von DirectX haben übrigens nicht das Geringste mit Spielzeugeffekten wie dem "Jolt Pack" für den Nintendo 64 zu tun, dessen Funktion sich auf ein mehr oder minder heftiges Brummen beschränkt. In der Forschung (Flugsimulatoren, Moleküldesign) wird diese Technik schon länger eingesetzt, bei Spielen eröffnet sie ohne jede Untertreibung eine neue Dimension - und unlängst war auf einer Entwicklerkonferenz in Frankfurt (USF) ein 3D-Griffel zu bewundern, der in Verbindung mit einem entsprechenden Programm das Bearbeiten virtueller Tonmodelle erlaubt. Der einzige Unterschied: Man bekommt keine schmutzigen Finger - und wer versehentlich zu fest geschnitten oder abgehobelt hat, benutzt die Undo-Funktion.

Wie geht es weiter?

Dank DirectX dürfte 1998 wirklich das letzte Jahr gewesen sein, in dem irgendein namhafter Hersteller neue Spiele oder gar Anwendungen für DOS auf den Markt gebracht hat. Programme, die direkt auf die Hardware des Computers losgehen, gibt es deshalb eigentlich nur noch auf Sammel-CDs der Marke "250 tolle Spiele für 25 Mark". Und mit Windows 2000 werden auch diese CDs endgültig auf dem Müllhaufen der Geschichte landen. Dort gelten nämlich sinnvollerweise dieselben Grenzen wie bei Windows NT: Programme, die direkt am System herummanipulieren wollen, werden vom Betriebssystem unnachsichtig aus dem Speicher katapultiert.

In welche Richtung sich DirectX selbst weiterentwickelt, kann man im Moment nur ahnen. Klar ist, dass es auf der Grafikseite noch mehr Polygone pro Szene und noch mehr Effekte geben wird, beim Sound liegt der Schwerpunkt derzeit auf räumlicher Orientierung. Für die Vision des Anwenders im Daten-Schleudersitz ist es sicher noch ein wenig früh; spannend aber bleibt die Sache allemal. (nie)