SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
CARL
      VON
OSSIETZKY
            OpenGL Crash Course

            Johannes Diemke

            ¨
            Ubung im Modul OpenGL mit Java
            Wintersemester 2010/2011
OpenGL Crash Course


Namenskonventionen f¨r Funktionen
                    u
   Die meisten OpenGL Befehle folgen der folgenden
   Namenskonvention:




   Weitere Beispiele:
         void glColor3i(int red, int green, int blue)
         void glColor3f(float red, float green, float blue)
         void glColor3d(double red, double green, double blue)
         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
OpenGL Crash Course


Der OpenGL Zustandsautomat
   Die Art und Weise wie Objekte gezeichnet werden h¨ngt von vielen
                                                    a
   Parametern ab:
         Ist eine Lichtquelle vorhanden?
         Wie sind die Materialeigenschaften?
         Soll eine Textur genutzt werden?
         ...
   In OpenGL werden solche Variablen als Zustandsautomat realisiert
   Wird eine Zustandsvariable einmal gesetzt, so beh¨lt Sie ihren Wert
                                                    a
   bis sie einen neuen Wert zugewiesen bekommt
   Viele der Zustandsvariablen k¨nnen lediglich an- und ausgeschaltet
                                o
   werden



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


Der OpenGL Zustandsautomat (Forts.)
   Um Zustandsvariablen an- und auszuschalten k¨nnen die folgenden
                                               o
   Methoden genutzt werden:
   public void glEnable(int cap)
   public void glDisable(int cap)

   M¨gliche Parameter sind bspw.:
    o
         GL.GL_LIGHTING
         GL.GL_CULL_FACE
         GL.GL_BLEND
         GL.GL_ALPHA_TEST
         ...




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


Konstruktion von Objekten
   Sollen komplexere Objekte dargestellt werden, so werden diese aus
   mehreren kleinen Formen, sogenannten Primitven, zusammengesetzt
   Primitive sind ein- oder zwei dimensionale Einheiten wie:
         Punkte
         Linien
         Polygone
         ...
   Primitive werden durch die Angabe der Raumkoordinaten ihrer
   Eckpunkte im dreidimensionalen Raum definiert
   Dabei wird ein kartesisches Koordinatensystem genutzt




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


Konstruktion von Objekten (Forts.)
    Zur Festlegung eines solchen Eckpunktes (engl. Vertex“) steht der
                                                  ”
    folgende Befehl zur Verf¨gung:
                            u
    void glVertex3f(float x, float y, float z)

Beispiel
    Ein durch     glVertex3f(50.0f, 50.0f, 0.0f)     festgelegter Eckpunkt




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


Konstruktion von Objekten (Forts.)
   Primitive k¨nnen mit Hilfe eines glBegin/glEnd-Paares gezeichnet
              o
   werden
   Dabei bestimmt der Parameter der glBegin-Methode die zu
   zeichnenden Primitive:
          GL.GL_POINTS
          GL.GL_LINES
          GL.GL_LINE_STRIP
          ...
   In dem glBegin/glEnd-Paar werden die Eckpunkte der zu
   zeichnenden Primitive eingeschlossen




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

                    ¨
OpenGL Primitive im Uberblick




   Johannes Diemke      OpenGL mit Java   WiSe 2010 / 2011   8/10
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
Literatur


 Dave Shreiner
 OpenGL Programming Guide
 http://www.opengl-redbook.com/
 Richard S. Wright, Benjamin Lipchak und Nicholas Haemel
 OpenGL SuperBibel
 http://www.starstonesoftware.com/OpenGL/
 Randi J. Rost
 OpenGL Shading Language
 http://www.3dshaders.com/
 Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman
                o
 Real-Time Rendering
 http://www.realtimerendering.com/

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

Mais conteúdo relacionado

Destaque

2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-ShadowsJohannes Diemke
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-MaterialJohannes Diemke
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernJohannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-EinfuehrungJohannes Diemke
 

Destaque (6)

