DirectX wurde Ende 1995 von Microsoft eingeführt, um
damalige Nachteile von Windows-Programmen gegenüber MS-DOS-Anwendungen
beseitigen und gleichzeitig die Vorteile von Windows gegenüber MS-DOS
auszunutzen zu können. DirectX ist eine Multimedia-API (Application Programming
Interface) und wird von allen Microsoft Windowsbetriebssystemen ab Windows 95
unterstützt. In einem Satz gesagt bietet es beschleunigten, direkten und
einheitlichen Zugriff auf die im System installierte Multimedia-Hardware.[1]
Durch die immer schnelleren PCs und die Einführung des
Multitasking-Betriebssystems Windows 95 kamen Mitte der 90er Jahre zunehmend
Multimedia-Anwendungen auf den Markt.
Wesentlicher
Vorteil von Windows 95 gegenüber MS-DOS war neben der Multitasking-Fähigkeit
die zentrale Hardwareverwaltung und eine einfache Installation von Hard- und
Software. Unter MS-DOS bestand eine Textverarbeitung noch aus einer Diskette
für das reine Programm und etlichen Disketten zur Ansteuerung der verschiedenen
Grafikkarten („hardware-abhängige Programmierung“). Für jede neue Grafikkarte
mußte für jedes MS-DOS-Programm auch ein neuer Grafiktreiber entwickelt und
installiert werden.
Unter Windows hingegen lieferte der Hersteller einer
Grafikkarte einen einzigen Treiber, den alle Anwendungen gemeinsam nutzen
konnten.
Größter
Nachteil bei Multimedia-Anwendungen unter Windows war ein starker
Leistungsverlust gegenüber MS-DOS, welches einen direkten Zugriff auf die
Hardware nicht nur erlaubte, sondern mangels zentraler Handwareverwaltung auch
erforderte. Ein exklusiver Zugriff auf die Hardware in einem
Multitasking-Betriebssystem wie Windows 95 gehört zu den Rechten des
Betriebssystems. Dieses verwaltet die Tasks, um Konflikte bei gemeinsam von
verschiedenen Tasks verwendeten Ressourcen zu verhindern. Den Tasks selbst das
Recht des direkten Hardwarezugriffs zu geben, widerspricht dem Kern eines
Multitasking-Betriebssystems, welches zwischen Anwendung und
Betriebssystemsebene trennt.
Bei einem Singletaskingsystem wie MS-DOS hat das System
bzgl. der Hardwarezugriffe nicht mehr Rechte als eine Anwendung.
Die
für Multimedia-Anwendungen relevanten Unterschiede zwischen MS-DOS und Windows
95 beschreibt die folgende Tabelle.
|
MS-DOS |
Windows
95 |
Tasks |
Singletasking-System, keine Probleme mit konkurrierenden Tasks |
Multitasking-System |
Hardwareverwaltung |
Nicht zentral |
Zentral einfache Installation von Soft- und Hardware („Plug and
Play“) |
Hardwarezugriffe |
Schneller, direkter Zugriff auf die Hardware |
System hat mehr Rechte als die Anwendung: -
kein direkter Zugriff von Anwendung auf die
Hardware möglich -
Schichtenstruktur verlangsamt Zugriff auf
Hardware |
Treiber |
Jedes Gerät benötigt für jede Anwendung einen eigenen
Treiber, Standardisierung von Treibern fehlte weitgehend[2] |
Ein Treiber für alle Anwendungen |
Aufgrund des Leistungsverlustes wurden zur Einführung von
Windows 95 nahezu alle Spiele noch für den MS-DOS-32 Bit-Modus entwickelt und
im MS-DOS-Modus unter Windows ausgeführt.
Den Leistungsunterschied verdeutlicht folgendes Beispiel.
Soll ein Buchstabe auf dem Bildschirm von Blau nach Weiß gefärbt werden, werden
unter MS-DOS im Grafiktreiberprogramm mit wenigen Befehlen die für die Farbe
zuständigen Bits direkt in den Bildspeicher der Grafikkarte geschrieben.
Unter
Windows hingegen muß das Zeichen komplett neu ausgegeben werden. Dabei kommt
der Font-Manager ins Spiel, der die in Bezierkurven definierte Schrift in ein
Bitmap umwandelt. Der Fenster-Manager begrenzt das Neuzeichnen auf ein Fenster.
Für die Zeichenroutinen ist das GDI[3]
zuständig und schließlich schreibt der Grafiktreiber die Daten in den
Bildspeicher. Dieser Vorgang kann durchaus das Tausendfache an
Maschinenbefehlen in Anspruch nehmen.[4]
Dies erkannte auch das GamePC-Consortium, eine
Vereinigung der PC-Spielehersteller, welches bereits 1994 von Microsoft vor der
Einführung von Windows 95 die folgenden Fähigkeiten für ein neues
Betriebssystem forderte[5]:
Lange vor Einführung von DirectX gab es bereits die Windows
Multimedia Extensions (WME) von Microsoft. Sie erweitern die Programmierumgebung
in Windows und stellen einfache Dienste zur Implementierung multimedialer
Anwendungen zur Verfügung.[6]
Vorteil gegenüber MS-DOS war eine Geräteunabhängigkeit
bei einfachen Multimedia-Anwendungen. Über das Media Control Interrface (MDI)
war so das Abspielen und Aufnehmen von Waveform-Audio, sowie das Abspielen von
MIDI-Dateien, Video-CD und CD-Audio möglich. Ein Abfrage des Joysticks wurde
ebenfalls zur Verfügung gestellt.
Die Extensions beschränkten sich auf diese wenigen
Fähigkeiten, welche zudem sehr langsam und unflexibel implementiert waren.
Bereits das gleichzeitige Abspielen mehrerer Audiospuren war hiermit nicht mehr
möglich.
Wie die Multimedia-Extensions (MMSYSTEM.DLL) im System
integriert waren, zeigt die folgende Grafik:
Quelle: Steinmetz, Kapitel 11
Die MMSYSTEM-Bibliothek stellt die Schnittstelle
zur Medienkontrolle und den Low-Level-Funktionen zur Verfügung. Die
Low-Level-Kommunikation zwischen den MMSYSTEM-Funktionen und den
Multimedia-Geräten (Waveform-Audio, MIDI, Joystick) erfolgt über die
Multimedia-Gerätetreiber. Die Treiber der Medienkontrollschnittstelle besorgen
die Kontrolle über die Mediengeräte auf höherer Ebene.
Microsoft formulierte die Ziele von DirectX
folgendermaßen:[7]
(1)
so schnell wie möglich
(2)
so direkt wie möglich
(3)
so bescheiden wie möglich
Während die beiden ersten Punkte selbsterklärend sind,
sei zum dritten Punkt angemerkt, dass nicht für jede Anwendung das gleiche
Prinzip das beste sein mag. DirectX sollte also möglichst flexibel sein und
mehrere Lösungswege bieten und insofern bescheiden im Sinne von „keinen
bestimmten Weg vorschreiben“ auftreten.
Revolutionär war insbesondere das zweite Ziel, da ein
direkter Zugriff gerade dem Multitasking-Prinzip des Windows 95-Betriebssystems
widersprach. Damals und selbst heute ist mangels CPU-Leistung aber immer noch
ein möglichst direkter Hardwarezugriff für Multimedia-Anwendungen erforderlich,
so dass dieser Weg zwingend notwendig war, um die notwendige Leistung
bereitzustellen.
Allgemeiner als Microsoft kann man sagen, dass mit
DirectX weitgehende Kompatibilität von Multimedia-Anwendungen auf jedem PC
erreicht und zudem garantiert werden sollte, dass bei vorhandener
beschleunigender Hardware auch die maximale Leistung und Qualität herausgeholt
wird. Hardware-unabhängige Programmierung hardware-abhängiger Features sollte
mit DirectX möglich sein und die Windows-Multimedia-Funktionalität erweitert
werden.
Im Anschluß an die oben genannten Vorgaben seien hier nun
einige Kernpunkte des letzten Endes veröffentlichten DirectX-Systems genannt:
-
das Betriebssystem hat weiterhin exklusiv die meisten Rechte
-
DirectX arbeitet mit einem Schichtenmodell (Hardware Abstraction Layer /
Hardware Emulation Layer)
-
es besteht aus geschwindigkeitsoptimierten Low-Level-Funktionen
-
die Gerätetreiber werden von den Herstellern geliefert
-
der Entwickler braucht sich nur noch mit der tatsächlichen
Anwendungsentwicklung und nicht mit der konkreten Hardwareprogrammierung
befassen.
Diese Punkte und einige weitere werden in den folgenden Kapiteln
behandelt.
[2] Ansätze zu standardisierten
Treibern gab es von VESA-Treiber UniVBE von Scitech und den Sound-Treiber von
Miles Design
[3] GDI: Graphics Device Interface
[7] siehe Bargen/Donnelly, Inside
DirectX