3.2 Zugriff auf OpenGL aus Hollywood heraus

GL Galore fügt alle OpenGL-Funktionen direkt in Hollywood ein, wobei die ursprüngliche Syntax kaum oder gar nicht geändert wird. Nach dem Aufruf von GL Galore mit @REQUIRE werden alle GL-Befehle innerhalb einer "gl"-Tabelle und die GLU-Befehle werden in einer "glu"-Tabelle verfügbar gemacht.

Das Aufrufen von OpenGL-Befehle aus Hollywood ist viel einfacher als die direkte Verwendung von OpenGL, da die Argumentsdefinition (z.B.,'2d','3f','4sv') am Ende der meisten OpenGL-Befehlsnamen entfernt wurde. Zum Beispiel bindet der GL Galore-Befehl gl.Light() die OpenGL-Befehle: glLightf, glLightfv, glLighti, glLightiv. Die Anzahl der an gl.Light() übergebenen Parameter definiert den richtig zu verwendenden Befehl.

GL Galore verwendet normalerweise die Gleitkomma-Versionen aller OpenGL-Befehle mit der höchstmöglichen Genauigkeit. Einige Befehle, die einen Typparameter haben, verwenden einfach das höchstmögliche (normalerweise #GL_DOUBLE oder #GL_FLOAT) und der Format-Parameter wird nicht verwendet. Wenn stride nicht verwendet wird, wird 0 angenommen.

Die Farbe und die Vektordaten können als Hollywood-Tabelle oder als mehrere Parameter übergeben werden. Ein Vektor kann 2, 3 oder 4 Werte (x, y, z, w) und Farben können 3 oder 4 Werte haben (rot, grün, blau, alpha).

Beispielsweise:

 
v1 = {0, 0}
v2 = {1, 1}
yellow = {1, 1, 0}
gl.Color(yellow)
gl.Vertex(v1)
gl.Vertex(v2)

Oder Sie können auch dies tun:

 
gl.Color(1, 1, 0)
gl.Vertex(0, 0)
gl.Vertex(1, 1)

Es gibt einige OpenGL-Befehle, die einen Zeiger erwarten. In diesem Fall bietet GL Galore normalerweise auch eine Variante des Befehls an, womit er auch mit Hollywood-Tabellen funktioniert. Die ursprüngliche Zeigervariante ist jedoch auch in GL Galore verfügbar und kann für zeitkritische Skripte verwendet werden. Zum Beispiel liest gl.ReadPixels() Pixeldaten aus dem Bildspeicher in eine Hollywood-Tabelle, während gl.ReadPixelsRaw() Pixeldaten direkt in einen Speicherpuffer liest, was natürlich sehr viel schneller ist, aber Sie müssen dann mit Zeigern arbeiten. Siehe Mit Zeigern arbeiten für Details.


Navigation zeigen