glNormalPointer: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (GlNormalPointer wurde nach glNormalPointer verschoben) |
K (→Beschreibung: WäHrend) |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glNormalPointer = | = glNormalPointer = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
'''glNormalPointer''' - Spezifiziert ein Feld mit [[Normalen]]. | '''glNormalPointer''' - Spezifiziert ein Feld mit [[Normalen]]. | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''glNormalPointer'''(''_type'': TGLenum; ''stride'': TGLsizei; const ''_pointer'': PGLvoid); | procedure '''glNormalPointer'''(''_type'': TGLenum; ''stride'': TGLsizei; const ''_pointer'': PGLvoid); | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 27: | Zeile 30: | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | '''glNormalPointer''' beschreibt Ort und Datenformat eines Feldes welches Pointer enthält und | + | '''glNormalPointer''' beschreibt Ort und Datenformat eines Feldes welches Pointer enthält und während des Renderns benutzt werden soll. |
''_type'' bestimmt den Datentyp der einzelnen Koordinaten einer Normale. | ''_type'' bestimmt den Datentyp der einzelnen Koordinaten einer Normale. | ||
Zeile 44: | Zeile 48: | ||
Benutzen sie [[glDrawArrays]] wenn sie eine Sequenz von [[Primitive]]n (alle vom selben Typ) aus vordefinierten Vertex- und Vertexattributfeldern erstellen wollen. | 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. | 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 == | == Hinweise == | ||
Zeile 60: | Zeile 61: | ||
− | + | ||
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
'''GL_INVALID_ENUM''' wird generiert wenn ''_type'' ein ungültiger Wert übergeben wurde.<br> | '''GL_INVALID_ENUM''' wird generiert wenn ''_type'' ein ungültiger Wert übergeben wurde.<br> | ||
'''GL_INVALID_VALUE''' wird generiert wenn ''stride'' ein negativer Wert übergeben wurde.<br> | '''GL_INVALID_VALUE''' wird generiert wenn ''stride'' ein negativer Wert übergeben wurde.<br> | ||
− | + | ||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
Zeile 74: | Zeile 77: | ||
− | + | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
+ | |||
+ | Hintergrundwissen: [[VBO ohne glInterleavedArrays]] | ||
+ | |||
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glIndexPointer]], [[glInterleavedArrays]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoordPointer]], [[glVertexPointer]] | [[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glIndexPointer]], [[glInterleavedArrays]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoordPointer]], [[glVertexPointer]] | ||
[[Kategorie:GL|NormalPointer]] | [[Kategorie:GL|NormalPointer]] |
Aktuelle Version vom 18. März 2012, 16:46 Uhr
Inhaltsverzeichnis
glNormalPointer
Name
glNormalPointer - Spezifiziert ein Feld mit Normalen.
Delphi-Spezifikation
procedure glNormalPointer(_type: TGLenum; stride: TGLsizei; const _pointer: PGLvoid);
Parameter
_type | Bestimmt den Datentyp aller Koordinaten im Feld. Folgende symbolische Konstanten sind erlaubt: GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, sowie GL_DOUBLE |
---|---|
stride | Beschreibt den Byteabstand (Versatz/Offset) zwischen zwei aufeinanderfolgenden Normalen. Ist stride gleich 0 heißt dies, die Normalen sind eng aneinander gepackt im Feld gespeichert. |
_pointer | Ist ein Zeiger, der auf die erste Koordinate der ersten Normale im Feld zeigt. |
Beschreibung
glNormalPointer beschreibt Ort und Datenformat eines Feldes welches Pointer enthält und während des Renderns benutzt werden soll.
_type bestimmt den Datentyp der einzelnen Koordinaten einer Normale.
stride beschreibt den Byteabstand zwischen zwei aufeinanderfolgenden Normalen. Dies erlaubt es Vertices und Normalen zusammen innerhalb eines Feldes oder getrennt in verschiedenen Feldern zu speichern. (Das speichern innerhalb eines Feldes kann bei einigen Implementationen effizienter sein; siehe glInterleavedArrays)
Wird ein Normalenfeld erstellt, werden _type, stride und _pointer clientseitig gespeichert.
Um das Normalenfeld zu aktivieren bzw. deaktivieren rufen sie glEnableClientState bzw. glDisableClientState mit dem Parameter GL_NORMAL_ARRAY auf. Wenn das Feld aktiviert ist, wird es bei Aufrufen von glArrayElement, glDrawElements, oder glDrawArrays benutzt.
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
glNormalPointer ist erst ab OpenGl 1.1 verfügbar.
Das Normalenfeld ist standardmäßig deaktiviert und wird bei Aufrufen von glArrayElement, glDrawElements, or glDrawArrays nicht benutzt.
Das Ausführen von glNormalPointer innerhalb eines glBegin-glEnd blocks ist nicht erlaubt. Trotzdem kann nicht garantiert werden, dass ein Fehler ausgelöst wird. Wird kein Fehler generiert, ist das Ergebnis des Aufrufs undefiniert.
glNormalPointer ist normalerweise Clientseitig implementiert. (siehe OpenGL Eigenschaften)
Da die Eigenschaften der Normalenfeldes clientseitig gespeichert werden, kann glPushAttrib und glPopAttrib nicht zum speichern bzw. laden dieser Eigenschaften verwendet werden. Benutzen Sie statt dessen glPushClientAttrib bzw. glPopClientAttrib.
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn _type ein ungültiger Wert übergeben wurde.
GL_INVALID_VALUE wird generiert wenn stride ein negativer Wert übergeben wurde.
Zugehörige Wertrückgaben
glIsEnabled mit Token GL_NORMAL_ARRAY
glGet mit Token GL_NORMAL_ARRAY_TYPE
glGet mit Token GL_NORMAL_ARRAY_STRIDE
glGetPointerv mit Token GL_NORMAL_ARRAY_POINTER
Siehe auch
Hintergrundwissen: VBO ohne glInterleavedArrays
glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnable, glGetPointerv, glIndexPointer, glInterleavedArrays, glPopClientAttrib, glPushClientAttrib, glTexCoordPointer, glVertexPointer