Polymorphie
PolymorphiePolymorphie
Polymorphie
 
2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
 
Prozedurale Texturen
Prozedurale TexturenProzedurale Texturen
Prozedurale Texturen
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 

Mais de Johannes Diemke

2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-ShadingJohannes Diemke
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJJohannes Diemke
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-MappingJohannes Diemke
 
2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-KnotenJohannes Diemke
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Johannes Diemke
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Johannes Diemke
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumJohannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Johannes Diemke
 

Mais de Johannes Diemke (16)

2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping
 
2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
 

2010-JOGL-03-OpenGL-Crash-Course

  • 1. CARL VON OSSIETZKY OpenGL Crash Course Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  • 2. OpenGL Crash Course Namenskonventionen f¨r Funktionen u Die meisten OpenGL Befehle folgen der folgenden Namenskonvention: Weitere Beispiele: void glColor3i(int red, int green, int blue) void glColor3f(float red, float green, float blue) void glColor3d(double red, double green, double blue) 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
  • 3. OpenGL Crash Course Der OpenGL Zustandsautomat Die Art und Weise wie Objekte gezeichnet werden h¨ngt von vielen a Parametern ab: Ist eine Lichtquelle vorhanden? Wie sind die Materialeigenschaften? Soll eine Textur genutzt werden? ... In OpenGL werden solche Variablen als Zustandsautomat realisiert Wird eine Zustandsvariable einmal gesetzt, so beh¨lt Sie ihren Wert a bis sie einen neuen Wert zugewiesen bekommt Viele der Zustandsvariablen k¨nnen lediglich an- und ausgeschaltet o werden Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/10
  • 4. OpenGL Crash Course Der OpenGL Zustandsautomat (Forts.) Um Zustandsvariablen an- und auszuschalten k¨nnen die folgenden o Methoden genutzt werden: public void glEnable(int cap) public void glDisable(int cap) M¨gliche Parameter sind bspw.: o GL.GL_LIGHTING GL.GL_CULL_FACE GL.GL_BLEND GL.GL_ALPHA_TEST ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/10
  • 5. OpenGL Crash Course Konstruktion von Objekten Sollen komplexere Objekte dargestellt werden, so werden diese aus mehreren kleinen Formen, sogenannten Primitven, zusammengesetzt Primitive sind ein- oder zwei dimensionale Einheiten wie: Punkte Linien Polygone ... Primitive werden durch die Angabe der Raumkoordinaten ihrer Eckpunkte im dreidimensionalen Raum definiert Dabei wird ein kartesisches Koordinatensystem genutzt Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/10
  • 6. OpenGL Crash Course Konstruktion von Objekten (Forts.) Zur Festlegung eines solchen Eckpunktes (engl. Vertex“) steht der ” folgende Befehl zur Verf¨gung: u void glVertex3f(float x, float y, float z) Beispiel Ein durch glVertex3f(50.0f, 50.0f, 0.0f) festgelegter Eckpunkt Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/10
  • 7. OpenGL Crash Course Konstruktion von Objekten (Forts.) Primitive k¨nnen mit Hilfe eines glBegin/glEnd-Paares gezeichnet o werden Dabei bestimmt der Parameter der glBegin-Methode die zu zeichnenden Primitive: GL.GL_POINTS GL.GL_LINES GL.GL_LINE_STRIP ... In dem glBegin/glEnd-Paar werden die Eckpunkte der zu zeichnenden Primitive eingeschlossen Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/10
  • 8. OpenGL Crash Course ¨ OpenGL Primitive im Uberblick Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/10
  • 9. 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
  • 10. Literatur Dave Shreiner OpenGL Programming Guide http://www.opengl-redbook.com/ Richard S. Wright, Benjamin Lipchak und Nicholas Haemel OpenGL SuperBibel http://www.starstonesoftware.com/OpenGL/ Randi J. Rost OpenGL Shading Language http://www.3dshaders.com/ Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman o Real-Time Rendering http://www.realtimerendering.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/10