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, müssen für alle sinnvollen Parameterdatentypen unterschiedliche Prozedurnamen vorhanden sein. Zum Beispiel erzeugt jeder der beiden Befehle
glVertex2i(5,3); glVertex2f(5.0, 3.0);einen zweidimensionalen Punkt mit x-Koordinate 5 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);Elementare geometrischen Figuren (wie z.B. Linien, Dreiecke, Vierecke, Polygone, etc.) werden mittels glVertex* durch eine Folge von Punkten definiert, welche durch zwei Kommandos geklammert wird:
glBegin(MODUS); ... glEnd();Hierbei ist MODUS eine der folgenden vordefinierten OpenGl-Konstanten:
GL_POINTS | Punkte |
GL_LINES | Gradenstücke |
GL_LINE_STRIP | Linienzug |
GL_LINE_LOOP | geschlossener Linienzug |
GL_TRIANGLES | Dreiecke |
GL_TRIANGLE_STRIP | Streifen von Dreiecken |
GL_TRIANGLE_FAN | Fächer von Dreiecken |
GL_QUADS | Vierecke |
GL_QUAD_STRIP | Streifen von Vierecken |
GL_POLYGON | konvexes (!) Polygon |
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 und 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);