glTexCoordPointer: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Parameter) |
K (Hintergrundwissen: VBO ohne glInterleavedArrays hinzugefügt) |
||
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glTexCoordPointer = | = glTexCoordPointer = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
'''glTexCoordPointer''' - Definiert ein Array mit Texturkoordinaten | '''glTexCoordPointer''' - Definiert ein Array mit Texturkoordinaten | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glTexCoordPointer'''(''size'' : GLint; ''type'' : GLenum; ''stride'' : GLsizei ; | + | procedure '''glTexCoordPointer'''(''size'' : GLint; ''type'' : GLenum; ''stride'' : GLsizei; '''const''' ''_pointer'' : GLvoid) |
<br> | <br> | ||
Zeile 26: | Zeile 28: | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | glTexCoordPointer legt den Ort und das Datenformat eines Arrays mit Texturkoordinaten fest, die beim Rendern verwendet werden. ''size'' gibt die Anzahl der Koordinaten pro Element an und muss 1, 2, 3 oder 4 sein. ''type'' gibt den Datentyp der Texturkoordinaten und ''stride'' den Byte-Abstand von | + | '''glTexCoordPointer''' legt den Ort und das Datenformat eines Arrays mit Texturkoordinaten fest, die beim Rendern verwendet werden. |
− | + | ||
− | Um das Texturkoordinaten-Array zu | + | ''size'' gibt die Anzahl der Koordinaten pro Element an und muss 1, 2, 3 oder 4 sein. |
− | + | ||
− | + | ''type'' gibt den Datentyp der Texturkoordinaten und ''stride'' den Byte-Abstand von einem Array-Element zum nachfolgenden an. Dies ermöglicht es, Vertexdaten und Vertexattribute entweder zusammen in einem Array oder verteilt auf mehreren Arrays zu speichern. (Speicherung in einem Array dürfte in einigen Anwendungen effizienter sein, siehe [[glInterleavedArrays]].) | |
+ | |||
+ | Wenn ein Texturkoordinaten-Array erzeugt wird, werden ''size'', ''type'', ''stride'' und ''_pointer'' client-seitig gespeichert. | ||
+ | |||
+ | |||
+ | Um das Texturkoordinaten-Array zu deaktivieren bzw. aktivieren, ruft man [[glEnableClientState]] und [[glDisableClientState]] mit den Argument '''GL_TEXTURE_COORD_ARRAY''' auf. Falls aktiviert, wird auf das Texturkoordinaten-Array bei Aufrufen von [[glDrawArrays]], [[glDrawElements]] oder [[glArrayElement]] zugegriffen. | ||
+ | |||
+ | |||
+ | Benutzen sie [[glDrawArrays]] wenn sie eine Sequenz von [[Primitive]]n (alle vom selben Typ) aus vordefinierten Vertex- und Vertexattributfeldern erstellen wollen. | ||
+ | Benutzen sie [[glArrayElement]] um Primitive durch Indexierung von Vertex- und Vertexattributfeldern zu erstellen und benutzen sie [[glDrawElements]] um eine Folge von Primitiven (des selben Typs) durch Indexierung von Vertex- und Vertexattributfeldern zu erstellen. | ||
<br> | <br> | ||
+ | |||
== Hinweise == | == Hinweise == | ||
'''glTexCoordPointer''' ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.<br> | '''glTexCoordPointer''' ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.<br> | ||
Zeile 40: | Zeile 53: | ||
Das Texturkoordinaten-Array ist standardmäßig '''deaktiviert''' und wird beim Aufruf von [[glArrayElement]], [[glDrawElements]] oder [[glDrawArrays]] '''nicht''' angesteuert.<br> | Das Texturkoordinaten-Array ist standardmäßig '''deaktiviert''' und wird beim Aufruf von [[glArrayElement]], [[glDrawElements]] oder [[glDrawArrays]] '''nicht''' angesteuert.<br> | ||
<br> | <br> | ||
− | Der Aufruf von '''glTexCoordPointer''' zwischen einem [[glBegin]]-[[glEnd]] nicht zulässig, ein Fehler kann generiert werden oder auch nicht. Wenn kein Fehler generiert wird, ist | + | Der Aufruf von '''glTexCoordPointer''' zwischen einem [[glBegin]]-[[glEnd]] nicht zulässig, ein Fehler kann generiert werden oder auch nicht. Wenn kein Fehler generiert wird, ist das Ergbnis der Funktion undefiniert.<br> |
<br> | <br> | ||
'''glTexCoordPointer''' is normalerweise auf Client-Seite ohne Protokoll implementiert.<br> | '''glTexCoordPointer''' is normalerweise auf Client-Seite ohne Protokoll implementiert.<br> | ||
Zeile 46: | Zeile 59: | ||
Die Parameter der Texturkoordinaten-Arrays werden Client-Seitig gespeichert und werden deswegen bei einem Aufruf von [[glPushAttrib]] bzw. [[glPopAttrib]] nicht gespeichert bzw. wiederhergestellt. Man benutze stattdessen [[glPushClientAttrib]] und [[glPopClientAttrib]]. | Die Parameter der Texturkoordinaten-Arrays werden Client-Seitig gespeichert und werden deswegen bei einem Aufruf von [[glPushAttrib]] bzw. [[glPopAttrib]] nicht gespeichert bzw. wiederhergestellt. Man benutze stattdessen [[glPushClientAttrib]] und [[glPopClientAttrib]]. | ||
<br> | <br> | ||
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
'''GL_INVALID_VALUE''' wird generiert, wenn ''size'' nicht 1, 2, 3 oder 4 ist.<br> | '''GL_INVALID_VALUE''' wird generiert, wenn ''size'' nicht 1, 2, 3 oder 4 ist.<br> | ||
− | |||
'''GL_INVALID_ENUM''' wird generiert, wenn ''type'' keinen zulässigen Wert hat.<br> | '''GL_INVALID_ENUM''' wird generiert, wenn ''type'' keinen zulässigen Wert hat.<br> | ||
− | + | '''GL_INVALID_VALUE''' wird generiert, wenn ''stride'' negativ ist.<br> | |
− | '''GL_INVALID_VALUE''' wird generiert, wenn ''stride'' negativ ist. | + | '''GL_INVALID_OPERATION''' '''könnte''' generiert werden, wenn '''glTexCoordPointer''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. (Siehe dazu die Hinweise!) |
+ | |||
− | |||
− | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
Zeile 61: | Zeile 73: | ||
[[glGet]] mit Token [[glGet#GL_TEXTURE_COORD_ARRAY_SIZE|GL_TEXTURE_COORD_ARRAY_SIZE]]<br> | [[glGet]] mit Token [[glGet#GL_TEXTURE_COORD_ARRAY_SIZE|GL_TEXTURE_COORD_ARRAY_SIZE]]<br> | ||
[[glGet]] mit Token [[glGet#GL_TEXTURE_COORD_ARRAY_TYPE|GL_TEXTURE_COORD_ARRAY_TYPE]]<br> | [[glGet]] mit Token [[glGet#GL_TEXTURE_COORD_ARRAY_TYPE|GL_TEXTURE_COORD_ARRAY_TYPE]]<br> | ||
− | [[glGet]] mit Token [[glGet# | + | [[glGet]] mit Token [[glGet#GL_TEXTURE_COORD_ARRAY_STRIDE|GL_TEXTURE_COORD_ARRAY_STRIDE]]<br> |
[[glGetPointerv]] mit Argument '''GL_TEXTURE_COORD_ARRAY_POINTER''' | [[glGetPointerv]] mit Argument '''GL_TEXTURE_COORD_ARRAY_POINTER''' | ||
<br> | <br> | ||
== Siehe auch == | == Siehe auch == | ||
+ | |||
+ | Hintergrundwissen: [[VBO ohne glInterleavedArrays]] | ||
+ | |||
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glIndexPointer]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoord]], [[glVertexPointer]] | [[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glIndexPointer]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoord]], [[glVertexPointer]] | ||
<br> | <br> | ||
[[Kategorie:GL|TexCoordPointer]] | [[Kategorie:GL|TexCoordPointer]] |
Aktuelle Version vom 19. Mai 2010, 10:48 Uhr
Inhaltsverzeichnis
glTexCoordPointer
Name
glTexCoordPointer - Definiert ein Array mit Texturkoordinaten
Delphi-Spezifikation
procedure glTexCoordPointer(size : GLint; type : GLenum; stride : GLsizei; const _pointer : GLvoid)
Parameter
size | Gibt die Anzahl der Koordinaten pro Array-Element an. Muss 1, 2, 3 oder 4 sein. Der Standard-Wert ist 4. |
---|---|
type | Gibt den Datentyp der Texturkoordinaten an. Die symbolischen Konstanten GL_FLOAT, GL_INT, GL_SHORT und GL_DOUBLE sind zulässig. Der Standard-Wert ist GL_FLOAT. |
stride | Gibt den Byte-Abstand (byte-offset) zwischen aufeinander folgenden Array-Elementen an. Ist stride 0, liegen die Bytes direkt hntereinander. Der Standard-Wert ist 0. |
_pointer | Gibt den Pointer zur ersten Koordinate im ersten Element des Arrays an. |
Beschreibung
glTexCoordPointer legt den Ort und das Datenformat eines Arrays mit Texturkoordinaten fest, die beim Rendern verwendet werden.
size gibt die Anzahl der Koordinaten pro Element an und muss 1, 2, 3 oder 4 sein.
type gibt den Datentyp der Texturkoordinaten und stride den Byte-Abstand von einem Array-Element zum nachfolgenden an. Dies ermöglicht es, Vertexdaten und Vertexattribute entweder zusammen in einem Array oder verteilt auf mehreren Arrays zu speichern. (Speicherung in einem Array dürfte in einigen Anwendungen effizienter sein, siehe glInterleavedArrays.)
Wenn ein Texturkoordinaten-Array erzeugt wird, werden size, type, stride und _pointer client-seitig gespeichert.
Um das Texturkoordinaten-Array zu deaktivieren bzw. aktivieren, ruft man glEnableClientState und glDisableClientState mit den Argument GL_TEXTURE_COORD_ARRAY auf. Falls aktiviert, wird auf das Texturkoordinaten-Array bei Aufrufen von glDrawArrays, glDrawElements oder glArrayElement zugegriffen.
Benutzen sie glDrawArrays wenn sie eine Sequenz von Primitiven (alle vom selben Typ) aus vordefinierten Vertex- und Vertexattributfeldern erstellen wollen.
Benutzen sie glArrayElement um Primitive durch Indexierung von Vertex- und Vertexattributfeldern zu erstellen und benutzen sie glDrawElements um eine Folge von Primitiven (des selben Typs) durch Indexierung von Vertex- und Vertexattributfeldern zu erstellen.
Hinweise
glTexCoordPointer ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.
Das Texturkoordinaten-Array ist standardmäßig deaktiviert und wird beim Aufruf von glArrayElement, glDrawElements oder glDrawArrays nicht angesteuert.
Der Aufruf von glTexCoordPointer zwischen einem glBegin-glEnd nicht zulässig, ein Fehler kann generiert werden oder auch nicht. Wenn kein Fehler generiert wird, ist das Ergbnis der Funktion undefiniert.
glTexCoordPointer is normalerweise auf Client-Seite ohne Protokoll implementiert.
Die Parameter der Texturkoordinaten-Arrays werden Client-Seitig gespeichert und werden deswegen bei einem Aufruf von glPushAttrib bzw. glPopAttrib nicht gespeichert bzw. wiederhergestellt. Man benutze stattdessen glPushClientAttrib und glPopClientAttrib.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn size nicht 1, 2, 3 oder 4 ist.
GL_INVALID_ENUM wird generiert, wenn type keinen zulässigen Wert hat.
GL_INVALID_VALUE wird generiert, wenn stride negativ ist.
GL_INVALID_OPERATION könnte generiert werden, wenn glTexCoordPointer innerhalb eines glBegin-glEnd Blocks aufgerufen wird. (Siehe dazu die Hinweise!)
Zugehörige Wertrückgaben
glIsEnabled mit Argument GL_TEXTURE_COORD_ARRAY
glGet mit Token GL_TEXTURE_COORD_ARRAY_SIZE
glGet mit Token GL_TEXTURE_COORD_ARRAY_TYPE
glGet mit Token GL_TEXTURE_COORD_ARRAY_STRIDE
glGetPointerv mit Argument GL_TEXTURE_COORD_ARRAY_POINTER
Siehe auch
Hintergrundwissen: VBO ohne glInterleavedArrays
glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnable, glGetPointerv, glIndexPointer, glNormalPointer, glPopClientAttrib, glPushClientAttrib, glTexCoord, glVertexPointer