ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.
Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel...
-
Upload
nguyenlien -
Category
Documents
-
view
222 -
download
0
Transcript of Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel...
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
Kapitel D
Grafik:Echtzeitgrafik
OpenGL
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
ComputergrafikEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Techniken im VergleichEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Techniken im VergleichEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Techniken im VergleichEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
Techniken im Vergleich● Video - Demos
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Computergrafik● Raytracing vs. Echtzeitgrafik
Echtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● 3D-Grafik– Bis zu 3 millionen Dreiecken– 85.000 Shaderprogramme– Grafikkarte berechnet Bild autonom
● Grafikkarten– Leistung über 2 Tflops– bis zu 1600 Shader ALUs– Bis zu 300 Watt Leistungsaufnahme– Geschwindigkeitsverdopplung alle 6 Monate
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik - ObjekteEchtzeitgrafik
● Definiert durch Eckpunkte (Vertizes)● Vertex
– Position– Farbe– Textur– Normale
Normal
EdgeMesh
Face
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● Anwendung– Vorbereitung der Grafikdaten
● Auswahl der Daten – Kollisionserkennung– Physik– KI– Sound
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik - MatrizenEchtzeitgrafik
Identität Translation
Rotation Rotation X-Achse
● Transformieren Objekte zur Anzeige● 4x4 Matrix
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik
Modell- & KameratransformationEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● Beleuchtung– Lichtquellen– Texturen– Farben
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● Projektion– Zunächst Sichtbarkeitsfrustum– Transformation in Würfel– Koordinaten (-1, 1)
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik
ClippingEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik
Window- & ViewporttransformationEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Echtzeitgrafik - TransformationenEchtzeitgrafik
Model-TransformModel-Transform
x
y
z
x
y
z
x
y
z
Bildschirm NormalisierteBildschirmkoordinaten
x
yx
y
x
y
z
Projection-
Transform Projection-
Transform
Viewport- Transform Viewport- Transform
1
-1
-1
1
Modellkoordinaten Sichtkoordinaten
Clippingkoordinaten
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● Rasterung– Einfärbung der Pixel
● Interpolation– Sichtbarkeitsprüfung
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
EchtzeitgrafikEchtzeitgrafik
● Baukasten mit Spezialeffekten
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Objekte - RaytracingEchtzeitgrafik
● Quads oder Nurbs
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
Objekte - EchtzeitgrafikEchtzeitgrafik
● Vielzahl von Dreiecken
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
ShaderEchtzeitgrafik
● Früher: Bestimmung der Farbe● Heute: Vertex, Pixel, Geometry, Compute● Ausführung pro Pixel/Vertex● Softwaremodul
– Renderman Shader● Hardwaremodul
– Bestandteil aller modernen Grafikkarten– Unified Shader
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
ShaderEchtzeitgrafik
● Vergleich Renderpipeline vs. Shader
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.1
ShaderEchtzeitgrafik
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
Tiefenpuffer● Ermöglicht Verdeckungseffekte● Pixel Entfernung zuordnen● Beim Zeichnen testen ob Entfernung geringer
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● Schnittstelle für 3D-Computergrafik● Neben DirectX wichtigste Schnittstelle● Unabhängig von Plattform und Sprache● Zustandsautomat● Standardisierung durch Konsortium● Emulation von Funktionen● Farbe = Summe aller Lichtquellen
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● reine Grafikausgabe● Glu
– Utility Bibliothek– Transformation Kamera– komplexe Objekte
● Glut– Abstraktion Fenstermanager– Eingabefunktionen
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● Festlegen der Position
● Zeichnen von Dreiecken
● Zeichnen von Quadraten
glBegin(GL_TRIANGLES); // Drawing Using TrianglesglVertex3f( 0.0f, 1.0f, 0.0f); // TopglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom LeftglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glEnd(); // Finished
// Move Left 1.5 Units And Into The Screen 6.0glTranslatef(-1.5f,0.0f,-6.0f);
glBegin(GL_QUADS); // Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f); // Top LeftglVertex3f( 1.0f, 1.0f, 0.0f); // Top RightglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom RightglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd(); // Done
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● Farbige DreieckeglBegin(GL_TRIANGLES); // Begin Drawing Triangles
glColor3f(1.0f,0.0f,0.0f); // Set The Color To RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top PointglColor3f(0.0f,1.0f,0.0f); // Set The Color To GreenglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom LeftglColor3f(0.0f,0.0f,1.0f); // Set The Color To BlueglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glEnd(); // Done Drawing A Triangle
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● Es wird wird 3D
glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front)
glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right)
glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back)
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
TexturierungOpenGL
● Realistischere Darstellung● Rastergrafik auf Gitternetz
● 1D-/2D-/3D-Textur● Texturkoordinaten● Wrapping● Filterung
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
TexturierungOpenGL
● Anwendungen:– Simulation von Materialien– Light Maps– Shadow Maps– Bumb Mapping– Environmental Mapping
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL
● Erstellen einer Textur
● Festlegen der Texturkoodinaten
glGenTextures(1, &texture[0]); // Create The Texture glBindTexture(GL_TEXTURE_2D, texture[0]);glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glBegin(GL_QUADS);// Front FaceglTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom LeftglTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Bottom RightglTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Top RightglTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm
4.2
OpenGLOpenGL