1.) Einleitung: Was ist DirectX ?


... [ Seminar: Startseite ] ... [ Inhaltsverzeichnis ] ... [ Überblick über DirectX ] ...

Übersicht: Einleitung: Was ist DirectX ?

a) Geschichte von DirectX.. 3

b) Gründe für die Einführung von DirectX.. 3

c) Wie war „Multimedia“ unter Windows vor DirectX möglich ?. 4

d) Ziele von Direct X.. 5



a) Geschichte von DirectX

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]

 

b) Gründe für die Einführung von DirectX

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

  1. Direct access to video memory
  2. The ability for a game to change the video resolution and color depth
  3. Page flipping for fast animation with no image tearing
  4. The ability to make calls to the graphics hardware's blitter
  5. A standard API for 3D hardware acceleration

c) Wie war „Multimedia“ unter Windows vor DirectX möglich ?

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.

 

d) Ziele von Direct X

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.

 



[1] Siehe dazu auch www.microsoft.com/windows/directx/productinfo/overview/default.asp

[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

[4] siehe http://www.tecchannel.de/multimedia/81/index.html

[5] Siehe http://www.tomshardware.com/smoke/00q1/000120/smoke-01.html

[6] siehe dazu auch http://www.et-online.fernuni-hagen.de/lehre/k02415.ws/kap11/11023.htm

[7] siehe Bargen/Donnelly, Inside DirectX


... [ Seminar: Startseite ] ... [ Inhaltsverzeichnis ] ... [ Einleitung: Was ist DirectX ? ] ... [ Überblick über DirectX ] ...