30
Einsteigerkur s Andy Reimann - Mai 2011

Einsteigerkurs

  • Upload
    lazaro

  • View
    26

  • Download
    0

Embed Size (px)

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

Page 1: Einsteigerkurs

Einsteigerkurs

Andy Reimann - Mai 2011

Page 2: Einsteigerkurs

Intro

Trailer

Page 3: Einsteigerkurs

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

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

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

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

Geschichte von OpenGL - 2000

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

implementiert• Der neue Weg heißt BUFFERS 

Page 8: Einsteigerkurs

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

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

Geschichte von OpenGL - 2006

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

Page 11: Einsteigerkurs

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

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

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

Die neuen Browser Startseiten :)

OpenGL The Red Book OpenGL The Blue Book

Page 15: Einsteigerkurs

Buffer und Fenster - Definition

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

Page 16: Einsteigerkurs

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

Buffer und Fenster

• sequenzielle Darstellung und Berechnung

• Frame-to-Frame Übergänge sichtbar

• Animationen wirken abgehackt

Page 18: Einsteigerkurs

Buffer und Fenster

• SwapBuffer sehr effizient

• immer ein Buffer zum Anzeigen bereit (Multithreading)

Page 19: Einsteigerkurs

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

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

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

Die Transformation-Pileline von OpenGL

Example: 2. Moving Triangle

Page 23: Einsteigerkurs

Die Transformation-Pileline von OpenGL

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

verwenden [get gml]

Page 24: Einsteigerkurs

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

Beleuchtungsmodell und Materialeigenschaften

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

Page 26: Einsteigerkurs

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

Einführung in DevIL - Texturen laden und anwenden

Vertiefung und Erweiterung des Wissens:• Texturkoordinaten und

Texturkoordinatengenerierung• Bedeutung von Min- und Magfilter

Page 28: Einsteigerkurs

Agenda Fortgeschrittenenkurs

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

• Shader• Beschleunigungsstrukturen

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

Page 29: Einsteigerkurs

OpenGL Einsteigerkurs

ENDE

Page 30: Einsteigerkurs

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/