Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002
DirectX - Komponenten Architektur Komponenten Interfaces trennen Komponenten
Module DirectX - Direct 3D Transformationen Das Herzstück: Die Rendering Engine
DirectX - Programmstruktur Ordnung ist das Halbe Programmiererleben Initialisierung 2. Hauptschleife Eingabegeräte abfragen Verarbeitung der Eingaben Sichtbare 3D-Objekte auswählen Sichtbare3D-Objekte in der 3D-Welt positionieren, drehen Bewegung des Spielers in der 3D-Welt umsetzen 3D-Welt in 2D-Bildschirmkoordinaten projizieren Rendern des Frames Warteschleife / Framebremse 3. Beenden, aufräumen
Die Welt in DirectX (oder OpenGL)... ist Dreieckig
Ecken - Formate Ecken definieren Flächeneigenschaften
Point Light Directional Light Licht SpotLight Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light Licht bringt Spannung, tolle Effekte, kosten jedoch enorm Rechenzeit!
Flat shading Gouraud Shading Licht und Schatten Schattierungen bringen Tiefe!
Beispiel 1: Licht Point Light Directional Light Spot Light
Aus Dreiecken entstehen 3D-Objekte Modelle mit wenigen Ecken und weichen Rundungen gesucht!
Texturen Mit Texturen mogeln, wann immer möglich!
Texturen kacheln Gekachelte Texturen simulieren endlose Bilder!
LightMap, BumpMap Texturen Kaskadieren Texture Blending Cascade Textur Hardwareunterstützung für Textur-Mogeleien!
Color = Alpha {0x00.. 0xFF} Alpha = 0x00: Volle Farbe Alpha = 0xFF: Transparent für Wolken, Rauch, Explosionen... Texturen transparent Jetzt wird professionell gemogelt!
Nebel D3DFOG_LINEAR D3DFOG_EXP D3DFOG_EXP2 Schlechtes Mogeln mit Nebel überdecken!
typedef struct _D3DMATERIAL8 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power; } D3DMATERIAL8; Material Der schönste Glanz, leuchtende Augen!
Beispiel 2: Drahtgittermodell Texturen Bewegung Nebel Licht Rechenleistung Schattierung 288 Ecken, 486 Polygone 240 sichtbar
4. Projektion auf den Bildschirm 2D-Projektion der Kamerakoordinaten 1. Lokale Koordinaten 2. Welt-Koordinaten Positionierung der Objekte Geometrie Transformationen innerhalb der Koordinatensysteme über Matrizen 3. Kamera-Koordinaten Bewegung des Spielers / der Kamera: Verschiebung und Rotation der Weltkoordinaten
Kamera - Koordinaten Die Kamera bleibt fest, die Welt verschiebt und dreht sich um die Kamera.
... um die X-Achse um Y-Achse um Z-Achse... Geometrie Verschiebung, Rotation...alle Schmankerln der linearen Algebra! Einen Punkt (x, y, z) drehen...
Der Blickwinkel macht's! Viewing Frustum Die schnellsten Polygone sind die, die nicht berechnet werden müssen! Clipping Culling Bounding Boxes
LOD - Levels of Detail: Es ist nie falsch, selbst zu denken... Dynamisches Ecken-Management: LOD Stefan Röttger
Dynamisches Ecken-Management: LOD Stefan Röttger
Beispiel 3: LOD- Algorithmus Drahtgittermodell Texturen Flug über einen Planeten viele, viele Ecken Licht selbst berechnet Rechenleistung Nur die Blickrichtung zählt
Nachtrag zum Beispiel 3: LOD- Algorithmus Light Map Bump Map
4 Ecken, 2 Polygone, 1 Textur: Statische Bilder, die sich immer in Blickrichtung drehen. Textur-Mogelei: Billboards
Dynamische Szenen Straßen-Stücke Straßen-Graph Dynamik ist spannend - will jedoch schnell geladen sein!
Beispiel 4: Dynamischer Fahrsimulator Texturen Billboards Light-Maps Straßenstücken Straßen-Graph Nebel Licht
DirectX 8 SDK : Stefan Zerbst Stefan Röttger (LOD) Virtual Terrain Project Virtual Terrain Project The DirectX eXperience Links
Fragen ? Wünsche ? Vorschläge ?