gl.InterleavedArrays(format, stride, data)
gl.InterleavedArrays()
ermöglicht es Ihnen, individuelle Farb-, Normal-,
Textur- und Scheitelpunkt-Felder anzugeben und zu aktivieren, deren Elemente Teil
eines größeren Aggregat-Feld-Element hat. Bei einigen Implementierungen
ist dies effizienter als die separate Angabe der Felder.
data
muss ein Zeiger auf einen Rohdatenspeicher sein, der von dem
Hollywood-Befehl AllocMem()
zugewiesen wird und die relevanten Felddaten
enthält. Verwenden Sie den Hollywood-Befehl GetMemPointer()
, um die
Rohzeiger-Adresse von Speicherblöcken zu erhalten, die von AllocMem()
zugewiesen wurden. Siehe Mit Zeigern arbeiten für Details zur Verwendung von Speicherzeigern mit Hollywood.
Wenn stride
gleich 0 ist, werden die Aggregatelemente nacheinander
gespeichert. Andernfalls treten stride
Bytes zwischen dem Anfang eines
Aggregat-Feld-Elements und dem Anfang des nächsten
Aggregat-Feld-Elements auf.
format
dient als Schlüssel, der die Extraktion einzelner Felder aus dem
Aggregat-Feld beschreibt. Wenn format
ein T enthält, dann werden
Texturkoordinaten aus dem verschachtelten Feld extrahiert. Wenn ein C vorhanden
ist, werden Farbwerte extrahiert. Wenn ein N vorhanden ist, werden normale
Koordinaten extrahiert. Scheitelpunkt-Koordinaten werden immer extrahiert. Die
Ziffern 2, 3 und 4 geben an, wie viele Werte extrahiert werden. F zeigt
an, dass Werte als Fließkommazahlen extrahiert werden. Farben können auch
als 4 unsignierte Bytes extrahiert werden, wenn 4UB dem C folgt. Wenn eine
Farbe als 4 unsignierte Bytes extrahiert wird, befindet sich das nachfolgende
Scheitelpunkt-Feld-Element an der ersten möglichen Fließkomma-Adresse. Die folgenden
symbolischen Konstanten werden für format
erkannt:
#GL_V2F #GL_V3F #GL_C4UB_V2F #GL_C4UB_V3F #GL_C3F_V3F #GL_N3F_V3F #GL_C4F_N3F_V3F #GL_T2F_V3F #GL_T4F_V4F #GL_T2F_C4UB_V3F #GL_T2F_C3F_V3F #GL_T2F_N3F_V3F #GL_T2F_C4F_N3F_V3F #GL_T4F_C4F_N3F_V4F |
Wenn gl.InterleavedArrays()
beim kompilieren einer Display-Liste aufgerufen
wird, wird sie nicht in die Liste kompiliert, sondern sofort ausgeführt.
Die Ausführung von gl.InterleavedArrays()
ist zwischen gl.Begin()
und gl.End() nicht erlaubt. Es kann ein Fehler auftreten oder aber
auch nicht. Wenn kein Fehler erzeugt wird, ist der Vorgang undefiniert.
gl.InterleavedArrays()
wird typischerweise auf der Klient-Seite implementiert.
Scheitelpunkt-Feld-Parameter sind klientseitig und werden daher nicht durch gl.PushAttrib() und gl.PopAttrib() gespeichert oder wiederhergestellt. Verwenden Sie stattdessen gl.PushClientAttrib() und gl.PopClientAttrib().
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_INVALID_ENUM
wird erzeugt, wenn format
kein akzeptierter Wert ist.