2.) Überblick über DirectX


... [ Seminar: Startseite ] ... [ Einleitung: Was ist DirectX ? ] ... [ Konzepte für Multimedia-Beschleunigung ] ...

Übersicht: Überblick über DirectX

a) Die Komponenten von DirectX.. 6

b) Entwicklung von DirectX.. 6

c) Verfügbarkeit und Kompatibilität von DirectX.. 7

d) Programmierung von DirectX.. 7

e) Übersicht über die Fähigkeiten von DirectMusic. 7

f) Übersicht über die Fähigkeiten von DirectSound. 8

g) Wann benötigt man zwingend DirectXAudio für die Audiowiedergabe?. 8



a) Die Komponenten von DirectX

Das „X“ in DirectX steht als Platzhalter für die einzelnen Komponenten, die DirectX 8.1 enthält. Dies sind in der aktuellen Version 8.1 die folgenden sechs:

Name

Beschreibung

DirectX Graphics

API für die gesamte Grafikprogrammierung, also 2D und 3D

 

Früher: Trennung in

DirectDraw: bietet 2D-Zeichenfunktionen, die direkt auf der Hardware arbeiten

Direct3D: bietet 3D-Zeichenfunktionen. Als Grundlage dient DirectDraw

DirectX Audio

API für die gesamte Audioprogrammierung

 

Früher: Trennung in

DirectSound: ermöglicht die Wave-Aufnahme, -mix und (umständliche) Wiedergabe

DirectMusic: einfache und umfangreiche Steuerung von MIDI, DLS und Wave (ohne Wave-Wiedergabe). Dazu gehört der DirectMusicProducer

DirectShow

Aufnahme und Wiedergabe von Multimedia Streams (z.B. MPEG, DVD-Video)

DirectPlay

Regelt die Netzwerkkommunikation (z.B. für Multiplayer-Spiele)

DirectInput

Ermöglicht den Zugriff auf Eingabegeräte (Joystick, Mouse, Lenkräder, Force-Feedback, etc.)

DirectSetup

Überprüft DirectX-Komponenten im Betriebssystem und installiert bei Bedarf Updates

 

 

b) Entwicklung von DirectX

Während die ersten Versionen von DirectX die Funktionalität von Windows nicht erweiterten, sondern in erster Linie nur den direkten Hardware-Zugriff boten, gehen die aktuellen Versionen weit über die normale Windows-Funktionalität hinaus. Bereits 3D-Grafik gehört nicht mehr zu den Standardfunktionen, von Force-Feedback-Geräten ganz zu schweigen.

Die folgende Tabelle gibt einen Überblick über die Entwicklung von DirectX:

 

Version

Inhalt

1.0

Enthielt DirectDraw, DirectInput, DirectPlay, und DirectSound

2.0

Ergänzung um Direct3D

3.0

Erweiterung von DirectInput, Ergänzung um DirectSound3D und MMX-Unterstützung

3.0a,b

Fehlerbeseitigungen

5.0

Erweiterung u.a. um DirectX Setup, den Media Layer, Vertex Buffers, Force Feedback, 3D-Audio Hardware Beschleunigung, Multimonitor Unterstützung in Windows 98

5.2

Erweiterung um DirectPlay und Fehlerbeseitigungen

6.0

Erweiterung um viele 3D-Grafikfeatures (Single-pass Multitexturing, Bump Mapping, Texture Compression und Stencil Buffer), 3DNow-Unterstützung

6.1

Erweiterung um DirectMusic

7.0

Erweiterung um viele 3D-Features (Vertex Blending, Cubic Environment Mapping, u.a.), Einführung der TnLHAL, Verbesserung des 3D-Sounds, Unterstützung von DLS2, ab jetzt volle Unterstützung von Visual Basic

8.0

Vereinheitlichte Grafik-und Audioschnittstelle (DirectX Graphics und DirectX Audio), neue 3D-Grafik-Features

8.1

Erweiterung von DirectMusicProducer, DirectShow, DirectX Graphics

