Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline.

Ähnliche Präsentationen


Präsentation zum Thema: "Computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline."—  Präsentation transkript:

1 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline

2 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Übersicht 1.OpenGL Was ist das? Wer ist das? Programmbeispiel 2.Fixed Function Pipeline Vom Modell zum Bild Grundbegriffe Die OpenGL-Pipeline Per-Vertex Operations Rasterization Per-Fragment Operations

3 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL – Was ist das? OpenGL = Open Graphics Library Spezifikation einer API zur Entwicklung von 3D-Grafik-Anwendungen API = Application Programming Interface – Bibliothek von Funktionen zum Zugriff auf ein darunterliegendes Softwaresystem. – Beispiel: Dateisystem-API eines Betriebssystems.

4 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL – Ziele Erleichterung für den Programmierer – Einheitliche API für die Grafikprogrammierung Plattformunabhängigkeit – Verbindlicher Leistungsumfang Hardwarenahe Grafikprogrammierung – Zugriff auf Hardwarefeatures Ständige Weiterentwicklung – Nutzung und Anpassung an neue Technologien

5 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL – Wer ist das? Entwickelt von Silicon Graphics (sgi) Version 1.0 veröffentlich am 1. Juli 1992 Weiterentwicklung durch das Architecture Review Board (ARB) – Konsortium von Unternehmen aus der Branche – Gründungsmitglied Microsoft steigt 2003 aus Seit September 2006 eingegliedert in die Khronos Group

6 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Aus Sicht des Programmierers OpenGL Library in gängigen Entwicklungsumgebungen bereits enthalten Nutzung über Einbindung der Library und zugehörigen Headerdatei Viele zusätzliche hilfreiche Libraries verfügbar Breite Unterstützung bei Grafikkarten und Betriebssystemen

7 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Programmausschnitt int DrawGLScene(GLvoid)// Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// Clear Screen And Depth // Buffer glLoadIdentity();// Reset The Current Modelview Matrix glTranslatef(-1.5f,0.0f,-6.0f);// Move Left 1.5 Units And Into The // Screen 6.0 glBegin(GL_TRIANGLES);// Drawing Using Triangles glColor3f(1.0f,0.0f,0.0f);// Set The Color To Red glVertex3f( 0.0f, 1.0f, 0.0f);// Top glColor3f(0.0f,1.0f,0.0f);// Set The Color To Green glVertex3f(-1.0f,-1.0f, 0.0f);// Bottom Left glColor3f(0.0f,0.0f,1.0f);// Set The Color To Blue glVertex3f( 1.0f,-1.0f, 0.0f);// Bottom Right glEnd();// Finished Drawing The Triangle glTranslatef(3.0f,0.0f,0.0f);// Move Right 3 Units glColor3f(0.5f,0.5f,1.0f);// Set The Color To Blue One Time Only glBegin(GL_QUADS);// Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f);// Top Left glVertex3f( 1.0f, 1.0f, 0.0f);// Top Right glVertex3f( 1.0f,-1.0f, 0.0f);// Bottom Right glVertex3f(-1.0f,-1.0f, 0.0f);// Bottom Left glEnd();// Done Drawing The Quad return TRUE;// Keep Going }

8 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Programmausgabe

9 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Übersicht 1.OpenGL ✓ 2.Fixed Function Pipeline Vom Modell zum Bild Grundbegriffe Die OpenGL-Pipeline Per-Vertex Operations Rasterization Per-Fragment Operations

10 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Vom Modell zum Bild Aus der dreidimensionalen mathematischen Beschreibung einer Szene soll ein zweidimensionales Bild erzeugt werden. Dieser Vorgang heißt Rendering. Rendering

11 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Raytracing Grundlegendes Verfahren: Aussendung eines Strahls vom Augpunkt durch die Bildebene. Trifft der Strahl auf ein Objekt, so nimmt der Bildpunkt seine Farbe an. Berechnung von Schatten durch Schattenstrahlen.

12 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Rendering in OpenGL OpenGL nutzt stattdessen eine Rendering- Pipeline. Die Pipeline erhält verschiedene Parameter als Eingabe und berechnet aus ihnen ein Rasterbild. Der Ablauf der Berechnungen und die verwendeten Verfahren sind in OpenGL fest vorgegeben (Fixed Function Pipeline). Dadurch gut in Hardware umsetzbar.

13 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Primitive und Vertices Alle Grafikobjekte bestehen aus Primitiven. Primitive sind Punkte, Linien, Dreiecke und andere Polygone. Primitive sind definiert durch ihre Eckpunkte (Vertices).

14 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Primitive und Vertices Vertices speichern Attribute: – Koordinaten – Farbinformationen – ggf. Texturkoordinaten – andere Informationen …

