
Vorwort:
Am 30.September 1995
begann alles, die erste Version
von DirectX erschien. Eine Zusammenstellung
von verschiedenen Programmschnittstellen,
die für den Multimedialen Bereich
sowie für den Spielebereich
entwickelt wurden. Dabei deckt die
DirectX Software fast alles im
Bereich Multimedia ab, angefangen
im Hauptgebiet von komplexer 2D
und 3D-Grafik über Audio und
Eingabegeräte bis hin zur Netzwerkkommunikation.
Und nun auf der Gamefest-Messe 22.-23.
Juli 2008, stellte Microsoft erste
Details zur DirectX Version 11 vor.
In diesem Artikel wird der Aufbau
von DirectX X und seinen Komponenten
erläutert und auch die Vorgeschichte
soll etwas beschrieben werden.
Kommen wir nun zum
Aufbau von DirectX, den die Kollegen
von Wikipedia
schön erklärt und aufgelistet
haben:
DirectX Graphics:
- Die Unterstützung von 2D- und 3D-Grafik.
Dies ist der am meisten genutzte Teil
von DirectX. Er ermöglicht einen
schnellen Direktzugriff auf die Grafikkarte.
-
DirectX Graphics stellt
eine Low-Level-API (Direct3D) und eine
High-Level-API (Direct3DX) bereit.
-
Die Low-Level-API Direct3D
eignet sich für Anwendungen mit
hoher Interaktionsrate und/oder Präsentationsfrequenz
komplexer grafischer Szenen (wie z.
B. bei 3D-Spielen). Bis zur Version
7 wurden bei der Low-Level-API zwischen
2D-Grafik (DirectDraw) und 3D-Grafik
(Direct3D) unterschieden. Durch eine
Überarbeitung des Grafikbereichs
(in Version 8) wurden beide Teile unter
einer einheitlichen API in Direct3D
zusammengefasst. Die explizite, eigenständige
Weiterentwicklung von DirectDraw wurde
damit eingestellt.
-
Die High-Level API Direct3DX
ermöglicht es, mit vertretbarem
Aufwand 3D-Anwendungen zu realisieren.
Direct3DX setzt auf Direct3D auf, d.
h. es nutzt dessen Basisfunktionalität.
-
DirectX Graphics bietet
direkten Zugriff auf die Grafikhardware,
vorbei am Graphics
Device Interface (GDI) und Display
Device Interface (DDI). Nicht durch
die Hardware unterstützte Funktionen
werden durch DirectX emuliert. Dafür
nutzt der Hardware Emulation Layer (HEL)
die Möglichkeiten von MMX-Prozessoren
zur Manipulation von Bildern und greift
auf Funktionen des GDI zurück.
-
DirectSound
- Zur Wiedergabe und Aufnahme von Soundeffekten,
unterstützt Raumklang (d. h. Positionierung
der Klänge im 3D-Raum)
- Daten aus mehreren Eingangspuffern (Secondary
Sound Buffers) werden mit Effekten belegt
und zusammen auf einen Ausgangpuffer (Primary
Sound Buffer) gemischt. Eingangspuffer
können in Software oder Hardware
realisiert sein, statisch (z. B. aus einer
Datei) oder dynamisch (z. B. Streaming
von einem Mikrofoneingang) Daten liefern.
Die Anzahl der Eingangspuffer, die gemischt
werden können, ist ausschließlich
durch die verfügbare Rechenleistung
limitiert.
- DirectSound passt sich automatisch dem
Leistungsspektrum der installierten Soundkarte
an.
- Es stehen Basiseffekte, wie Volume,
Frequency Control, Panning bzw. Balance,
zusätzliche Effekte, wie Reverb (Halleffekt),
Chorus, Distortion, Equalization und 3D-Effekte,
wie Rolloff, Amplitude Panning, Muffling,
Arrival Offset, Doppler Shift Effekt zur
Verfügung.
DirectMusic
- Für die Wiedergabe von Musik (MIDI-Musik,
allerdings keine komprimierte Musik wie
MP3). DirectMusic liefert dazu einen Software-Synthesizer
Service. Verwendet wird ein DLS2-Synthesizer.
Siehe DirectShow für die Wiedergabe
von komprimierter Musik wie MP3 und Video
(AVI,MPEG).
XAudio 2
- Basierend auf der Xbox-360-Sound-API
- Soll DirectSound ablösen
- Programmierbare DSP-Programme ermöglichen
EAX-ähnliche Effekte auf allen Soundkarten;
diese werden allerdings auf dem Hauptprozessor
ausgeführt. Dies hat vor allem Kritik
seitens des Herstellers von Soundkarten
Creative hervorgerufen, weil auf dessen
Karten solche DSP-Programme "in Hardware"
ausgeführt werden könnten, um
Spielern somit einen Geschwindigkeitsvorteil
zu bieten (durch Entlastung der Haupt-CPU).
DirectInput
- Unterstützung von Eingabegeräten,
wie Tastatur, Maus, Joysticks usw.
- Ermöglicht Force-Feedback-Effekte
(zum Beispiel das Vibrieren eines Gamepads
oder Widerstand beim Bewegen eines Joysticks)
und unterstützt den Zugriff auf analoge
und digitale Eingabegeräte, welche
ein absolutes Koordinatensystem verwenden.
Ein Eingabegerät kann über bis
zu sechs Bewegungsachsen und 32 Knöpfe
verfügen. Der Zugriff über DirectInput
umgeht das Windows Message System (d.
h. Ereignis-, Melde- und Warteschlangen)
und erfolgt direkt auf die Hardware; ein
Geschwindigkeitsvorteil gegenüber
der Win-32 API. DirectInput erlaubt Anwendungen
die Nutzung von möglichen Force-Feedback-Fähigkeiten
der Eingabegeräte, um so Kraftrückkopplungseffekte
zu erzeugen.
XInput
- Ausschließlich für die Verwendung
von Xbox-360-Controllern unter Windows
vorgesehen.
DirectPlay
- Für die Kommunikation von Multiplayerspielen
untereinander, die auf mehreren Computern
laufen (bei Netzwerkspielen oder Onlinespielen).
- Im Wesentlichen handelt es sich um ein
Protokoll auf Anwendungsebene, und es
ist somit unabhängig von konkret
genutzten Protokollen der Transport- und
Übertragungsebene (siehe dazu auch
OSI-Modell). DirectPlay realisiert keine
Mechanismen für das Zusammentreffen
der Spieler (Matchmaking) oder das Abrechnen
von Spielteilnahmen.
- Kern bildet die Spielesitzung (DirectPlay
Session), welche von einem "Host"
genannten Rechner erzeugt und moderiert
wird. Spieler sind logische Objekte, von
denen es pro Rechner mehrere geben kann,
daher wird zwischen lokalen und entfernten
Spielern unterschieden. Das Konzept von
Spielergruppen wird unterstützt,
jeder Spieler kann dabei gleichzeitig
mehreren Gruppen angehören. Die Spieler
können an andere Spieler Nachrichten
versenden (Chat).
- Hinweis: Für viele Spieleentwickler
war der gewaltige Overhead von DirectPlay
dafür entscheidend, es nicht zu verwenden
und lieber einen eigenen effektiveren
Netzwerk-Zugriff auf Basis von Winsock
zu realisieren. Andere haben sich wegen
der festen Bindung an Windows dagegen
ausgesprochen, da z. B. für speziell
auf Windows-Systemen lauffähige First-Person-Shooter
gerne auch eigene Linux-Server entwickelt
werden.
DirectShow (ehemals "Direct Media")
- Für die Verarbeitung von Video-
und Audio-Dateien.
- Damit lassen sich verschiedenste Arten
von Video-Dateien (AVI, MPEG) und Ton-Dateien
(zum Beispiel MP3) wiedergeben oder erstellen.
Unterstützt auch Internet-Streaming
und ist durch sog. DirectShow-Filter beliebig
erweiterbar.
- DirectShow ist inzwischen aus dem DirectX
SDK entfernt und in das Windows Plattform-SDK
aufgenommen worden. Somit gehört
DirectShow streng genommen nicht mehr
zu DirectX, sondern ist jetzt ein Bestandteil
der Windows-Plattform.
DirectSetup
- DirectSetup ermöglicht Programmierern,
ihre Installationsroutine automatisch
überprüfen zu lassen, ob die
benötigte DirectX-Version bereits
installiert ist, und diese andernfalls
zu installieren.
DirectX Media Objects
- Bietet Möglichkeiten, Audio- und
Video-Ströme zu verändern, und
kann auch zusammen mit DirectSound und
DirectShow verwendet werden.
Die Entwicklungsgeschichte:
Seit Mitte der 1980er Jahre
gibt es dank IBM "Computer für
Jedermann" welche zu dem Zeitpunkt
noch auf MS-Dos setzten. Damit begann auch
die Zeit für die Grafische Benutzeroberfläche
von Microsoft Windows, welche in den 90er
Jahren zunehmend für die verbreiteten
Anwendungen portiert wurde. Doch es gab
Außenseiter, die Computerspiele für
die es noch keine optimierte Programmierschnittstelle
gab. Damit blieben die für die Spiele
wichtigen Optionen für schnelle Grafik
und Audio-Operationen aus.
Ein riesen Erfolg für
die 3D-Grafik gab es mit dem Erscheinen
von dem Computerspiel Doom. Die Firma id
Software welche Doom sowie Wolfenstein 3D
entwickelt haben, zeigte damit welch technisches
Potential in den "IBM Kompatiblen PCs"
steckte, welche bisher als Büro-Computer
verwendet wurden. Der große Erfolg
lockte auch Microsoft an, etwas mehr Arbeit
in eine passende Programmierschnittstelle
für Microsoft zu stecken, damit der
wachsende Markt an PC-Spielern sich auch
für Microsoft-Systeme interessiert
und damit von MS-Dos wegzulocken.
Mit dem Erscheinen von Windows
95 wurde zwar einiges Verändert aber
eine Programmierschnittstelle für Spiele
fehlte trotzdem. Doch man machte sich bei
Microsoft schon vorher darüber Gedanken
und plante nachträglich eine Spiel-Programmierschnittstelle
in Windows 95 einzubauen. Diese Programmierschnittstelle
für Spiele, nannte Microsoft "Game
SDK", welche aus sehr wenigen Funktionen
bestand. So ermöglichte die SDK-Schnittstelle
unter anderem das Grafiken direkt in den
Grafikspeicher geblittet werden konnten.
Doch das gute MS-DOS hatte sich bereits
mehrfach bewiesen und so ignorierte die
Spieleindustrie die Bemühungen und
Entwicklungen seitens Microsoft mit Ihrer
"Game SDK" Schnittstelle.
Doch Microsoft arbeitete
parallel dazu an "WinG", eine
der "Game-SDK" ähnlichen
Bibliothek, welche aber hauptsächlich
den 256-Farben Modus nutze. Diese Bibliothek
"WinG" kam unter anderem bei dem
Spiel "Lemmings for Windows" zum
Einsatz und war auch für das Windows
3.11 Betriebssystem verfügbar.
Es folgte ein weiterer Versuch
seitens Microsoft sich am Siegeszug zu beteiligen.
So schaffte es Microsoft mit der DirectX
Version 1.0, id Software zu einer Portierung
ihres erfolgreichen PC-Spiels "Doom"
auf Basis der API-Schnittstelle für
Microsoft Windows 95 zu entwickeln.
Die Portierung des Spieles
stelle Microsoft auf einer Messe vor um
die Entwickler aus aller Welt von MS-DOS
wegzulocken und damit, Entwicklungen für
Microsoft Windows 95 und DirectX zu tätigen.
Leider blieb der Erfolg der Messe für
Microsoft aus, da sie den Aufwand für
eine gute Programmbibliothek, auf welche
Spiele mit optimierter Grafik und Soundfunktionen
bauen sollten. Auch einige Jahre nach dem
Versuch von Microsoft und DirectX Version
1.0 wurden Spiele für MS-DOS entwickelt,
welche nur wenig neue Funktionen mit sich
brachten, wie z.b das Nutzen der Autoplay-Funktionalität
von Windows.
DirectX 3.0 - 9.0c
Microsoft schaffte es mit
DirectX 3.0, welches mit Direct3D erstmalig
3D-Funtkionalität enthielt, von den
Entwicklern ernst genommen zu werden. Mit
DirectX 3.0 erschienen die
ersten Spiele die nur unter Microsoft Windows
liefen, nicht wie vorher auch unter MS-DOS.
Dazu gehörten unter anderem Tomb Raider
II oder Diabolo. Microsoft arbeitete an
der Entwicklung von DirectX 4.0 und
dort bemerkte man das einige Programmierer
auf weitere Funktionen warteten, die für
die Version DirectX 5.0 vorgesehen
waren. So Beschloss man, DirectX 4.0 nicht
zu veröffentlichen und die Funktionen
in die darauffolgende Version einzubauen.
Mit DirectX 6.0 kam erstmals
die heutigen Standardfunktionen wie Multitexturing
und Bump Mapping.
Mit der DirectX Version
7 wurde der Funktionsumfang stark
erweitert, so gab es Transform and Lightning,
Cubic Enviroment Mappung (CubeMaps). Am
T&L Paket arbeitete man fleißig
weiter in den kommenden Versionen und man
erweiterte die Funktionspalette durch Triangle
Tesselation und frei programmierbare Pixel
und Vertex-Shader.Ein Großteil der
Funktionen für Spiele und Multimediaprogrammierung,
wie 2D und 3D-Grafik, Video/Capturing, Sound
und Musik, Eingabe(darunter auch Force Feedback)
sowie Netzwerk, deckte DirectX 8
ab.
Im Juni 2004 erschien die
Version DirectX 9.0, welche
als größte Erneuerung die "High-Level-Shader
Language"(HLSL, C-basiert) bot. Mit
dieser Erneuerung konnten die Entwickler
leichter wie zuvor 3D-Grafiken und Effekte
erstellen. Des Weiteren war die HLSL eine
leichte und flexible Entwicklungsumgebung,
welche zu allen DirectX-fähigen Grafikkarten
kompatibel war und dies erleichterte die
Anpassung an die Hardware Eigenheiten. Es
gab auch weitere Neuerungen, wie eine Bibliothek,
welche Patch-Meshes und normale Polygon-Meshes
sowie Echtzeit-Animation bot. Erweitere
Programmierfähigkeiten erhielten auch
die Direct3D-APIs bei Low-Level Grafiken,
welche auf programmierbare Vertex- und Pixel-Shader
sowie Shader-2.0-Modellen aufarbeiteten.
In DirectX 9.0 implementierte
Microsoft neue Assistenten, welche bei der
Erzeugung von DirectX Media Objects(DMOs),
Audio-Effekten und DirectMusik-Werzeugen
für MIDI-Processing, den Programmierern
behilflich sein sollten und DirectX 9.0
bot eine gute Zusammenarbeit mit dem Entwicklungssystem
Visual Studio .Net, welches auch von Microsoft
stammt. Eine Aktuelle Version von DirectX
9.0 wurde im März 2008 als DirectX
9.0c veröffentlicht. Mit der
Version soll der Support für die Nächsten
Jahre laut Microsoft gesichert sein, auch
wenn Microsoft Windows Vista und damit DirectX
10 und 10.1 erschienen sind.
Anfang 2007 erschien Microsofts
DirectX 10.0, welches nur
auf Microsoft Windows Vista läuft.
Dazu kommt, dass die Grafikkarte DirectX10.0
tauglich sein muss. Benutzt man ältere
Systeme wie Windows 98,ME,2000 oder XP,
so gibt es als aktuellste DirectX Version
9.0c.
Erneuerungen von der DirectX
10 Version befindet sich nur in der Direct3D
Komponente, welche das neue Windows Display
Driver Model und Shader Model 4 benutzt.
Des Weiteren werden ab Direct3D 10 kaum
noch Cap-bits verwendet, was die Entwickler
erfreuen wird. Denn bisher mussten sie Ihre
Hardware abfragen, nach möglichen Funktionskombinationen,
nun muss Microsoft die Erneuerungen der
Funktionen als Mindestanforderung der Schnittstelle
bekannt geben. Dafür müssen von
den Hardwareherstellern bestimmte Funtkionen
eingebaut werden, damit diese Hardware kompatibel
zu der jeweiligen Direct3D-Version ist.
Dies bringt durch optimale Komponenten seitens
der Hardwareproduzenten evtl. eine Abhebung
von anderen Wettbewerbern.
Das mit Windows Vista SP1
ausgelieferte DirectX 10.1
besitzt folgende Änderungen im Gegensatz
zur Direct X10.0 Version. Diese Änderungen
betreffen aber nur die Direct3D- Schnittstelle.
- Shader Model 4.1
- vierfaches Antialiasing mit veränderbaren
Subpixel-Mustern
- Unterstützung für durchgängiges
Rechnen mit 32-Bit-Gleitkommazahlen
- dynamisch adressierbare Cubemap-Arrays
- Rendern in blockkomprimierte Framebuffer
- XAudio 2 löst DirectSound ab
Sollte die Hardware in Form von der Grafikkarte,
eine dieser Funktionen nicht beherrschen,
so arbeitet die Karte nicht auf der Direct3D-10.1
Schnittstelle sondern muss die Applikation
auf Direct3D 10 runter zu setzen. Zu den
bisher DirectX 10.1 bekannten Grafikkarten
zählen die ATI Radeon HD3000er Serie,
HD4000er Serie sowie die S3 Graphics Chrome
400 Serie.
Auf der Gamefest-Messe in Seattle 22.-23.
Juli 2008, stellte Microsoft erste Details
zur DirectX Version 11 vor . So wurde bekannt,
dass alle bisherigen DirectX 10.x kompatible
Grafikkarten auch unter DirectX 11 eine
vollständige Komptabilität erreichen
werden. Dies schließt natürlich
die neuen Features von DirectX 11 auf älterer
Hardware aus.
Wesentliche geplante
Neuerungen von DirectX 11 sind:
- Shader Model 5, mit dem
die so genannten "Compute Shaders"
eingeführt werden, womit Microsoft
die GPGPU-Programmierung vereinheitlichen
möchte.
- Grafikkartenseitige Unterteilung von
3D-Flächen in Dreiecke (Tesselation
en:Tessellation), durch die der
Detailgrad von 3D-Szenen ohne Belastung
des restlichen Systems erhöht werden
kann. Dieses Feature wird derzeit schon
von einigen AMD-Grafikkarten unterstützt.[5]
- Thread-Unterstützung der Rendering-Pipeline
verbessert, insbesondere in Hinblick auf
effizientere GPGPU-Programmierung.
So ist auch diesmal wieder die aktuellste
DirectX-Version nur für Betriebssysteme
ab Windows Vista verfügbar. Die Hardwareseite
Gamestar.de
hat eine Kurzbeschreibung der einzelnen
Merkmale von DirectX 11zusammen gefasst,
die wir hier auflisten.
Tesselation: Steht in Crysis
ein Gegner direkt vor Ihnen, erkennen Sie
viele Einzelheiten, wie die Hautporen, aufgestickte
Namensschilder oder eine am Gürtel
baumelnde Granate. All diese Details sehen
Sie wie im echten Leben aus großer
Entfernung nicht mehr. Mussten bislang Programmierer
diesen Level of Detail in mühevoller
Kleinarbeit selbst bestimmen, soll ihnen
in Zukunft die Tesselation diese Arbeit
abnehmen. Wenn Ihnen das bekannt vorkommt,
haben Sie völlig recht, denn AMD stellte
Tesselation schon mit Radeon HD-2000-Serie
vor. Allerdings geht Microsoft einen anderen
Weg als AMD.
|
Tesselation:
|
 |
Compute Shader: Der Compute
Shader steht in direkter Konkurrenz zu Nvidias
CUDA. Denn mit dem auf Direct3D basierenden
Shader will Microsoft der Grafikkarte auch
andere Aufgaben aufbürden. So sei dank
der massiven parallelen Rechenleistung die
Grafikkarte durchaus geeignet für Physik-oder
KI-Berechnungen - auch wenn diese derzeit
meist von dem Prozessor durchgeführt
werden.
Multi Threading: Mit Multi
Threading will Microsoft in DirectX 11 den
Leistungsgewinn von Mehrkern-Prozessoren
deutlich steigern. Haben heutzutage Vierkern-CPUs
meist kaum Vorteile gegenüber Dual
Cores, soll mit DX11 die Mehrleistung deutlich
ansteigen.
Diesen Artikel im Forum
kommentieren?
|
Copyright Oktober 2008 by 3DChip
|
| Autor:
"Harlequin" Axel Hartsch |
| Text-Quelle:
wikipedia.de, Gamestar.de Bild-Quelle:
Ray Traced Bild 1: beginner-esportz.de,
Ray Traced Bild 2 stammt von wikimedia.org
und Tesselation/Crysis Gesichter kommt
von chip.de |
|