9.0 (beta)

Erhebliche Erweiterung von DirectGraphics

 

c) Verfügbarkeit und Kompatibilität von DirectX[1]

Etwa alle 10 Monate veröffentlicht Microsoft eine neue DirectX-Generation mit meist erheblich erweitertem, aber auch umstrukturiertem Umfang. Aktuell ist die Version 8.1. Die Beta 9.0 ist gerade erschienen.

Neben den DirectX-Treibern für die Anwender gibt es das DirectX-SDK (Software Development Kit) für die Anwendungsentwickler. Es stellt die Programmierschnittstellen zur Verfügung.

DirectX und das DirectX-SDK können von der Microsoft-Homepage gratis heruntergeladen

Die aktuelle DirectX-Version ist erhältlich für Windows 98, Windows ME, Windows 2000, Windows XP. Windows 95 wird nur bis DirectX 8.0a unterstützt, Windows NT4.0 nur in DirectX 3.0. Windows CE unterstützt zum Teil DirectX. Damit verwendet z.B. auch Segas Spieleconsole Dreamcast, welche auf dem Betriebssystem Windows CE aufsetzt, eine spezielle Version von DirectX6.0 für ihre Spiele.[2] Auch Microsofts XBox verwendet die DirectX-Schnittstellen.

 

Alle bisherigen Versionen von DirectX sind abwärtskompatibel. Allerdings sind gegebenfalls neue Gerätetreiber für die zu unterstützende Hardware zu installieren. Programmiertechnisch ist auch die feste Codierung einer DirectX-Version möglich. Das heißt, dass eine Anwendung nur bei einer bestimmten DirectX-Version funktioniert. Dieses Feature macht allerdings aufgrund der Abwärtskompatibilität wenig Sinn.

DirectX wird fest ins Betriebssystem integriert. Es kann nach der ersten Installation nicht wieder deinstalliert werden.

 

d) Programmierung von DirectX

Folgende Programmiersprachen unterstützen DirectX:

MS Visual C und C++

Ursprünglich war DirectX nur hierfür geplant

Borland C++

Mit den korrekten Compiler-Einstellungen funktioniert DirectX auch hier.

MS Visual Basic

Seit DirectX 7.0 volle Unterstützung für Visual Basic

Borland Delphi

Unter www.delphi-jedi.org, http://www.directx-for-delphi.de/  und http://www.minfos.de/selfdxd/ gibt es sehr viele DirectX-Module für Delphi herunterzuladen. Siehe dazu auch die Serie „Spieleprogrammierung unter Delphi“ in der c’t 1999-2001.

Smalltalk MT

Unter www.mvps.org/directx/smalltalk/index.htm wird beschrieben wie man unter Smalltalk MT DirectX verwenden kann

Java

Es gibt ein Microsoft SDK für Java[3], welches einige DirectX-Funktionen unter Windows zur Verfügung stellt. Dies widerspricht allerdings der Plattform-Unabhängigkeit von Java.

 

Die Programmierung von DirectX erfolgt objekt-orientiert, wobei das Microsoft Component Objects Model (COM) verwendet wird.

 

 

e) Übersicht über die Fähigkeiten von DirectMusic

 

Schlagwort

Erläuterungen zum Inhalt

„Message-based musical data“

Der gesamte Musikdatenfluß innerhalb von DirectMusic erfolgt in Form von Nachrichten (“Messages”)

Wiedergabe beliebiger Audiodaten über eine einheitliche Schnittstelle

Verschiedene Audioformate (Waveformaudio in verschiedenen Sampleraten, MIDI, DLS2) können auf die gleiche Art und Weise abgespielt werden.

Unterstützung von MIDI[4] und DLS2[5]

Musik, die nicht in Form von Samples gespeichert ist, kann über MIDI oder DLS2 ausgegeben werden. Bei letzterem wird aus mitgelieferten Samples für verschiedene Musikinstrumente ein Musikstück auf Grundlage von Notendaten und Instrumentenzuordnungen auf jedem PC gleichklingend und sehr realistisch wiedergegeben

