OpenGL Befehlssyntax

Wie Sie anhand des einfachen Beispiel-Programms im vorherigen Abschnitt erkennen können, benutzen die OpenGL Befehle das Prefix gl und große Anfangsbuchstaben für jedes Wort, das sich zu einem Befehl zusammensetzt (z.B.: glClearColor()). Ähnlich beginnen OpenGL definierte Konstanten mit GL_, benutzen nur Großbuchstaben und trennen Wörter mit einem Unterstrich (GL_COLOR_BUFFER_BIT).

Ihnen ist vielleicht auch aufgefallen, das manchen Befehlen anscheinend nicht zugehörige Buchstaben und Ziffern hinzugefügt wurden (z.B.: glColor3f()). Es trifft zu, das der Color Anteil am Befehl ausreichend ist, um diesen Befehl als einen, der die aktuelle Farbe festlegt, zu definieren. Jedoch, wurde mehr als einer dieser Befehle definiert damit Sie verschiedene Argument- bzw. Datentypen benutzen können.

Anzahl von Argumenten

Im speziellen deutet der 3 Anteil des Suffix darauf hin, daß drei Argumente übergeben werden; eine andere Version des Color Befehls erwartet vier Argumente.

Datentypen

Der f Anteil des Suffix weist darauf hin, daß die Argumente Fließkommazahlen sind. Das Vorhandensein verschiedener Formate erlaubt OpenGL die Daten im Benutzereigenen Datenformat anzunehmen.

Manche OpenGL Befehle akzeptieren nicht weniger als 8 verschiedene Datentypen als ihre Argumente. Die Buchstaben die als Suffix benutzt werden, um diese Datentypen für ANSI C Implementierungen von OpenGL zu spezifizierten, sind in folgender Tabelle dargestellt. Die jeweilige Implementierung von OpenGL die Sie benutzen, befolgt dieses Schema vielleicht nicht genau; eine Implementierung in C++ oder Ada, zum Beispiel, hätte keine Notwendigkeit.

Tabelle 18-1. OpenGL Datentypen

Suffix Datentyp Entsprechender C-Typ OpenGL Typ Definition
b 8 Bit Ganzzahl signed char GLbyte
s 16 Bit Ganzzahl short GLshort
i 32 Bit Ganzzahl int oder long GLint, GLsizei
f 32 Bit Fließkomma float GLfloat, GLclampf
d 64 Bit Fließkomma double GLdouble, GLclampd
ub 8 Bit Ganzzahl vorzeichenlos unsigned char GLubyte, GLboolean
us 16 Bit Ganzzahl vorzeichenlos unsigned short GLushort
ui 32 Bit Ganzzahl vorzeichenlos unsigned int oder long GLuint, GLenum, GLbitfield

Folglich, sind die zwei Befehle

glVertex2i (1, 2);
glVertex2f (1.0, 2.0);

äquivalent, außer das der erste die Eckpunktkoordinaten als 32-Bit Integer spezifiziert, und der zweite sie als Fließkommazahlen mit einfacher Genauigkeit festlegt.

Formate

Manche OpenGL Befehle können einen abschließenden Buchstaben v annehmen, der anzeigt, daß der Befehl vielmehr einen Zeiger auf einen Vektor (oder Array) von Werten als eine Folge von einzelnen Argumenten annimmt. Viele Befehlen haben sowohl eine Vektor wie auch eine Nicht-Vektor Version, aber einige Befehlen nehmen nur einzelne Argumente an und andere erfordern, daß wenigstens einige der Argumente als Vektor spezifiziert sind. Die folgenden Zeile zeigen Ihnen wie Sie möglicherweise eine Vektor und eine Nicht-Vektor Version des Befehls verwenden, der die aktuelle Farbe festlegt:

glColor3f (1.0, 0.0, 0.0);
GLfloat color_array[] = {1.0, 0.0, 0.0};
glColor3fv (color_array);

Schließlich definiert OpenGL den GLvoid Typ. Dieser wird am meisten für OpenGL Befehle benutzt, die Zeiger auf Arrays von Werten akzeptieren.