30
Einsteigerkur s Andy Reimann - Mai 2011

Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Embed Size (px)

Citation preview

Page 1: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Einsteigerkurs

Andy Reimann - Mai 2011

Page 2: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Intro

Trailer

Page 3: 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

Page 4: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 5: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Geschichte von OpenGL - 1992

• SiliconGraphics (SGI) 1992 veröffentlichten erste OpenGL API Spec (kein Code) 

• Hersteller müssen eigene Implementierung mitbringen

FlexibilitätErweiterbarkeit

Page 6: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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!

Page 7: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Geschichte von OpenGL - 2000

• GPU Performance steigt exponentiell• viele Software-Features nun auf GPU

implementiert• Der neue Weg heißt BUFFERS 

Page 8: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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!

Page 9: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 10: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Geschichte von OpenGL - 2006

• Khronos Group leitet OpenGLo Gruppe von Software und Hardware Herstellerno bringen OpenGL wieder an das Tageslicht

Page 11: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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  

Page 12: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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!

Page 13: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 14: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Die neuen Browser Startseiten :)

OpenGL The Red Book OpenGL The Blue Book

Page 15: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Buffer und Fenster - Definition

Fenster:Ein offener Bereich, den eine Applikation mit darzustellenden Daten füllen kann. 

Page 16: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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.

Page 17: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Buffer und Fenster

• sequenzielle Darstellung und Berechnung

• Frame-to-Frame Übergänge sichtbar

• Animationen wirken abgehackt

Page 18: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Buffer und Fenster

• SwapBuffer sehr effizient

• immer ein Buffer zum Anzeigen bereit (Multithreading)

Page 19: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 20: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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 

Page 21: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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);

Page 22: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Die Transformation-Pileline von OpenGL

Example: 2. Moving Triangle

Page 23: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Die Transformation-Pileline von OpenGL

Vertiefung und Erweiterung des Wissens:• Wiederholung, Wiederholung, Wiederholung• eigene Mathematik Klassen oder Bibliotheken

verwenden [get gml]

Page 24: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 25: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Beleuchtungsmodell und Materialeigenschaften

Vertiefung und Erweiterung des Wissens:• Normalenvektoren und Beleuchtung• Lichtfarben

Page 26: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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

Page 27: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Einführung in DevIL - Texturen laden und anwenden

Vertiefung und Erweiterung des Wissens:• Texturkoordinaten und

Texturkoordinatengenerierung• Bedeutung von Min- und Magfilter

Page 28: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

Agenda Fortgeschrittenenkurs

• Buffer für Vertices, Indices, Pixels und Frames

• Shader• Beschleunigungsstrukturen

(Octree, Bounding Volume, ...)• ... wünscht euch was :)

Page 29: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

OpenGL Einsteigerkurs

ENDE

Page 30: Einsteigerkurs Andy Reimann - Mai 2011. Intro Trailer

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/