Dynamische Musikerzeugung

Musik kann „on the fly“ zur Laufzeit zusammengesetzt und damit quasi komponiert werden.

Klangerzeugung über einen Synthesizer

MIDI- und DLS2-Daten werden im Synthesizer aufbereitet

DirectMusic Producer

Er ist ein mächtiges Werkzeug zur Bearbeitung und Erzeugung von DirectMusic-kompatiblen Musikdatenströmen, insbesondere bzgl. der dynamischen Musikerzeugung.

 

 

 

f) Übersicht über die Fähigkeiten von DirectSound

 

Schlagwort

Erläuterungen zum Inhalt

Aufnahme von Waveform-Audio

Selbsterklärend

Wiedergabe von Waveform-Audio

dito.

Soundeffekte (u.a. Hall, Echo)

dito.

Positionierung von Soundquellen im 3D-Raum

dito.

Finaler Soundmix

Zusammenmischen aller Audiospuren

Property Sets

Hardware-Hersteller können ihren Geräten spezielle Features über Property Sets geben und in DirectX integrieren

 

 

g) Wann benötigt man zwingend DirectXAudio für die Audiowiedergabe?

Um unter Windows Sound abspielen zu können, benötigt man nicht DirectX Audio. So kann man z.B. mit der Standard Windows Multimedia Bibliothek (MMSystem.lib bzw. winmm.lib) eine Wave-Datei mit ein bis drei Zeilen-Code abspielen[6]:

 

MStream := TMemoryStream.Create; 

MStream.LoadFromFile(„Musik.wav“); 

sndPlaySound(Mstream.Memory, SND_MEMORY or SND_ASYNC); 

 

oder gar nur:

 

sndPlaySound(„Bounce.wav“, NULL, 0);

 

Um das gleiche Ergebnis bis zur Version DirectX 8 zu erzeugen, brauchte man einige 100 Zeilen Code. Mittels DirectSound muß zunächst der Code für das Laden der Wav-Dateien selbstgeschrieben werden, dann ein Soundpuffer erzeugt und später in diesen hineingeschrieben werden.

Seit Version 8.0 bietet die Komponente DirectMusic vereinfachte Abspielroutinen an, welche diesen Code auf immerhin 20 Zeilen reduzieren. Allerdings sind zusätzlich noch etliche Zeilen an Kommentar erforderlich, um den Überlick zu behalten. Die aktuelle DirectSound-Version benötigt etwa 100 Zeilen Code um das Ergebnis zu erzeugen.

Für diesen Fall ist DirectX Audio also sicherlich nicht sinnvoll. Besteht die Aufgabe aber darin, gleichzeitig zwei zeitlich leicht versetzte Sounds abzuspielen, reicht das Multimedia-System nicht mehr aus. Dies wird in vielen Multimedia-Anwendungen und insbesondere in Spielen der Regelfall sein, da sich dort der Soundtrack häufig aus einer Hintergrund-Musik und vielen gleichzeitig abgespielten Geräuschen zusammensetzt. Allein durch ein schnellfeuerndes Gewehr sind häufig 3-4 Spuren gleichzeitig belegt.

DirectX wird außerdem für zusätzliche Effekte wie Hall oder Echo, für 3D-Audio und für die dynamische Musikerzeugung benötigt.

 



[1] siehe dazu auch www.microsoft.com/windows/directx/productinfo/sysreqs/default.asp

[2] siehe auch http://www.microsoft.com/msj/0799/directx/directx.htm

[3] siehe http://www.microsoft.com/presspass/press/1996/Dec96/javsdkpr.asp

[4] MIDI: Musical Instrument Digital Interface

[5] DLS2: Downloadable Sounds Level 2

[6] siehe Sauer, Technik der Spieleprogrammierung


... [ Seminar: Startseite ] ... [ Einleitung: Was ist DirectX ? ] ... [ Überblick über DirectX ] ... [ Konzepte für Multimedia-Beschleunigung ] ...