glTexGen: Unterschied zwischen den Versionen
() |
K (→Beschreibung) |
||
Zeile 66: | Zeile 66: | ||
Wenn ''name'' entweder gleich '''GL_OBJECT_PLANE''' oder '''GL_EYE_PLANE''' ist, enthält ''params'' Koeffizienten für die zugehörige Texturgenerierungsfunktion. | Wenn ''name'' entweder gleich '''GL_OBJECT_PLANE''' oder '''GL_EYE_PLANE''' ist, enthält ''params'' Koeffizienten für die zugehörige Texturgenerierungsfunktion. | ||
− | Wenn die Textur- | + | Wenn die Textur-Generatorfunktion GL_OBJECT_LINEAR ist, wird die Funktion |
[[Bild:glTexGen_GL_OBJECT_LINEAR_Formel.png]] | [[Bild:glTexGen_GL_OBJECT_LINEAR_Formel.png]] | ||
Zeile 73: | Zeile 73: | ||
Die Höhe eines Terrainvertex wird von der GL_OBJECT_LINEAR Koordinaten-Generatorfunktion als Abstand zu Normal Null berechnet; diese Höhenangabe wird zum Beispiel gerne zur Indezierung eines Texturbildes genutzt, um weissen Schnee auf Bergspitzen und grünes Gras auf die Bergausläufer zu mappen. | Die Höhe eines Terrainvertex wird von der GL_OBJECT_LINEAR Koordinaten-Generatorfunktion als Abstand zu Normal Null berechnet; diese Höhenangabe wird zum Beispiel gerne zur Indezierung eines Texturbildes genutzt, um weissen Schnee auf Bergspitzen und grünes Gras auf die Bergausläufer zu mappen. | ||
− | <b><i> | + | <b><i>If the texture generation function is GL_EYE_LINEAR, the function</i></b><br>Wenn die Textur-Generatorfunktion GL_EYE_LINEAR ist, wird die Funktion |
− | If the texture generation function is GL_EYE_LINEAR, the function | ||
[[Bild:glTexGen_GL_OBJECT_EYE_LINEAR_Formel1.png]] | [[Bild:glTexGen_GL_OBJECT_EYE_LINEAR_Formel1.png]] | ||
− | is used, where | + | <i><b>is used, where</b></i><br>benutzt, wobei |
− | </i>< | ||
[[Bild:glTexGen_GL_OBJECT_EYE_LINEAR_Formel2.png]] | [[Bild:glTexGen_GL_OBJECT_EYE_LINEAR_Formel2.png]] | ||
Zeile 88: | Zeile 86: | ||
If pname is GL_SPHERE_MAP and coord is either GL_S or GL_T, s and t texture coordinates are generated as follows. Let u be the unit vector pointing from the origin to the polygon vertex (in eye coordinates). Let n¢ be the current normal, after transformation to eye coordinates. Let f = (f (x ) f (y ) f (z) )T be the reflection vector such that | If pname is GL_SPHERE_MAP and coord is either GL_S or GL_T, s and t texture coordinates are generated as follows. Let u be the unit vector pointing from the origin to the polygon vertex (in eye coordinates). Let n¢ be the current normal, after transformation to eye coordinates. Let f = (f (x ) f (y ) f (z) )T be the reflection vector such that | ||
</i></b> | </i></b> | ||
+ | |||
+ | und x (e) , y (e) , z (e) , w (e) die Eye-Koordinaten des Vertex sind, p (1) , p (2) , p (3) , p (4) die in Params bereitgestellten Werte sind und M die Modelviewmatrix zum Zeitpunkt des glTextGen-Aufrufs ist. Wenn M schlecht zusammengesetzt oder einzeln ist, können die Texturkoordinaten, die von der resultierenden Funktion berechnet werden, ungenau oder undefiniert sein. | ||
+ | Man beachte dass die Werte in Params eine Referenzfläche in Eye-Koordinaten definieren. Die Modelview-Matrix die auf sie angewendet wird muss nicht die selbe sein, die bei der Transformation der Polygonvertices wirkt. Diese Funktion stellt ein Feld von Texturkoordinaten bereit, die dynamische Konturlinien auf sich bewegenden Objekten hervorrufen kann.<br><br> | ||
+ | Wenn pname GL_SPHERE_MAP und coord entweder GL_S oder GL_T ist, werden die s und t Texturkoordinaten wie folgend generiert: Es sei u der Einheitsvektor der vom Ursprung zum Polygonvertex(in Exe-Koordinaten) zeigt; n¢ sei die aktuelle Normale in Eye-Koordinaten transformiert; f =(f (x ) f (y ) f (z) )T sei der Reflektionsvektor so dass | ||
[[Bild:glTexGen_GL_SPHERE_MAP_Formel1.png]] | [[Bild:glTexGen_GL_SPHERE_MAP_Formel1.png]] | ||
− | <b><i>Finally, let </i></b><br> | + | <b><i>Finally, let </i></b>Schließlich sei<br> |
[[Bild:glTexGen_GL_SPHERE_MAP_Formel2.png]]<br> | [[Bild:glTexGen_GL_SPHERE_MAP_Formel2.png]]<br> | ||
− | <b><i>Then the values assigned to the i and t texture coordinates are </i></b><br> | + | <b><i>Then the values assigned to the i and t texture coordinates are </i></b><br>dann sind die Werte, die auf die i und t Texturkoordinaten zugewiesen werden<br> |
[[Bild:glTexGen_GL_SPHERE_MAP_Formel3.png]] | [[Bild:glTexGen_GL_SPHERE_MAP_Formel3.png]] | ||
− | Eine Texturgenerierungsfunktion wird mittels [[glEnable]]/[[glDisable]] und den | + | Eine Texturgenerierungsfunktion wird mittels [[glEnable]]/[[glDisable]] und den Texturkoordinatennamen ('''GL_TEXTURE_GEN_S, GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R''' bzw. '''GL_TEXTURE_GEN_Q''') aktiviert bzw. deaktiviert. |
Bei der Aktivierung wird die ausgewählte Texturkoordinate über die zugehörige Generierungsfunktion berechnet. | Bei der Aktivierung wird die ausgewählte Texturkoordinate über die zugehörige Generierungsfunktion berechnet. | ||
<b><i>When disabled, subsequent vertexes take the specified texture coordinate from the current set of texture coordinates. | <b><i>When disabled, subsequent vertexes take the specified texture coordinate from the current set of texture coordinates. | ||
− | </i></b> | + | </i></b><br> Ist er deaktiviert, so bekommen darauffolgende vertices die vom aktuellen Set der Texturkoordinaten bestimmten Texturkoordinaten. |
<br> | <br> |
Version vom 16. April 2005, 20:37 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
glTexGen
Name
glTexGen Funktionen - kontrollieren die Generierung der Texturkoordinaten.
Delphi-Spezifikation
procedure glTexGend(coord: TGLenum; pname: TGLenum; param: TGLdouble); procedure glTexGenf(coord: TGLenum; pname: TGLenum; param: TGLfloat); procedure glTexGeni(coord: TGLenum; pname: TGLenum; param: TGLint);
Parameter
coord | Bestimmt die Texturkoordinate. Muss eine der folgenden sein: GL_S, GL_T, GL_R, oder GL_Q. |
pname | Ist der symbolische Name einer Funktion zur Generierung von Texturkoordinaten. Muss GL_TEXTURE_GEN_MODE sein. |
param | Ist ein einzelner Texturgenerierungsparameter. Kann GL_OBJECT_LINEAR, GL_EYE_LINEAR, oder GL_SPHERE_MAP sein. |
Delphi-Spezifikation
procedure glTexGendv(coord: TGLenum; pname: TGLenum; const params: PGLdouble); procedure glTexGenfv(coord: TGLenum; pname: TGLenum; const params: PGLfloat); procedure glTexGeniv(coord: TGLenum; pname: TGLenum; const params: PGLint);
Parameter
coord | Bestimmt die Texturkoordinate. Muss eine der folgenden sein: GL_S, GL_T, GL_R, oder GL_Q. |
pname | Ist der symbolische Name einer Funktion zur Generierung von Texturkoordinaten oder eines Funktionsparameters. Muss GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE, oder GL_EYE_PLANE sein. |
params | Ist ein Zeiger auf ein Feld mit Texturgenerierungsparameter. Wenn pname GL_TEXTURE_GEN_MODE ist, muss das Feld eine einzelne symbolische Konstante enthälten. Diese kann GL_OBJECT_LINEAR, GL_EYE_LINEAR, oder GL_SPHERE_MAP sein. |
Beschreibung
Die glTexGen Funktion wählt eine Texturkoordinatengenerierungsfunktion oder beliefert eine dieser Funktionen mit Koeffizienten.
coord bezeichnet eine der vier Texturkoordinaten (s,t,r,q) und kann einen der 4 folgenden symbolischen Werte annehmen: GL_S, GL_T, GL_R oder GL_Q.
pname kann einen der 3 möglichen Werte GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE oder GL_EYE_PLANE annehmen.
Wenn pname GL_TEXTURE_GEN_MODE zugewiesen wurde, kann man mittels params den Modus festlegen. Dazu verwendet man einen der 3 symbolischen Werte GL_OBJECT_LINEAR, GL_EYE_LINEAR bzw. GL_SPHERE_MAP.
Wenn name entweder gleich GL_OBJECT_PLANE oder GL_EYE_PLANE ist, enthält params Koeffizienten für die zugehörige Texturgenerierungsfunktion.
Wenn die Textur-Generatorfunktion GL_OBJECT_LINEAR ist, wird die Funktion
Datei:glTexGen GL OBJECT LINEAR Formel.png
benutzt, wobei g der berechnete Wert der in coord angegebenen Koordinate ist, p(1),p(2),p(3),p(4) die vier in params bereitgestellten Werte sind und x(o),y(o),z(o),w(o) die Objektkoordinaten des Vertex sind. Diese Funktion kann für Terraintexturierung, wobei Normal Null(definiert durch p(1),p(2),p(3),p(4)) als Referenzfläche benutzt wird, verwendet werden. Die Höhe eines Terrainvertex wird von der GL_OBJECT_LINEAR Koordinaten-Generatorfunktion als Abstand zu Normal Null berechnet; diese Höhenangabe wird zum Beispiel gerne zur Indezierung eines Texturbildes genutzt, um weissen Schnee auf Bergspitzen und grünes Gras auf die Bergausläufer zu mappen.
If the texture generation function is GL_EYE_LINEAR, the function
Wenn die Textur-Generatorfunktion GL_EYE_LINEAR ist, wird die Funktion
Datei:glTexGen GL OBJECT EYE LINEAR Formel1.png
is used, where
benutzt, wobei
Datei:glTexGen GL OBJECT EYE LINEAR Formel2.png
and x (e) , y (e) , z (e) , and w (e) are the eye coordinates of the vertex, p (1) , p (2) , p (3) , and p (4) are the values supplied in params, and M is the modelview matrix when glTexGen is invoked. If M is poorly conditioned or singular, texture coordinates generated by the resulting function may be inaccurate or undefined.
Note that the values in params define a reference plane in eye coordinates. The modelview matrix that is applied to them may not be the same one in effect when the polygon vertexes are transformed. This function establishes a field of texture coordinates that can produce dynamic contour lines on moving objects.
If pname is GL_SPHERE_MAP and coord is either GL_S or GL_T, s and t texture coordinates are generated as follows. Let u be the unit vector pointing from the origin to the polygon vertex (in eye coordinates). Let n¢ be the current normal, after transformation to eye coordinates. Let f = (f (x ) f (y ) f (z) )T be the reflection vector such that
und x (e) , y (e) , z (e) , w (e) die Eye-Koordinaten des Vertex sind, p (1) , p (2) , p (3) , p (4) die in Params bereitgestellten Werte sind und M die Modelviewmatrix zum Zeitpunkt des glTextGen-Aufrufs ist. Wenn M schlecht zusammengesetzt oder einzeln ist, können die Texturkoordinaten, die von der resultierenden Funktion berechnet werden, ungenau oder undefiniert sein.
Man beachte dass die Werte in Params eine Referenzfläche in Eye-Koordinaten definieren. Die Modelview-Matrix die auf sie angewendet wird muss nicht die selbe sein, die bei der Transformation der Polygonvertices wirkt. Diese Funktion stellt ein Feld von Texturkoordinaten bereit, die dynamische Konturlinien auf sich bewegenden Objekten hervorrufen kann.
Wenn pname GL_SPHERE_MAP und coord entweder GL_S oder GL_T ist, werden die s und t Texturkoordinaten wie folgend generiert: Es sei u der Einheitsvektor der vom Ursprung zum Polygonvertex(in Exe-Koordinaten) zeigt; n¢ sei die aktuelle Normale in Eye-Koordinaten transformiert; f =(f (x ) f (y ) f (z) )T sei der Reflektionsvektor so dass
Datei:glTexGen GL SPHERE MAP Formel1.png
Finally, let Schließlich sei
Datei:glTexGen GL SPHERE MAP Formel2.png
Then the values assigned to the i and t texture coordinates are
dann sind die Werte, die auf die i und t Texturkoordinaten zugewiesen werden
Datei:glTexGen GL SPHERE MAP Formel3.png
Eine Texturgenerierungsfunktion wird mittels glEnable/glDisable und den Texturkoordinatennamen (GL_TEXTURE_GEN_S, GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R bzw. GL_TEXTURE_GEN_Q) aktiviert bzw. deaktiviert.
Bei der Aktivierung wird die ausgewählte Texturkoordinate über die zugehörige Generierungsfunktion berechnet.
When disabled, subsequent vertexes take the specified texture coordinate from the current set of texture coordinates.
Ist er deaktiviert, so bekommen darauffolgende vertices die vom aktuellen Set der Texturkoordinaten bestimmten Texturkoordinaten.
Hinweise
Der Initialisierungszustand ist folgender:
- Alle Texturgenerierungsfunktionen stehen auf GL_EYE_LINEAR und sind deaktiviert.
- Beide s Ebenengleichungen stehen auf (1,0,0,0).
- Beide t Ebenengleichungen stehen auf (0,1,0,0).
- Alle r und q Ebenengleichungen stehen auf (0,0,0,0).
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn coord oder pname ungültige Werte übergeben werden oder wenn pname GL_TEXTURE_GEN_MODE ist und params keinen gültigen Wert enthält.
GL_INVALID_ENUM wird generiert wenn gleichzeitig pname GL_TEXTURE_GEN_MODE, params GL_SPHERE_MAP und coord entweder GL_R oder GL_Q ist.
GL_INVALID_OPERATION wird generiert wenn glTexGen innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Zugehörige Wertrückgaben
glGetTexGen
glIsEnabled mit Token GL_TEXTURE_GEN_S
glIsEnabled mit Token GL_TEXTURE_GEN_T
glIsEnabled mit Token GL_TEXTURE_GEN_R
glIsEnabled mit Token GL_TEXTURE_GEN_Q