glTexEnv

Aus DGL Wiki
Version vom 17. August 2008, 06:09 Uhr von Thoronador (Diskussion | Beiträge) (Tippfehler korrigiert.)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

glTexEnv

Name

glTexEnvf, glTexEnvi, glTexEnvfv, glTexEnviv - Setzt Parameter für das Textur-Environment


Delphi-Spezifikation

procedure glTexEnvf(target : GLenum; pname : GLenum; param : GLfloat);
procedure glTexEnvi(target : GLenum; pname : GLenum; param : GLint);


Parameter

target Gibt ein Textur-Environment an. Muss vom Typ GL_TEXTURE_ENV sein.
pname Gibt den symbolischen Namen eines Parameters des Textur-Environments an. Muss vom Typ GL_TEXTURE_ENV_MODE sein.
param Gibt eine einzelne symbolische Konstante an. Muss entweder vom Typ GL_MODULATE, GL_DECAL, GL_BLEND oder GL_REPLACE.


Delphi-Spezifikation

procedure glTexEnvfv(target : GLenum; pname : GLenum; const params : ^GLfloat) 
procedure glTexEnviv(target : GLenum; pname : GLenum; const params : ^GLint)


Parameter

target Gibt ein Textur-Environment an. Muss vom Typ GL_TEXTURE_ENV sein.
pname Gibt den symbolischen Namen eines Parameters des Textur-Environments an. Akzeptiert werden GL_TEXTURE_ENV_MODE und GL_TEXTURE_ENV_COLOR.
params Gibt einen Pointer auf ein Parameter-Array an, das entweder eine einzelne symbolische Konstante oder eine Farbe im RGBA-Format enthält.


Beschreibung

Ein Textur-Environment legt fest, wie Texturwerte interpretiert werden, wenn ein Fragment texturiert wird. target muss vom Typ GL_TEXTURE_ENV sein. pname kann GL_TEXTURE_ENV_MODE oder GL_TEXTURE_ENV_COLOR sein.

Wenn pname die Konstante GL_TEXTURE_ENV_MODE zugewiesen ist, dann ist params (bzw zeigt params auf) der symbolische Name einer Texturfunktion. Vier Texturfunktionen müssen angegeben werden: GL_MODULATE, GL_DECAL, GL_BLEND und GL_REPLACE.

Eine Texturfunktion wird unter Verwendung des Textur-Wertes des zu behandelnden Fragments auf das zu texturierende Fragment angewendet (siehe glTexParameter) und erzeugt eine Farbe im RGBA-Format für dieses Fragment. Die folgende Tabelle zeigt, wie die RGBA-Farbe durch jede dieser wählbaren Funktionen generiert wird. C ist ein Triplet mit den Farbwerten (R,G,B) und A ist der Alpha-Wert. RGBA-Werte, die aus der Textur entnommen werden, sind in dem Bereich [0,1]. Das tiefergestellte f bezieht sich auf eingehende Fragment, das tiefergestellte c auf die Farbe des Textur-Environments und das tiefergestellte v verweist auf der Wert, den die Texturfunktion liefert.

Eine Textur kann bis zu vier Komponenten pro Texturelement haben (siehe glTexImage1D, glTexImage2D, glCopyTexImage1D und glCopyTexImage2D). In einem Bild mit einer Komponente, zeigt L auf diese einzelne Komponente. Ein Bild mit zwei Komponenten nutzt L und A. Ein Bild mit drei Komponenten hat nur einen Color-Wert Ct. Ein Bild mit vier Komponenten hat einen Farbwert C und einen Alpha-Wert A.



Base internal
format
GL_MODULATE GL_DECAL GL_BLEND GL_REPLACE
GL_ALPHA C v ist C f.png
A v ist A f A t.png
undefined C v ist C f.png
A v ist A f.png
C v ist C f.png
A v ist A t.png
GL_LUMINANCE
1
C v ist L t C f.png
A v ist A f.png
undefined C v ist (1-L t)C f-L t C c.png
A v ist A f.png
C v ist L t.png
A v ist A f.png
GL_LUMINANCE_ALPHA
2
C v ist L t C f.png
A v ist A f A t.png
undefined C v ist (1-L t)C f-L t C c.png
A v ist A f A t.png
C v ist L t.png
A v ist A t.png
GL_INTENSITY C v ist C f I t.png
A v ist A f I t.png
undefined C v ist (1-I t)C f-I t C c.png
A V ist (1-I t)A f-I t A c.png
C v ist I t.png
A v ist I t.png
GL_RGB
3
C v ist C t C f.png
A v ist A f.png
C v ist C t.png
A v ist A f.png
C v ist (1-C t)C f-C t C c.png
A v ist A f.png
C v ist C t.png
A v ist A f.png
GL_RGBA
4
C v ist C t C f.png
A v ist A f A t.png
C v ist (1-A t)C f-A t C t.png
A v ist A f.png
C v ist (1-C t)C f-C t C c.png
A v ist A f A t.png
C v ist C t.png



Wenn pname vom Typ GL_TEXTURE_ENV_COLOR ist, ist params ein Pointer auf ein Array, das eine Farbe im RGBA-Format enhält. Farbkomponenten aus Integer-Werten werden linear interpretiert, so dass der größte positive Integer-Wert auf 1.0 und der kleinste negative Wert auf -1.0 fällt. Die Werte werden in den [0,1]-Bereich eingepasst, wenn sie spezifizert werden. Cc enthält diese vier Werte.

Werden keine Werte zugewiesen, dann hat GL_TEXTURE_ENV_MODE den Wert GL_MODULATE und GL_TEXTRE_ENV_COLOR die Werte (0, 0, 0, 0).


Hinweise

GL_REPLACE ist nur verfügbar, wenn die OpenGL-Version gleich oder höher als 1.1 ist.

Interne Formate anders als 1, 2, 3 oder 4 dürften nur nutzbar sein, wenn die OpenGL-Version gleich oder höher als 1.1 ist.


Änderungen

Folgende Erweiterungen hat die Funktion erfahren:

Ab OpenGL Version 1.2.1

Wenn mehrere Texture Stages durch GL_ARB_multitexture verwendet werden, so kann für jede Texture Stage die TexEnv-Funktion extra angegeben werden.

Ab OpenGL Version 1.3

Wenn glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB) verwendet wird, so wird die Berechnung der entsprechenden Texture Stage durch GL_ARB_texture_env_combine ersetzt.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn target oder pname keine der akzeptablen, definierten Werte ist, oder wenn params eine definierte Konstante haben soll (abhängig vom Wert von pname) und keine hat.

GL_INVALID_OPERATION wird generiert, wenn glTexEnv innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGetTexEnv


Siehe auch

glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glTexImage1D, glTexImage2D, glTexParameter, glTexSubImage1D, glTexSubImage2D