glTexGenf-Funktion

Steuert die Generierung von Texturkoordinaten.

Syntax

void WINAPI glTexGenf(
   GLenum  coord,
   GLenum  pname,
   GLfloat param
);

Parameter

coord

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

pname

Der symbolische Name der Texturkoordinatengenerierungsfunktion.

param

Ein einzelner wertige Texturgenerierungsparameter, einer von GL_OBJECT_LINEAR, GL_EYE_LINEAR oder GL_SPHERE_MAP.

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
coord oder pname war kein akzeptierter definierter Wert, oder pname wurde GL_TEXTURE_GEN_MODE, und params war kein akzeptierter definierter Wert.
GL_INVALID_ENUM
pname wurde GL_TEXTURE_GEN_MODE, params wurde GL_SPHERE_MAP und Coord war entweder GL_R oder GL_Q
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 Textur-Koordinaten-Generierungsfunktion aus oder stellt Koeffizienten für eine der Funktionen bereit. Der coord-Parameter benennt 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 von drei symbolischen Konstanten sein: GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE oder GL_EYE_PLANE. Wenn pname GL_TEXTURE_GEN_MODE ist, gibt param einen Modus an, einen von GL_OBJECT_LINEAR, GL_EYE_LINEAR oder GL_SPHERE_MAP. 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, die die glTexGen-Funktion zeigt, wenn die Texturgenerierungsfunktion GL_OBJECT_LINEAR ist.]

wird verwendet, wobei g der Wert ist, der für die in coord benannte Koordinate berechnet wird; p1, p2, p3 und p4 sind die vier Werte, die in Params angegeben werden; und x?, y?, z?, und w? sind die Objektkoordinaten des Scheitelpunkts. Sie können diese Funktion verwenden, um Gelände texturieren zu können, indem Sie den Meeresspiegel als Referenzebene (definiert durch p1, p2, p3 und p4) verwenden. Die GL_OBJECT_LINEAR Koordinatengenerierungsfunktion berechnet die Höhe eines Geländevertex als Entfernung vom Meeresspiegel. Diese Höhe wird verwendet, um das Texturbild zu indizieren, um z. B. weißen Schnee auf Gipfeln und grünes Gras auf Ausläufern zu indizieren.

Wenn die Texturgenerierungsfunktion GL_EYE_LINEAR ist, wird die -Funktion

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

wird verwendet, wobei

Gleichung mit den Augenkoordinaten des Scheitelpunkts.

und x?, y?, z?, und w? sind die Augenkoordinaten des Scheitelpunkts, p1, p2, p3 und p4 sind die in Param angegebenen Werte, und M ist die Modellansichtsmatrix, wenn Sie glTexGen aufrufen. Wenn M schlecht bedingt oder singular ist, können texturierte Koordinaten, die von der resultierenden Funktion generiert werden, ungenau oder undefiniert sein.

Beachten Sie, dass die Werte in param eine Referenzebene in Augenkoordinaten definieren. Die Modellansichtsmatrix, die auf sie angewendet wird, ist möglicherweise nicht die gleiche, die beim Transformieren der Polygonvertices gilt. Diese Funktion erstellt ein Feld mit Texturkoordinaten, das dynamische Konturlinien für sich bewegende Objekte erzeugen kann.

Wenn pname GL_SPHERE_MAP ist und die Koordnung entweder GL_S oder GL_T ist, werden die Texturkoordinaten s und t wie folgt generiert. Lassen Sie u der Einheitsvektor sein, der vom Ursprung zum Polygonvertex (in Augenkoordinaten) zeigt. Lassen Sie n nach der Transformation in Augenkoordinaten die aktuelle Normalität sein. f = (fx ( ) fy ( ) fz)T der Reflektionsvektor sein, so dass

Gleichung, die den Reflektionsvektor als Funktion des Einheitsvektors und der aktuellen Normalität zeigt.

Lassen Sie zum Schluss

Gleichung mit m als Funktion des Reflektionsvektors.

Dann sind die Werte, die den i- und t-Texturkoordinaten zugewiesen sind:

Gleichung mit Werten, die den Texturkoordinaten

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 gemäß der generierenden Funktion berechnet, die dieser Koordinate zugeordnet ist. Wenn diese Funktion deaktiviert ist, übernehmen nachfolgende Scheitelpunkte die angegebene Texturkoordinate aus dem aktuellen Satz von Texturkoordinaten. Zunächst sind alle Texturgenerierungsfunktionen auf GL_EYE_LINEAR festgelegt und deaktiviert. Beide Ebenengleichungen sind (1,0,0,0,0); beide t-Ebenengleichungen sind (0,1,0,0;0); und alle Formeln der Ebene r und q sind (0,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

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