prev up next


23.2 Syntax

Durch Aufruf von Prozeduren manipuliert der Benutzer seine Daten. OpenGl verwendet dabei acht Datentypen. Der in Spalte 1 von Tabelle X.Y genannte Suffix kündigt als letzter Buchstabe eines Kommandos den erwarteten Datentyp an.

Suffix Datentyp C-Korrespondenz OpenGl Name
b 8-bit integer signed char GLbyte
s 16-bit integer short GLshort
i 32-bit integer int GLint
f 32-bit floating point float GLfloat, GLclampf
d 64-bit floating point double GLdouble, GLclampd
ub 8-bit unsigned integer unsigned char GLubyte, GLboolean
us 16-bit unsigned integer unsigned short GLushort
ui 32-bit unsigned integer unsigned int GLuint, GLenum, GLbitfield
Tabelle X.Y: OpenGL Datentypen

Da OpenGl-Kommandos keine Überladung kennen, mussen für alle sinnvollen Parameterdatentypen unterschiedliche Prozedurnamen vorhanden sein.

Zum Beispiel erzeugt jeder der beiden Befehle

glVertex2i(1,3);
glVertex2f(1.0, 3.0);
einen zweidimensionalen Punkt mit x-Koordinate 1 und y-Koordinate 3.

Manche OpenGl-Kommandos enden mit dem Buchstaben v und signalisieren dadurch, daß sie einen Vektor als Übergabeparameter erwarten. Zum Beipiel kann das Setzen eines RGB-Farbwerts durch Angabe von drei Zahlen oder durch Angabe eines drei-elementigen Vektors geschehen:

glColor3f(1.0, 0.8, 0.8);
GLfloat farbvektor[] = {1.0, 0.8, 0.8};
glColor3fv(farbvektor);

Es existieren Stacks von 4 × 4 Matrizen zur Transformation des Modells und zur Transformation der Projektion.

Die Auswahl geschieht durch glMatrixMode(). Durch die Anweisung

glMatrixMode(GL_PROJECTION);
bzw. durch die Anweisung
glMatrixMode(GL_MODEL_VIEW);
beziehen sich bis auf weiteres alle Matrix-Operationen auf den Projektions-Stack bzw. auf den Modell-Stack.

Zum Sichern und späteren Wiederherstellen der aktuellen Transformationsmatrix wird diese durch den Befehl glPushMatrix() kopiert und oben auf den Stack gelegt. Nun kann sie beliebig manipuliert werden. Ihr Originalzustand kann dann später durch glPopMatrix() wiederhergestellt werden.

Multiplikation der obersten Stackmatrix mit einer beliebigen Matrix m geschieht durch Definition der Matrix durch Aufruf der Multiplikation:

 
GLfloat m[][] = {{2.0,0.0,0.0,0.0},
                 {0.0,4.0,0.0,0.0},
                 {0.0,0.0,3.0,0.0},
                 {0.0,0.0,0.0,2.0}};
glMultMatrix(m);

OpenGl-Programm hello.c  

Zeichnet einen Drahtgitter-Würfel unter Verwendung des OpenGl Utility Toolkit. OpenGl-Programm wire-cube.c  

Zeichnet einen Drahtgitter-Würfel unter Verwendung des OpenGl Utility Toolkit. OpenGl-Programm wire-prop-cube.c  

Zeichnet ein rotierendes Rechteck durch Double-Buffering und demonstriert Kontrolle mit der Maus. Double Buffering nicht in GL, sondern in GLUT. OpenGl-Programm double.c  

Polygon muss konvex sein, Liste von Knoten, dann interpretieren display list (Claussen ?) Reshape mit Proportionen Tastenevents, Mausevents Software zum Spiele programmieren ? Lichtquellen 1-8 (Seite 180)

statt solid cube: teapot material Reihenfolge der Transformationen (108)

display, wenn Inhalt neu gezeichnet reshape, wenn Fenstergr÷˜e sich „ndert animation: wie die Zeit beeinflussen ? tesselation (482) Punktliste fr Dreiecke, Polygon texture mapping bezierkurve

hello.c 2D-Beispiel Orthogonal-Projektion zeigt translation, rotation. Reihenfolge rückwärts ! Kein Reshape, daher Verzerrung beim Fensterverändern

wire-cube.c 3D-Beispiel Perspektivische Projektion, kein Reshape

wire-prop-cube.c 3D-Beispiel Perspektivische Projektion Reshape

scene.c Torus, Kegel und Kugel in grau

light.c beleuchteter Teapot;

colormat.c Kugel andert Farbe bei Mausklick


Screenshot von teapot.exe


prev up next