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 |
Da OpenGl-Kommandos keine Überladung kennen, mussen für alle sinnvollen Parameterdatentypen unterschiedliche Prozedurnamen vorhanden sein.
Zum Beispiel erzeugt jeder der beiden Befehle
einen zweidimensionalen Punkt mit x-Koordinate 1 und y-Koordinate 3.glVertex2i(1,3); glVertex2f(1.0, 3.0);
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
bzw. durch die AnweisungglMatrixMode(GL_PROJECTION);
beziehen sich bis auf weiteres alle Matrix-Operationen auf den Projektions-Stack bzw. auf den Modell-Stack.glMatrixMode(GL_MODEL_VIEW);
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);
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 fr 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