View
26
Download
0
Category
Preview:
DESCRIPTION
Einsteigerkurs. Andy Reimann - Mai 2011. Trailer. Intro. Roadmap. Geschichte von OpenGL Buffer und Fenster Fenster-Management mit Glut - OpenGL Utility Toolkit PROC: Fenster initialisieren Die Transformation-Pileline von OpenGL PROC: Moving Triangle - PowerPoint PPT Presentation
Citation preview
Einsteigerkurs
Andy Reimann - Mai 2011
Intro
Trailer
Roadmap
• Geschichte von OpenGL• Buffer und Fenster• Fenster-Management mit Glut - OpenGL Utility Toolkit
o PROC: Fenster initialisieren
• Die Transformation-Pileline von OpenGLo PROC: Moving Triangle
• Beleuchtungsmodell und Materialeigenschafteno PROC: Materialized Teapot
• Einführung in DevIL - Texturen laden und anwendeno PROC: Textured Teapot
Hinweise zum Vortrag
• Da Zeit knapp, viele Detailinformationen nicht abgedeckto können in Tutorials (Linkliste am Ende) selbst erlernt
werden• Vortrag gibt einen Überblick• Wenn Fragen auftauchen, dann Fragen• Nach einer Einführung gibt es interaktives Arbeiten an
Beispielen
Geschichte von OpenGL - 1992
• SiliconGraphics (SGI) 1992 veröffentlichten erste OpenGL API Spec (kein Code)
• Hersteller müssen eigene Implementierung mitbringen
FlexibilitätErweiterbarkeit
Geschichte von OpenGL - 1994
• Windows NT (1994) -> erstmals OpenGL Support
• John Carmack (id Software) -> Erste Implementierung von Quake 1996
• Beginn des API-Wars zwischen OpenGL und Direct3D (bis Heute!)
Bis ca. 2000 waren noch fast alle Berechnungen im Softwaremode
ohne Grafikunterstützung implementiert!
Geschichte von OpenGL - 2000
• GPU Performance steigt exponentiell• viele Software-Features nun auf GPU
implementiert• Der neue Weg heißt BUFFERS
Geschichte von OpenGL - 2000
• GPU Performance steigt exponentiell• viele Software-Features nun auf GPU
implementiert• Der neue Weg heißt BUFFERS
Buffer:Ein Buffer ist ein Stück Speicher, wo temporäre Daten gespeichert werden. Wenn die Arbeit an einem Buffer beendet wird, wird dieser gelöscht und kann wieder verwendet werden.
Beliebige Daten können mit nur einem Call übertragen werden!
Geschichte von OpenGL - 2004
• Erwachen nach einer 4-Jährigen Stagnationsphase• OpenGL unterstützt Shader mit GLSL -> Version 2.0
veröffentlicht • Leider erst 4 Jahre nachdem Direct3D dies tut • verliert werter an Boden
Geschichte von OpenGL - 2006
• Khronos Group leitet OpenGLo Gruppe von Software und Hardware Herstellerno bringen OpenGL wieder an das Tageslicht
Geschichte von OpenGL - 2008
• OpenGL 3.0 veröffentlicht• volle Backward-Compatibility• jedoch viele angekündigten Veränderungen waren nicht
enthalten
Hat OpenGL den API-War verloren?NEIN!
• viele Direct3D 10 Features doch enthalten• diese aber auch unter Windows XP einsatzfähig
Geschichte von OpenGL - 2009
• OpenGL 3.1 veröffentlichto Spec enthält nun kein immediate mode mehr
• OpenGL 3.2 veröffentlichto API nun gleichauf mit Direct3D 10!
Geschichte von OpenGL - 2010
• OpenGL 4.0 veröffentlicht (gleichauf mit Direct3D 11)• OpenGL 3.3 gleichzeitig für ältere Hardware
veröffentlichto implementiert so viele Features wie möglich von
OpenGL 4.0
OpenGL 4.x Requirements• NVIDIA GTX 400• ATI Radeon HD 5000 series
Die neuen Browser Startseiten :)
OpenGL The Red Book OpenGL The Blue Book
Buffer und Fenster - Definition
Fenster:Ein offener Bereich, den eine Applikation mit darzustellenden Daten füllen kann.
Buffer und Fenster - Definition
Fenster:Ein offener Bereich, den eine Applikation mit darzustellenden Daten füllen kann.
Buffer:Ein Stück Speicher, der einem Fenster übergeben werden kann, um ihn sichtbar zu machen.
Buffer und Fenster
• sequenzielle Darstellung und Berechnung
• Frame-to-Frame Übergänge sichtbar
• Animationen wirken abgehackt
Buffer und Fenster
• SwapBuffer sehr effizient
• immer ein Buffer zum Anzeigen bereit (Multithreading)
Fenster-Management mit Glut - OpenGL Utility Toolkit
Was ist GLUT?• Contexterstellung (Application<->Fenster Interaktion)• Plattformübergreifend• Freeglut ist modernere Implementierung (kann OpenGL
4.0 Context erstellen [get it])
Example: 1. Fenster initialisieren
Die Transformation-Pileline von OpenGL
• Modelview Matrix: Transformation der Objekte im Raum• Projection Matrix: Kameramodell • View Matrix: Fensterkoordinaten• Color Matrix: Farbwert Transformation• Texture Matrix: Textur Koordinaten Transformation
Stackverhalten der Modelview Matrix:• glPushMatrix() und glPopMatrix()• geziehlte Hintereinanderausführung von Transformationen• geziehltes Rückgängig machen von Transformationen• Stacktiefe: Spec = mindestens 32 bei Modelview und
mindestens 8 bei Projection Matrix
Die Transformation-Pileline von OpenGL
glMatrixMode( GL_MODELVIEW );glTranslate(x,y,z);
glScale(x,y,z);glRotate(angle,x,y,z);
glMatrixMode( GL_PROJECTION );glFrustum(l,r,b,t,n,f);glOrtho(l,r,b,t,n,f);
glViewport(w,h);
Die Transformation-Pileline von OpenGL
Example: 2. Moving Triangle
Die Transformation-Pileline von OpenGL
Vertiefung und Erweiterung des Wissens:• Wiederholung, Wiederholung, Wiederholung• eigene Mathematik Klassen oder Bibliotheken
verwenden [get gml]
Beleuchtungsmodell und Materialeigenschaften
• Eingebaute Beleuchtung für bis zu 8 Spotlights, Omnidirectional Lights und Directional Lights
• 3D-Wahrnehmung ermöglicht
Phong Modell:• ambient: gleichmäßiges Licht an jedem Punkt• diffus: Omnidirektionales Licht, welches Punkte
abhängig von ihrer Position ausleuchtet• spekular: Glanzlicht auf glatten Oberflächen
Example: 3. Materialized Teapot
Beleuchtungsmodell und Materialeigenschaften
Vertiefung und Erweiterung des Wissens:• Normalenvektoren und Beleuchtung• Lichtfarben
Einführung in DevIL - Texturen laden und anwenden
• DevIL ist die am weitesten verbreitete Lib [get it]• unterstützt alle gängigen Bildformate• Anlehnung der API an OpenGL
Example: 4. Textured Teapot
Einführung in DevIL - Texturen laden und anwenden
Vertiefung und Erweiterung des Wissens:• Texturkoordinaten und
Texturkoordinatengenerierung• Bedeutung von Min- und Magfilter
Agenda Fortgeschrittenenkurs
• Buffer für Vertices, Indices, Pixels und Frames
• Shader• Beschleunigungsstrukturen
(Octree, Bounding Volume, ...)• ... wünscht euch was :)
OpenGL Einsteigerkurs
ENDE
Tutorial Liste
http://nehe.gamedev.net/ (deutsche Übersetzung: http://www.codeworx.org/opengl_tuts.php)
http://www.spieleprogrammierung.net/p/opengl-tutorial-liste.htmlhttp://wiki.delphigl.com/index.php/Tutorialhttp://www.swiftless.com/opengltuts.htmlhttp://www.opengl.org/code/http://www.xmission.com/~nate/tutors.htmlhttp://www.lighthouse3d.com/opengl/tutorials.shtmlhttp://www.paulsprojects.net/tutorials/tutorials.htmlhttp://www.mario-konrad.ch/index.php?page=20400http://www.codecolony.de/OpenGL/
Recommended