Post on 06-Apr-2015
transcript
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 ...
1. Initialisierung2. 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: LichtPoint 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 = <Rot, Grün, Blau, Alpha>Alpha {0x00 .. 0xFF}Alpha = 0x00: Volle FarbeAlpha = 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 Bildschirm2D-Projektion der Kamerakoordinaten
1. Lokale Koordinaten
2. Welt-KoordinatenPositionierung der Objekte
Geometrie
Transformationen innerhalb der Koordinatensysteme über Matrizen
3. Kamera-KoordinatenBewegung 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 P
unkt
(x, y
, z) d
rehen
...
Der Blickwinkel macht's!Viewing Frustum
Die schnellsten Polygone sind die, die nicht berechnet werden müssen!
ClippingCulling
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 : http://msdn.microsoft.com/directx
Stefan Zerbsthttp://www-public.tu-bs.de:8080/~y0005571/
Stefan Röttger (LOD)http://wwwvis.informatik.uni-stuttgart.de/~roettger/
Virtual Terrain Project http://www.vterrain.org/ Virtual Terrain Project
The DirectX eXperience http://www.geocities.com/SiliconValley/Way/3390/index.html
Links
Fragen ?
Wünsche ?
Vorschläge ?