DirectX - Bestandteile

Inhaltsverzeichnisseite

D3DX

DirectX Graphics

 


In DirectX Graphics gibt es zwei Modi,

den immediate Mode und den retained

Mode.

Der immediate(unmittelbar)

Mode ist der Low-Level Teil der API,

er ist sehr hardwarenah und der

Programmierer hat die Möglichkeit,

alles direkt anzufassen und zu benutzen.

Der immediate Mode ist dadurch sehr

schnell.

Der retained(zurückhaltend) Mode ist

der High-Level Teil der API. Er ist weiter

von der Hardware entfernt und daher

langsamer als der immediate Mode,

demgegenüber bietet er aber mehr

Komfort, so ist es zum Beispiel möglich,

ein definiertes Objekt unbekannter

Programmstruktur mit Texturen in eine

Anwendung zu laden und dort mit

den Befehlen welche dieser Mode bietet

in Echtzeit zu manipulieren.

 

Neu hinzugekommen sind gegenüber

DirectX 6/7 die programmierbaren

Pixel- und Vertexshader. Parallel

zu diesen existieren aber weiterhin

die T&L (Transform&Lighting) –

Engine und Multitexturing. Es bleibt

an dieser Stelle also dem Programmierer

überlassen, welche dieser Varianten

er benutzen möchte.

In Directx Graphics wurde DirectDraw

in Direct3D mit eingegliedert, weil sich

an DirectDraw in den letzten Versionen

ausser kleinen Optimierungen kaum

noch etwas geändert hat.

Die grösste Neuerung jedoch in Bezug auf DX6/7 stellen die programmierbaren

Shader, Pixel- und Vertexshader da. Diese sind in den Grafikchip integriert und

geben dem Programmierer die Möglichkeit, Algorithmen zu schreiben, die auf

einzelne Vertices oder Pixel angewendet werden können. Es können auch auf unterschiedliche Vertices/Pixel unterschiedliche Algorithmen angewandt werden,

ganz nach Wunsch. Da die Anwendung dieser Algorithmen in der diesbezüglich

optimierten Hardware geschieht bekommt man mit den Shadern eine gute

Performance für diese per-Vertex- und per-Pixel-Operationen.

Für diese Shader gibt es Sprachen, um die Hardware-Shader zu  schreiben.

Für den Pixelshader nennt sich sich diese Sprache programmierbare Pixelverarbeitungssprache (pixel processing language). Sie ermöglicht z.B.

generelle Texturkombinierende Ausdrücke (general texture combining expressinons),

per-pixel lighting, nützlich für Bumpmapping, per-pixel environmant mapping

für fotorealistische speculare Effekte, und jeden anderen Algorithmus, den der Programmierer sich definiert.

Mit der programmierbaren Vertexverarbeitungssprache lassen sich z.B. morphing/tweening Animationen, Matrix palette skinning für Skelettanimationen,

user-defined lighting models für eigene Lichtmodelle, general environment mapping,

prozedurale Geometrie (procedural geometry) und auch hier jeden weiteren vom

Entwickler definierten Algorithmus.

 

Weiterhin hinzugekommen seit der letzten Version von DirectX sind Features wie

multisampling rendering support, welches  Effekte wie Motion Blur, Depth-of-Field

und full scene antialiasing ermöglicht, point sprites für Partikeleffekte und 3-D volumetric textures, womit man z.B räumliche atmosphärische Effekte und entfernungsabhängiges per-pixel lighting realiesieren kann.

 

Depth-of-Field

 

 

 

Per-Pixel lighting, allerdings unter OpenGL, aber hier auch moeglich