10

Click here to load reader

2010-JOGL-03-OpenGL-Crash-Course

Embed Size (px)

Citation preview

Page 1: 2010-JOGL-03-OpenGL-Crash-Course

C A R LV O N

O S S I E T Z K Y

OpenGL Crash Course

Johannes Diemke

Ubung im Modul OpenGL mit JavaWintersemester 2010/2011

Page 2: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Namenskonventionen fur Funktionen

Die meisten OpenGL Befehle folgen der folgendenNamenskonvention:

Weitere Beispiele:

I void glColor3i(int red, int green, int blue)

I void glColor3f(float red, float green, float blue)

I void glColor3d(double red, double green, double blue)

I void glColor4f(float red, float green, float blue, float alpha)

Intern nutzt OpenGL Floats → Performanz!

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/10

Page 3: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Der OpenGL ZustandsautomatDie Art und Weise wie Objekte gezeichnet werden hangt von vielenParametern ab:

I Ist eine Lichtquelle vorhanden?I Wie sind die Materialeigenschaften?I Soll eine Textur genutzt werden?I . . .

In OpenGL werden solche Variablen als Zustandsautomat realisiert

Wird eine Zustandsvariable einmal gesetzt, so behalt Sie ihren Wertbis sie einen neuen Wert zugewiesen bekommt

Viele der Zustandsvariablen konnen lediglich an- und ausgeschaltetwerden

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/10

Page 4: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Der OpenGL Zustandsautomat (Forts.)

Um Zustandsvariablen an- und auszuschalten konnen die folgendenMethoden genutzt werden:

public void glEnable(int cap)

public void glDisable(int cap)

Mogliche Parameter sind bspw.:

I GL.GL_LIGHTING

I GL.GL_CULL_FACE

I GL.GL_BLEND

I GL.GL_ALPHA_TEST

I . . .

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/10

Page 5: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Konstruktion von Objekten

Sollen komplexere Objekte dargestellt werden, so werden diese ausmehreren kleinen Formen, sogenannten Primitven, zusammengesetzt

Primitive sind ein- oder zwei dimensionale Einheiten wie:

I PunkteI LinienI PolygoneI . . .

Primitive werden durch die Angabe der Raumkoordinaten ihrerEckpunkte im dreidimensionalen Raum definiert

Dabei wird ein kartesisches Koordinatensystem genutzt

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/10

Page 6: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Konstruktion von Objekten (Forts.)Zur Festlegung eines solchen Eckpunktes (engl.

”Vertex“) steht der

folgende Befehl zur Verfugung:void glVertex3f(float x, float y, float z)

BeispielEin durch glVertex3f(50.0f, 50.0f, 0.0f) festgelegter Eckpunkt

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/10

Page 7: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Konstruktion von Objekten (Forts.)

Primitive konnen mit Hilfe eines glBegin/glEnd-Paares gezeichnetwerden

Dabei bestimmt der Parameter der glBegin-Methode die zuzeichnenden Primitive:

I GL.GL_POINTS

I GL.GL_LINES

I GL.GL_LINE_STRIP

I . . .

In dem glBegin/glEnd-Paar werden die Eckpunkte der zuzeichnenden Primitive eingeschlossen

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/10

Page 8: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

OpenGL Primitive im Uberblick

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/10

Page 9: 2010-JOGL-03-OpenGL-Crash-Course

OpenGL Crash Course

Beispiele

Zeichne zwei Punkte mit den Raumkoordinaten (0, 0, 0) und(50, 50, 50)

gl.glBegin(GL.GL_POINTS);

gl.glVertex3f( 0.0f, 0.0f, 0.0f);

gl.glVertex3f(50.0f, 50.0f, 50.0f);

gl.glEnd();

Zeichne ein Liniensegment zwischen den beiden Raumkoordinaten(30, 30, 30) und (60, 60, 60)

gl.glBegin(GL.GL_LINES);

gl.glVertex3f(30.0f, 30.0f, 30.0f);

gl.glVertex3f(60.0f, 60.0f, 60.0f);

gl.glEnd();

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/10

Page 10: 2010-JOGL-03-OpenGL-Crash-Course

Literatur

� Dave ShreinerOpenGL Programming Guidehttp://www.opengl-redbook.com/

� Richard S. Wright, Benjamin Lipchak und Nicholas HaemelOpenGL SuperBibelhttp://www.starstonesoftware.com/OpenGL/

� Randi J. RostOpenGL Shading Languagehttp://www.3dshaders.com/

� Tomas Akenine-Moller, Eric Haines und Naty HoffmanReal-Time Renderinghttp://www.realtimerendering.com/

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/10