gl.VertexPointer(vertexArray[, size])
gl.VertexPointer()
gibt ein Feld von Vertex-Koordinaten an, die beim Rendern
verwendet werden sollen. vertexArray
kann entweder eine eindimensionale
Tabelle sein, die aus einer beliebigen Anzahl von aufeinanderfolgenden
Knotenkoordinaten besteht, oder eine zweidimensionale Tabelle, die aus
einer beliebigen Anzahl von Untertabellen besteht, die jeweils 2 bis 4
Texturkoordinaten enthalten. Wenn vertexArray
eine eindimensionale Tabelle
ist, müssen Sie auch das optionale Argument size
übergeben, um die Anzahl
der Knotenkoordinaten pro Feld-Element zu definieren. Wenn vertexArray
eine zweidimensionale Tabelle ist, wird size
automatisch durch die Anzahl der
Elemente in der ersten Untertabelle bestimmt, die ebenfalls im Bereich
von 2 bis 4 liegen müssen.
Bei der Verwendung einer zweidimensionalen Tabelle ist zu beachten, dass die Anzahl der Knotenkoordinaten in jeder Untertabelle konstant sein muss. Es ist nicht erlaubt, in den einzelnen Untertabellen eine unterschiedliche Anzahl von Knotenkoordinaten zu verwenden. Die Anzahl der Knotenkoordinaten wird durch die Anzahl der Elemente in der ersten Untertabelle definiert und alle folgenden Untertabellen müssen die gleiche Anzahl von Koordinaten verwenden.
Wenn Sie Nil
in vertexArray
übergeben, wird der Inhalt des Vertex-Koordinaten-Feld-Puffer
gelöscht, aber er wird nicht aus OpenGL entfernt. Dies muss manuell
erfolgen, z.B. durch Deaktivieren des Vertex-Koordinaten-Feldes oder
durch Definieren eines neuen.
Um ein Vertex-Feld zu aktivieren und zu deaktivieren, rufen Sie den Befehl
gl.EnableClientState() und
gl.DisableClientState() mit dem Argument
#GL_VERTEX_ARRAY
auf. Wenn aktiviert, wird Vertex-Array verwendet, wenn
gl.DrawArrays(), gl.DrawElements()
oder gl.ArrayElement() aufgerufen wird.
Das Vertex-Feld ist zunächst deaktiviert und wird nicht aufgerufen, wenn gl.DrawArrays(), gl.DrawElements() oder gl.ArrayElement() aufgerufen wird.
Die Ausführung von gl.VertexPointer()
ist zwischen der Ausführung von
gl.Begin() und gl.End() nicht erlaubt.
Dabei kann ein Fehler auftreten oder auch nicht. Wenn kein Fehler erzeugt
wird, ist der Vorgang undefiniert.
gl.VertexPointer()
wird typischerweise auf der Klient-Seite implementiert.
Vertex-Feld-Parameter sind klient-seitige Zustände und werden daher nicht durch gl.PushAttrib() und gl.PopAttrib() gespeichert oder wiederhergestellt. Benutzen Sie stattdessen gl.PushClientAttrib() und gl.PopClientAttrib().
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
Nil
(siehe oben)#GL_INVALID_VALUE
wird erzeugt, wenn size
nicht 2, 3, oder 4 ist.
#GL_VERTEX_ARRAY
gl.Get() mit dem Argument #GL_VERTEX_ARRAY_SIZE
gl.Get() mit dem Argument #GL_VERTEX_ARRAY_TYPE
gl.Get() mit dem Argument #GL_VERTEX_ARRAY_STRIDE
gl.GetPointer() mit dem Argument #GL_VERTEX_ARRAY_POINTER