glTexGenfv-Funktion

Steuert die Generierung von Texturkoordinaten.

Syntax

void WINAPI glTexGenfv(
         GLenum  coord,
         GLenum  pname,
   const GLfloat *params
);

Parameter

coord

Eine Texturkoordinate. Muss eine der folgenden Sein: GL_S, GL_T, GL_R oder GL_Q.

pname

Der symbolische Name der Texturkoordinatengenerierungsfunktion.

params

Ein Array von Floats, die die Koeffizienten für die entsprechende Texturgenerierungsfunktion enthält.

GLfloat zPlane[] = { 0.0f, 0.0f, 1.0f, 0.0f };

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Fehlercodes

Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.

Name Bedeutung
GL_INVALID_ENUM
Koord oder pname war kein akzeptierter definierter Wert, oder pname war GL_TEXTURE_GEN_MODE und Params war kein akzeptierter definierter Wert.
GL_INVALID_OPERATION
Die Funktion wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEnd aufgerufen.

Bemerkungen

Die glTexGen-Funktion wählt eine Texturkoordinatengenerierungsfunktion aus oder liefert Koeffizienten für eine der Funktionen. Der Koordparameter benannt eine der Texturkoordinaten (s,t,r,q), und es muss eines der folgenden Symbole sein: GL_S, GL_T, GL_R oder GL_Q. Der pname-Parameter muss eine der drei symbolischen Konstanten sein: GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE oder GL_EYE_PLANE. Wenn pname entweder GL_OBJECT_PLANE oder GL_EYE_PLANE ist, enthält Param Koeffizienten für die entsprechende Texturgenerierungsfunktion.

Wenn die Texturgenerierungsfunktion GL_OBJECT_LINEAR ist, wird die Funktion

! [Formel mit der glTexGen-Funktion, wenn die Texturgenerierungsfunktion GL_OBJECT_LINEAR ist.]

wird verwendet, wobei g der für die Koordinate berechnete Wert ist; p1, p2, p3 und p4 sind die vier Werte, die in Params angegeben werden; und x?, y?, z?, und w? sind die Objektkoordinaten des Vertex. Sie können diese Funktion verwenden, um Textur-Map-Gelände mithilfe von Seeebene als Referenzebene (definiert durch p1, p2, p3 und p4) zu verwenden. Die GL_OBJECT_LINEAR Koordinatengenerierungsfunktion berechnet die Höhe eines Geländevertexs als Entfernung vom Meeresniveau; diese Höhe wird verwendet, um das Texturbild zu indizieren, um weißer Schnee auf Gipfel und grünes Gras auf Fußhügeln zuzuordnen, z. B.

Wenn die Texturgenerierungsfunktion GL_EYE_LINEAR ist, wird die Funktion

! [Formel mit der glTexGen-Funktion, wenn die Texturgenerierungsfunktion GL_EYE_LINEAR ist.]

wird verwendet, wo

Equation showing the eye coordinates of the vertex.

und x?, y?, z?, und w? sind die Augenkoordinaten des Vertex, p1, p2, p3 und p4 sind die werte, die in param bereitgestellt werden, und M ist die Modellansichtsmatrix, wenn Sie glTexGen aufrufen. Wenn M schlecht bedingt oder singular ist, können Texturkoordinaten, die von der resultierenden Funktion generiert werden, ungenau oder nicht definiert sein.

Beachten Sie, dass die Werte in Param eine Referenzebene in Augenkoordinaten definieren. Die Modellansichtsmatrix, die auf sie angewendet wird, ist möglicherweise nicht identisch, wenn die Polygonvertices transformiert werden. Diese Funktion legt ein Feld der Texturkoordinaten fest, die dynamische Konturlinien für verschiebende Objekte erzeugen können.

Wenn pname GL_SPHERE_MAP ist und Koordnen entweder GL_S oder GL_T ist, werden s und t Texturkoordinaten wie folgt generiert. Lassen Sie U der Einheitsvektor sein, der vom Ursprung auf den Polygonvertex (in Augenkoordinaten) verweist. Lassen Sie uns die aktuelle Normalität sein, nach der Transformation in Augenkoordinaten. Lassen Sie f = (fx ( ) fy ( ) fz)T den Spiegelungsvektor so sein, dass

Equation showing the reflection vector as a function of unit vector and current normal.

Schließlich lassen Sie uns

Equation showing m as a function of reflection vector.

Dann sind die Werte, die den Koordinaten i und t-Textur zugewiesen sind

Equation showing values assigned to the i and t texture coordinates.

Sie können eine Texturkoordinatengenerierungsfunktion aktivieren oder deaktivieren, indem Sie glEnable oder glDisable mit einem der symbolischen Texturkoordinatennamen (GL_TEXTURE_GEN_S, GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R oder GL_TEXTURE_GEN_Q) als Argument verwenden. Wenn diese Funktion aktiviert ist, wird die angegebene Texturkoordinate entsprechend der generierten Funktion berechnet, die dieser Koordinate zugeordnet ist. Wenn diese Funktion deaktiviert ist, nehmen nachfolgende Vertices die angegebene Texturkoordinate aus der aktuellen Gruppe von Texturkoordinaten ab. Zunächst werden alle Texturgenerierungsfunktionen auf GL_EYE_LINEAR festgelegt und sind deaktiviert. Beide Ebenengleichungen sind (1,0,0,0); beide Gleichungen sind (0,1,0,0); und alle Formeln "r" und "q" sind (0,0,0,0).

Die folgenden Funktionen rufen Informationen im Zusammenhang mit glTexGen ab:

glGetTexGen
glIsEnabled mit Argument GL_TEXTURE_GEN_S
glIsEnabled mit Argument GL_TEXTURE_GEN_T
glIsEnabled mit Argument GL_TEXTURE_GEN_R
glIsEnabled mit Argument GL_TEXTURE_GEN_Q

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Siehe auch

glBegin

glEnd

glCopyTexImage2D

glCopyTexSubImage2D

glGetTexGen

glIsEnabled

glTexEnv

glTexImage1D

glTexParameter

glTexSubImage1D

glTexSubImage2D