gl.TexParameter(target, pname, param)
gl.TexParameter()
weist dem als pname
angegebenen Texturparameter den
oder die Werte in param
zu. target
definiert die Zieltextur, entweder
#GL_TEXTURE_1D
oder #GL_TEXTURE_2D
. Die folgenden Symbole werden im
pname
akzeptiert:
#GL_TEXTURE_MIN_FILTER
Eine Mipmap ist ein geordneter Satz von Feldern, die das gleiche Bild bei immer niedrigeren Auflösungen darstellen: 2^a für 1D Mipmaps und 2^a*2^b für 2D Mipmaps.
Wenn eine 2D-Textur beispielsweise die Abmessungen 2^m*2^n hat, gibt es
max(m, n) + 1 Mipmaps. Das erste Mipmap ist die ursprüngliche Textur mit
den Abmessungen 2^m*2^n. Jede nachfolgende Mipmap hat die Abmessungen
2^k-1*2^l-1, wobei 2^k*2^l die Abmessungen der vorherigen Mipmap sind, bis
entweder k=0 oder l=0. An diesem Punkt haben die nachfolgenden Mipmaps die
Abmessungen 1*2^l-1 oder 2^k-1*1 bis zur endgültigen Mipmap, die die
Abmessungen 1x1 hat. Um die Mipmaps zu definieren, rufen Sie
gl.TexImage1D(), gl.TexImage2D()
oder gl.CopyTexImage() mit dem Level-Argument auf,
das die Reihenfolge der Mipmaps angibt. Level 0 ist die ursprüngliche Textur;
Level max(m, n) ist die letzte 1x1 Mipmap. param
liefert eine Funktion zur
Verkleinerung der Textur als eine der folgenden:
#GL_NEAREST
#GL_LINEAR
#GL_TEXTURE_WRAP_S
und
#GL_TEXTURE_WRAP_T
sowie von der genauen Zuordnung.
#GL_NEAREST_MIPMAP_NEAREST
#GL_NEAREST
(das Texturelement, das der Mitte des
Pixels am nächsten liegt), um einen Texturwert zu erzeugen.
#GL_LINEAR_MIPMAP_NEAREST
#GL_LINEAR
(ein bewerteter Durchschnitt der vier
Texturelemente, die der Mitte des Pixels am nächsten liegen), um einen
Texturwert zu erzeugen.
#GL_NEAREST_MIPMAP_LINEAR
#GL_NEAREST
(das Texturelement,
das der Mitte des Pixels am nächsten liegt), um aus jedem Mipmap einen
Texturwert zu erzeugen. Der endgültige Texturwert ist ein bewerteter
Durchschnitt dieser beiden Werte.
#GL_LINEAR_MIPMAP_LINEAR
#GL_LINEAR
(ein bewerteter
Durchschnitt der vier Texturelemente, die der Mitte des Pixels am nächsten
liegen), um aus jeder Mipmap einen Texturwert zu erzeugen. Der endgültige
Texturwert ist ein bewerteter Durchschnitt dieser beiden Werte.
Da im Verkleinerungsprozess mehr Texturelemente gesampelt werden, werden
weniger Aliasing-Artefakte sichtbar. Während die Verkleinerungsfunktionen
#GL_NEAREST
und #GL_LINEAR
schneller sind als die anderen vier, da sie nur
ein oder vier Texturelemente abtasten, um den Texturwert des gerenderten
Pixels zu bestimmen, können sie aber Moiré-Muster oder unregelmäßige Übergänge
erzeugen. Der Initialwert von #GL_TEXTURE_MIN_FILTER
ist #GL_NEAREST_MIPMAP_LINEAR
.
#GL_TEXTURE_MAG_FILTER
#GL_NEAREST
oder #GL_LINEAR
(siehe unten). #GL_NEAREST
ist im Allgemeinen schneller als
#GL_LINEAR
, aber es kann strukturierte Bilder mit schärferen Kanten erzeugen,
da der Übergang zwischen den Texturelementen nicht so glatt ist. Der
Initialwert von #GL_TEXTURE_MAG_FILTER
ist #GL_LINEAR
.
#GL_NEAREST
#GL_LINEAR
#GL_TEXTURE_WRAP_S
und
#GL_TEXTURE_WRAP_T
sowie von der genauen Zuordnung.
#GL_TEXTURE_WRAP_S
#GL_CLAMP
oder
#GL_REPEAT
. #GL_CLAMP
bewirkt, dass die s-Koordinaten auf den Bereich [0, 1]
festgelegt werden und ist nützlich, um Wrapping-Artefakte beim zuordnen eines
einzelnen Bildes auf ein Objekt zu verhindern. #GL_REPEAT
bewirkt, dass der
ganzzahlige Teil der s-Koordinate ignoriert wird; GL verwendet nur den
Bruchteil und erzeugt so ein sich wiederholendes Muster. Auf
Randtexturelemente wird nur zugegriffen, wenn das Wrapping auf #GL_CLAMP
gesetzt ist. Zunächst wird #GL_TEXTURE_WRAP_S
auf #GL_REPEAT
gesetzt.
#GL_TEXTURE_WRAP_T
#GL_CLAMP
oder
#GL_REPEAT
. Siehe die Erläuterung unter #GL_TEXTURE_WRAP_S
. Zunächst wird
#GL_TEXTURE_WRAP_T
auf #GL_REPEAT
gesetzt.
#GL_TEXTURE_WRAP_R_EXT
#GL_CLAMP
oder
#GL_REPEAT
. Siehe die Erläuterung unter #GL_TEXTURE_WRAP_S
. Zunächst wird
#GL_TEXTURE_WRAP_R_EXT
auf #GL_REPEAT
gesetzt.
#GL_TEXTURE_BORDER_COLOR
param
muss eine Tabelle mit vier Gleitkommawerten
sein, die die RGBA-Farbe des Texturrandes umfassen. Zunächst ist die
Randfarbe (0, 0, 0, 0).
#GL_TEXTURE_PRIORITY
Angenommen, ein Programm hat die Texturierung aktiviert (durch Aufruf von
gl.Enable() mit dem Argument #GL_TEXTURE_1D
oder
#GL_TEXTURE_2D
) und hat #GL_TEXTURE_MIN_FILTER
auf eine der Funktionen
gesetzt, die eine Mipmap erfordert. Wenn entweder die Dimensionen der
aktuell definierten Texturbilder (mit vorherigen Aufrufen von
gl.TexImage1D(), gl.TexImage2D()
oder gl.CopyTexImage()) nicht der richtigen
Reihenfolge für Mipmaps (siehe oben) folgen, oder es sind weniger
Texturbilder definiert als benötigt werden, oder der Satz von
Texturbildern hat eine unterschiedliche Anzahl von Texturkomponenten,
dann ist es, als ob die Texturzuordnung deaktiviert wäre.
Die lineare Filterung greift nur in 2D-Texturen auf die vier nächstgelegenen Textelemente zu. In 1D-Texturen greift die lineare Filterung auf die beiden nächstgelegenen Textelemente zu.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_TEXTURE_1D
oder #GL_TEXTURE_2D
sein musspname
enthält#GL_INVALID_ENUM
wird erzeugt, wenn target
oder pname
nicht einer der
akzeptierten definierten Werte ist.
#GL_INVALID_ENUM
wird erzeugt, wenn param
einen definierten konstanten Wert
haben sollte (basierend auf dem Wert von pname
) und es nicht hat.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.TexParameter()
zwischen
gl.Begin() und gl.End() ausgeführt wird.