15 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL Rendering Pipeline (vereinfachte Darstellung)

16 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Per-Vertex Operations Die übergebenen Vertices werden bearbeitet : – Im dreidimensionalen Raum platzieren – In Kamerakoordinaten umrechnen – Auf 2-dimensionale Koordinaten projizieren Dies geschieht jeweils durch Multiplikation der Vertices mit geeigneten Matrizen.

17 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Model Transformation Eingabe: Vertices in lokalen Koordinaten Die lokalen Koordinaten des Primitivs werden durch Drehung, Skalierung und Verschiebung in Weltkoordinaten überführt. Ausgabe: Vertices in Weltkoordinaten (0,1) (1,-1)(-1,-1) lokale Koordinaten Weltkoordinatensystem Model Transformation

18 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Viewing Transformation Eingabe: Vertices in Weltkoordinaten Analog zur Model Transformation werden alle Vertices entsprechend zur Kameraposition transformiert. Die Kamera befindet sich nun im Ursprung, und blickt die Tiefenachse hinunter. Ausgabe: Vertices in Kamerakoordinaten. In OpenGL: Model und Viewing Transformation zu ModelView-Matrix zusammengefasst.

19 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Lighting Für jeden Vertex wird ein Beleuchtungswert berechnet. – Abhängig von Lichtquellen und den Normalenvektoren der Vertices. – OpenGL nutzt das Phong-Beleuchtungsmodell.

20 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL Rendering Pipeline (vereinfachte Darstellung)

21 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Projection Transformation Eingabe: Vertices in Kamerakoordinaten Sichtbarer Bereich wird als Pyramidenstumpf aufgefasst (Frustum).

22 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Projection Transformation Der Stumpf wird nun zu einem Einheitswürfel transformiert. Dabei tritt die typische perspektivische Verzerrung auf. Der Würfel enthält den gesamten sichtbaren Bereich.

23 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Primitive Assembly OpenGL gruppiert zusammengehörige Vertices zu Primitiven. Unsichtbare Primitive (die uns ihre Rückseite zuwenden) werden entfernt (Backface Culling). Primitive, die über den Würfel hinausragen, werden entlang der Würfelkanten beschnitten. Clipping neuer Vertex

24 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Viewport Transformation Die verbliebenen Vertices werden auf eine zweidimensionale Ebene (Viewing Plane) projiziert. Der Tiefenwert bleibt allerdings noch erhalten. Die entstandenen normierten 2D-Koordinaten werden schließlich auf echte Pixelkoordinaten des Bildschirms transformiert.

25 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL Rendering Pipeline (vereinfachte Darstellung)

26 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Rasterization Allgemein: Umwandeln einer vektoriell beschriebenen Bildinformation zu einem Rasterbild. Hier: Umwandeln der noch durch Vertices beschriebenen Primitiven in darstellbare Bildinformationen.

27 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Scanline Rendering Prüfung jedes Bildpunkts auf Überdeckung mit dem Grafikprimitiv. Ablauf zeilenweise (in „Scanlines“). Bei Überdeckung Erstellung eines Fragments.

28 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Rasterization Durch Interpolation aus den Vertexattributen werden die Beleuchtungs-, Farb- und ggf. Texturkoordinaten für das Fragment gewonnen. rot blau grün

29 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann OpenGL Rendering Pipeline (vereinfachte Darstellung)

30 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Per-Fragment Operations 1.Wenn für ein Fragment Texturkoordinaten vorliegen, wird dem Fragment der passende Farbwert aus der Textur zugewiesen. 2.Durch eine Reihe von (optionalen) Tests, wird geprüft, ob das Fragment dargestellt werden soll.

31 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Per-Fragment Operations Tiefentest – Tiefeninformation des Fragments wird mit Depth Buffer verglichen – Wenn ein Objekt mit geringerer Tiefe (vor dem aktuellen Objekt) existiert, wird Fragment verworfen – Ansonsten wird Framebuffer an dieser Stelle überschrieben bzw. mit neuem Farbwert vermischt.

32 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Ausblick Fixed Function Pipeline inzwischen überholt. Hardware-Entwicklung macht weiterhin Fortschritte. OpenGL jetzt in Version 2.1 (mit in Teilen programmierbarer Rendering-Pipeline) Bald: Version 3.0 – Größerer Umbau der API – Nicht mehr abwärtskompatibel zu Vorversionen – Keine Fixed Function Pipeline mehr

33 computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline Jan-Hendrik Behrmann Fragen


Herunterladen ppt "Computer graphics & visualization 3D Graphics APIs: OpenGL & Fixed Function Pipeline."

Ähnliche Präsentationen


Google-Anzeigen