glTexCoordPointer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Hintergrundwissen: VBO ohne glInterleavedArrays hinzugefügt)
 
(10 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glTexCoordPointer =
 
= glTexCoordPointer =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glTexCoordPointer''' - Definiert ein Array mit Texturkoordinaten
 
'''glTexCoordPointer''' - Definiert ein Array mit Texturkoordinaten
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  procedure '''glTexCoordPointer'''(''size'' : GLint; ''type'' : GLenum; ''stride'' : GLsizei ;<br> '''const''' ''_pointer'' : GLvoid)
+
  procedure '''glTexCoordPointer'''(''size'' : GLint; ''type'' : GLenum; ''stride'' : GLsizei; '''const''' ''_pointer'' : GLvoid)
 
<br>
 
<br>
  
Zeile 20: Zeile 22:
 
|-
 
|-
 
! ''stride''
 
! ''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.
+
| 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''
 
! ''_pointer''
Zeile 26: Zeile 28:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== 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 jedem Array-Element zum Nächsten an, was es ermöglicht, Vertizes und Attribute entweder in einem Array oder mehreren Arrays zu speichern. (Speicherung ein einziges 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.<br>
+
'''glTexCoordPointer''' legt den Ort und das Datenformat eines Arrays mit Texturkoordinaten fest, die beim Rendern verwendet werden.  
<br>
+
 
Um das Texturkoordinaten-Array zu de- bzw. aktivieren, ruft man [[glEnableClientState]] und [[glDisableClientState]] mit den Argument '''GL_TEXTURE_COORD_ARRAY''' auf. Falls aktiviert, wird auf das Texturkoordinaten-Array mit dem Aufruf von [[glDrawArrays]], [[glDrawElements]] oder [[glArrayElement]] aufgerufen.<br>
+
''size'' gibt die Anzahl der Koordinaten pro Element an und muss 1, 2, 3 oder 4 sein.  
<br>
+
 
Man kann [[glDrawArrays]] dazu benutzen, eine Sequenz von Polygonen eines Typs (also Triangles, Quads, etc.) aus vordefinierten Vertex- und Vertexattributenarrys zu erzeugen. [[glDrawElement]] wird benutzt, um Polygone durch Anlegen von Vertices und Vertex-Attributen zu erzeugen und [[glDrawElements]], um eine Reihe von Polygonen durch Anlegen von Vertices und Vertex-Attributen zu erzeugen.
+
''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 die Operation ohne Ergbnis.<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 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>
<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>
<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!)
 +
 
  
'''GL_INVALID_OPERATION''' '''könnte''' generiert werden, wenn glTexCoordPointer innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. (Siehe dazu die Hinweise!)
 
  
<br>
 
  
 
==  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#GL_TEXTURE_COORD_ARRAY_SIZE|GL_TEXTURE_COORD_ARRAY_SIZE]]<br>
+
[[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

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