glTexParameter: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Hinweise)
K (Kategorisierung, Links)
 
(20 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
+
{{Bildwunsch|Bitte Bilder für die seit 1.1 neu hinzugekommenen Parameter ergänzen.}}
 
= glTexParameter =
 
= glTexParameter =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glTexParameter''' Funktionen - setzen Textureigenschaften.
+
'''glTexParameter''' Setzen von Textureigenschaften.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glTexParameterf'''(''target'': TGLenum; ''pname'': TGLenum; ''param'': TGLfloat);
 
  procedure '''glTexParameterf'''(''target'': TGLenum; ''pname'': TGLenum; ''param'': TGLfloat);
 
  procedure '''glTexParameteri'''(''target'': TGLenum; ''pname'': TGLenum; ''param'': TGLint);
 
  procedure '''glTexParameteri'''(''target'': TGLenum; ''pname'': TGLenum; ''param'': TGLint);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
 
<table border=1 rules=all>
 
<table border=1 rules=all>
 
<tr>
 
<tr>
 
  <td>''target''</td>
 
  <td>''target''</td>
  <td>Bestimmt die Zieltextur welche '''GL_TEXTURE_1D, GL_TEXTURE_2D''' oder '''GL_TEXTURE_3D''' sein kann.</td>
+
  <td>Bestimmt die Zieltextur welche '''GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D''' oder '''GL_TEXTURE_CUBE_MAP''' sein kann.</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
 
  <td>''pname''</td>
 
  <td>''pname''</td>
 
  <td>Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:<br>
 
  <td>Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:<br>
'''GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_WRAP_S,''' oder '''GL_TEXTURE_WRAP_T'''.</td>
+
'''GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_WRAP_R, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_PRIORITY, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE''' oder '''GL_GENERATE_MIPMAP'''.</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Zeile 29: Zeile 32:
 
</table>
 
</table>
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glTexParameterfv'''(''target'': TGLenum; ''pname'': TGLenum; const ''params'': PGLfloat);
 
  procedure '''glTexParameterfv'''(''target'': TGLenum; ''pname'': TGLenum; const ''params'': PGLfloat);
 
  procedure '''glTexParameteriv'''(''target'': TGLenum; ''pname'': TGLenum; const ''params'': PGLint);
 
  procedure '''glTexParameteriv'''(''target'': TGLenum; ''pname'': TGLenum; const ''params'': PGLint);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
 
<table border=1 rules=all>
 
<table border=1 rules=all>
Zeile 44: Zeile 49:
 
  <td>''pname''</td>
 
  <td>''pname''</td>
 
  <td>Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:<br>
 
  <td>Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:<br>
'''GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T''' oder '''GL_TEXTURE_BORDER_COLOR'''.</td>
+
'''GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_WRAP_R, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_BORDER_COLOR, GL_TEXTURE_PRIORITY, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE''' oder '''GL_GENERATE_MIPMAP'''.</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Zeile 52: Zeile 57:
 
</table>
 
</table>
  
<br>
+
 
 +
 
 
== Beschreibung ==  
 
== Beschreibung ==  
 
'''Texturmapping''' ist eine Technik die Bilder (oder Ausschnitte von Bildern) auf die Oberfläche von Objekten "aufklebt". Man kann sich dies tatsächlich so vorstellen wie das aufkleben von Tapeten an Wände. Das Bild wir im Texturenraum, welcher über ein (s,t) Koordinatensystem verfügt, erstellt. Eine Textur ist ein ein-, zwei- und mittlerweile auch dreidimensionales Bild inklusive einiger Parameter die bestimmen wie Texturen/Texturausschnitte aus dem Bild gewonnen werden sollen.
 
'''Texturmapping''' ist eine Technik die Bilder (oder Ausschnitte von Bildern) auf die Oberfläche von Objekten "aufklebt". Man kann sich dies tatsächlich so vorstellen wie das aufkleben von Tapeten an Wände. Das Bild wir im Texturenraum, welcher über ein (s,t) Koordinatensystem verfügt, erstellt. Eine Textur ist ein ein-, zwei- und mittlerweile auch dreidimensionales Bild inklusive einiger Parameter die bestimmen wie Texturen/Texturausschnitte aus dem Bild gewonnen werden sollen.
Zeile 59: Zeile 65:
  
 
'''GL_TEXTURE_MIN_FILTER'''
 
'''GL_TEXTURE_MIN_FILTER'''
<b><i>
+
: Die Texturen-Verkleinerungsfunktion wird immer dann genutzt, wenn der zu texturierende Pixel auf eine Fläche gemappt wird, die größer als ein Texturenelement ist. Es gibt sechs definierte Verkleinerungsfunktionen, zwei davon nutzen den nächsten bzw. die nächsten vier Texturenelemente um den Texturenwert zu berechnen. Die anderen vier benutzen [[MipMaps]]. (siehe [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfiltern| Texturfilterbeispiele]])
: The texture minifying function is used whenever the pixel being textured maps to an area greater than one texture element. There are six defined minifying functions. Two of them use the nearest one or nearest four texture elements to compute the texture value. The other four use mipmaps.
+
 
: A mipmap is an ordered set of arrays representing the same image at progressively lower resolutions. If the texture has dimensions 2^nx2^m there are max(n, m) + 1 mipmaps. The first mipmap is the original texture, with dimensions 2^nx2^m. Each subsequent mipmap has dimensions 2^k (-1) x2^l (-1) where 2^kx2^l are the dimensions of the previous mipmap, until either k = 0 or l = 0. At that point, subsequent mipmaps have dimension 1x2^l-1 or 2^k-1x1 until the final mipmap, which has dimension 1x1. Mipmaps are defined using glTexImage1D or glTexImage2D with the level-of-detail argument indicating the order of the mipmaps. Level 0 is the original texture; level bold max(n, m) is the final 1x1 mipmap.
+
: Eine [[MipMaps|MipMap]] ist ein sortierter Satz von Bildern, der das selbe Bild in progressiv kleineren Auflösungen darstellt. Wenn die Texturendimension 2^n * 2^n entsprocht, gibt es Maximum(n, m) + 1 MipMaps. Die erste MipMap ist die original Textur, deren Dimension 2^n * 2^n* beträgt. Jede folgende MipMap entspricht dann der Dimension 2^k(-1) * 2^l(-1), wobei 2^k * 2^l die Dimension der vorherigen MipMap darstellen. Dies wird solange vollzogen bis entweder k oder l gleich 0 ist. Ab dieem Punkt haben folgende MipMaps Dimensionen vom Format 1*2^l-1 oder 2^k-1*1, bis zur finalen Mipmap, die 1*1 Pixel groß ist. MipMaps werden über [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glCopyTexImage1D]] oder [[glCopyTexImage2D]] über den Detaillevel-Parameter spezifiziert. Level 0 ist die original Textur, Level Maximum(n, m) ist dann die finale 1*1 MipMap. Mittels der [[GLU]]-Bibliothek lassen sich MipMaps übrigens direkt generieren, dazu gibt es die Befehle [[gluBuild1DMipmaps]], [[gluBuild2DMipmaps]] und [[gluBuild3DMipmaps]].
</i></b>
 
  
 
:''params'' liefert folgende Funktionen zur Verkleinerung von Texturen. Dies wären:
 
:''params'' liefert folgende Funktionen zur Verkleinerung von Texturen. Dies wären:
  
 
:'''GL_NEAREST'''
 
:'''GL_NEAREST'''
:: Liefert den Wert des Texturelements, welches am nächsten (in [[Manhattendistanz]]) zum Zentrum des zu texturierenden Pixels liegt.
+
:: Liefert den Wert des Texturelements, welches am nächsten (in [[Manhattandistanz]]) zum Zentrum des zu texturierenden Pixels liegt.
  
 
:'''GL_LINEAR'''
 
:'''GL_LINEAR'''
<b><i>
+
:: Liefert den gewichteten Mittelwert der vier Texturenelemente die dem Zentrum des zu texturierenden Pixels am nächsten liegen. Dies kann Randpixel-Elemente einschliessen, je nachdem wie '''GL_TEXTURE_WRAP_S''' und '''GL_TEXTURE_WRAP_T''' eingestellt sind.
:: Returns the weighted average of the four texture elements that are closest to the center of the pixel being textured. These can include border texture elements, depending on the values of GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T, and on the exact mapping.  
+
 
</i></b>
 
 
:'''GL_NEAREST_MIPMAP_NEAREST'''
 
:'''GL_NEAREST_MIPMAP_NEAREST'''
<b><i>
+
:: Wählt die [[MipMaps|MipMap]], die der Größe des zu texturierenden Pixels am besten entspricht, und nutzt die Kriterien von '''GL_NEAREST''' um den Texturenwert zu generieren.
:: Chooses the mipmap that most closely matches the size of the pixel being textured and uses the GL_NEAREST criterion (the texture element nearest to the center of the pixel) to produce a texture value.  
+
 
</i></b>
 
 
:'''GL_LINEAR_MIPMAP_NEAREST'''
 
:'''GL_LINEAR_MIPMAP_NEAREST'''
<b><i>
+
:: Wählt die [[MipMaps|MipMap]], die der Größe des zu texturierenden Pixels am besten entspricht, und nutzt die Kriterien von '''GL_LINEAR''' um den Texturenwert zu generieren.
:: Chooses the mipmap that most closely matches the size of the pixel being textured and uses the GL_LINEAR criterion (a weighted average of the four texture elements that are closest to the center of the pixel) to produce a texture value.  
+
 
</i></b>
 
 
:'''GL_NEAREST_MIPMAP_LINEAR'''
 
:'''GL_NEAREST_MIPMAP_LINEAR'''
<b><i>
+
:: Wählt die zwei [[MipMaps]], die der Größe des zu texturierenden Pixels am besten entsprechen, und nutzt die Kriterien von '''GL_NEAREST''' um Texturenwerte aus jeder MipMap zu generieren. Der endgültige Texturenwert ist das gewichtete Mittel aus diesen beiden Werten.
:: Chooses the two mipmaps that most closely match the size of the pixel being textured and uses the GL_NEAREST criterion (the texture element nearest to the center of the pixel) to produce a texture value from each mipmap. The final texture value is a weighted average of those two values.  
+
 
</i></b>
 
 
:'''GL_LINEAR_MIPMAP_LINEAR'''
 
:'''GL_LINEAR_MIPMAP_LINEAR'''
<b><i>
+
:: Wählt die zwei [[MipMaps]], die der Größe des zu texturierenden Pixels am besten entsprechen, und nutzt die Kriterien von '''GL_LINEAR''' um Texturenwerte aus jeder MipMap zu generieren. Der endgültige Texturenwert ist das gewichtete Mittel aus diesen beiden Werten.
:: Chooses the two mipmaps that most closely match the size of the pixel being textured and uses the GL_LINEAR criterion (a weighted average of the four texture elements that are closest to the center of the pixel) to produce a texture value from each mipmap. The final texture value is a weighted average of those two values.
+
 
</i></b>
+
: Je mehr Texturenelemente im Verkleinerungsprozess genutzt werden, desto weniger Kantenartifakte werden sichtbar. Während '''GL_NEAREST''' und '''GL_LINEAR'''-Verkleinerungsfunktionen schneller als die anderen sind, ermitteln sie nur einen bzw. vier Texturenwerte um den endgültigen Texturenwert des zu texturierenden Pixels zu ermitteln, wodurch eher Moiré-Muster oder rauhe Übergänge entstehen. Voreinstellung für '''GL_TEXTURE_MIN_FILTER''' ist '''GL_NEAREST_MIPMAP_LINEAR'''.
  
<b><i>
 
:As more texture elements are sampled in the minification process, fewer aliasing artifacts will be apparent. While the GL_NEAREST and GL_LINEAR minification functions can be faster than the other four, they sample only one or four texture elements to determine the texture value of the pixel being rendered and can produce moire patterns or ragged transitions. The default value of GL_TEXTURE_MIN_FILTER is GL_NEAREST_MIPMAP_LINEAR.
 
</i></b>
 
  
 
'''GL_TEXTURE_MAG_FILTER '''
 
'''GL_TEXTURE_MAG_FILTER '''
: Die Textur-Vergrößerungsfunktion wird benutzt wenn das zu texturierenden Pixel durch eine Fläche, die größer oder gleich einem Texturelement ist, texturiert werden soll.
+
: Die Textur-Vergrößerungsfunktion wird benutzt wenn das zu texturierenden Pixel durch eine Fläche, die größer oder gleich einem Texturelement ist, texturiert werden soll. (siehe [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter| Texturfilterbeispiele]])
 
: Die Funktion kann dabei auf einen der folgenden Werte gesetzt werden:
 
: Die Funktion kann dabei auf einen der folgenden Werte gesetzt werden:
  
 
: '''GL_NEAREST'''
 
: '''GL_NEAREST'''
<b><i>
+
:: Liefert den Wert des Texturelements, welches am nächsten (in [[Manhattandistanz]]) zum Zentrum des zu texturierenden Pixels liegt.
:: Liefert den Wert des Texturelements, welches am nächsten (in [[Manhattendistanz]]) zum Zentrum des zu texturierenden Pixels liegt.
+
 
</i></b>
 
 
: '''GL_LINEAR'''
 
: '''GL_LINEAR'''
<b><i>
+
:: Liefert den gewichteten Mittelwert der vier Teexturenelemente zurück, die dem Zentrum des zu texturierenden Pixels am nächsten sind. Dies kann Randpixel-Elemente einschliessen, je nachdem wie '''GL_TEXTURE_WRAP_S''' und '''GL_TEXTURE_WRAP_T''' eingestellt sind.
:: Returns the weighted average of the four texture elements that are closest to the center of the pixel being textured. These can include border texture elements, depending on the values of GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T, and on the exact mapping.
+
: GL_NEAREST is generally faster than GL_LINEAR, but it can produce textured images with sharper edges because the transition between texture elements is not as smooth. The default value of GL_TEXTURE_MAG_FILTER is GL_LINEAR.  
+
: '''GL_NEAREST''' ist im Normalfall schneller als '''GL_LINEAR''', aber produziert auch Bilder mit schärferen Kanten, da der Übergang zwischen den Texturelementen nicht so weich ist. Voreinstellung für '''GL_TEXTURE_MAG_FILTER''' ist '''GL_LINEAR'''.
</i></b>
+
 
 +
'''GL_TEXTURE_MIN_LOD'''
 +
: Setzt den minimalen [[Level of Detail]]-Parameter. Dieser Fließkommazahl-Wert begrenzt die Auswahl der Mipmap mit der höchsten Auflösung (niedrigstens Mipmap-Level). Der Anfangswert ist -1000.
 +
 
 +
'''GL_TEXTURE_MAX_LOD'''
 +
: Setzt den maximalen [[Level of Detail]]-Parameter. Dieser Fließkommazahl-Wert begrenzt die Auswahl der Mipmap mit der niedrigsten Auflösung (höchstes Mipmap-Level). Der Anfangswert ist 1000.
 +
 
 +
'''GL_TEXTURE_BASE_LEVEL'''
 +
: Gibt den Index der niedrigsten definierten Mipmap-Stufe an. Dies ist ein Integer-Wert. Der Anfangswert ist 0.
 +
 
 +
'''GL_TEXTURE_MAX_LEVEL'''
 +
: Gibt den Index der höchsten definierten Mipmap-Stufe an. Dies ist ein Integer-Wert. Der Anfangswert ist 1000.
  
 
'''GL_TEXTURE_WRAP_S '''
 
'''GL_TEXTURE_WRAP_S '''
<b><i>
+
: Setzt den Umwicklungsparameter für die Texturkoordiante s auf folgende Werte:
: Sets the wrap parameter for texture coordinate s to either GL_CLAMP or GL_REPEAT. GL_CLAMP causes s coordinates to be clamped to the range [0,1] and is useful for preventing wrapping artifacts when mapping a single image onto an object. GL_REPEAT causes the integer part of the s coordinate to be ignored; the GL uses only the fractional part, thereby creating a repeating pattern. Border texture elements are accessed only if wrapping is set to GL_CLAMP. Initially, GL_TEXTURE_WRAP_S is set to GL_REPEAT.  
+
 
</i></b>
+
: '''GL_CLAMP'''
 +
:: Die s-Koordinate wird auf die Reichweite [0,1] beschränkt und ist nützlich wenn Umwicklungsartifakte beim Mapping eines einzelnen Bildes auf ein Objekt vermieden werden sollen.
 +
 
 +
: '''GL_CLAMP_TO_BORDER'''
 +
:: Die s-Koordinate wird auf den Bereich [[Bild:Formel_Clamp_To_Border_Range.png]] begrenzt, wobei ''N'' die Größe der Textur in Richtung der Begrenzung ist.
 +
 +
: '''GL_CLAMP_TO_EDGE'''
 +
:: Die s-Koordinate wird auf den Bereich [[Bild:Formel_Clamp_To_Edge_Range.png]] begrenzt, wobei ''N'' die Größe der Textur in Richtung der Begrenzung ist.
 +
 
 +
:'''GL_REPEAT'''
 +
:: Der Ganzzahlanteil der s-Koordinate wird ignoriert, genutzt wird also nur der Nachkommateil, wodurch ein Wiederholungsmuster entsteht.  
 +
 
 +
:'''GL_MIRRORED_REPEAT'''
 +
:: Die s-Koordinate wird auf den Nachkommateil der Texturkoordinate gesetzt, falls der Ganzzahlanteil von s gerade ist. Ist der Ganzzahlanteil von s ungerade wird die s-Texturkoordinate auf ''1 - frac(s)'', wobei ''frac(s)'' für den Nachkommateil von s steht.
 +
 
 +
Randtexturenelemente werden nur dann genutzt, wenn die Umwicklung auf '''GL_CLAMP''' oder '''GL_CLAMP_TO_BORDER''' gesetzt wird. Voreinstellung für '''GL_TEXTURE_WRAP_S''' ist '''GL_REPEAT'''. (siehe [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturwraptypen| Wraptypen]])
 +
 
  
 
'''GL_TEXTURE_WRAP_T'''
 
'''GL_TEXTURE_WRAP_T'''
<b><i>
+
: Setzt den Umwicklungsparameter für die Texturkoordinate auf entweder '''GL_CLAMP, GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT''' oder '''GL_REPEAT'''. Siehe obiges Kapitel für eine genauere Erklärung. Voreinstellung für '''GL_TEXTURE_WRAP_T''' ist '''GL_REPEAT'''. (siehe [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturwraptypen| Wraptypen]])
: Sets the wrap parameter for texture coordinate t to either GL_CLAMP or GL_REPEAT. See the discussion under GL_TEXTURE_WRAP_S. Initially, GL_TEXTURE_WRAP_T is set to GL_REPEAT.  
+
 
</i></b>
+
'''GL_TEXTURE_WRAP_R'''
 +
: Setzt den Wrap-Parameter für die Texturkoordinate r auf entweder '''GL_CLAMP, GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT''' oder '''GL_REPEAT'''. Siehe obige Diskussion unter '''GL_TEXTURE_WRAP_S'''. Initial ist '''GL_TEXTURE_WRAP_R''' auf '''GL_REPEAT''' gesetzt.
 +
 
  
 
'''GL_TEXTURE_BORDER_COLOR '''
 
'''GL_TEXTURE_BORDER_COLOR '''
<b><i>
+
: Setzt die Randfarbe. Der Parameter ''params'' enthält vier Werte, die den RGBA-Farbwert für den Texturenrand darstellen. Ganzzahlfarbwerte werden linear interpretiert, so dass der höchste positive Ganzzahlwert auf 1.0 gemappt wird, und der negativste Wert auf -1.0. Die Werte werden dann auf den Bereich [0,1] beschränkt. Voreinstellung für die Randfarbe ist (0, 0, 0, 0).
: Sets a border color. The params parameter contains four values that comprise the RGBA color of the texture border. Integer color components are interpreted linearly such that the most positive integer maps to 1.0, and the most negative integer maps to -1.0. The values are clamped to the range [0,1] when they are specified. Initially, the border color is (0, 0, 0, 0).
+
 
</i></b>
+
'''GL_TEXTURE_PRIORITY'''
 +
: Gibt die Textur-Residenz-Priorität der momentan gebundenen Textur an. Erlaubte Werte liegen im Bereich [0, 1]. Für mehr Informationen siehe [[glPrioritizeTextures]] und [[glBindTexture]].
 +
 
 +
'''GL_TEXTURE_COMPARE_MODE'''
 +
: Gibt den Textur-Vergleichsmodus für die momentan gebundene [[Tiefentextur]] an. Dies ist eine Textur, deren internes Format '''GL_DEPTH_COMPONENT_*''' ist ( siehe [[glTexImage2D]] ).<br>
 +
 
 +
: Erlaubte Werte sind :
 +
: '''GL_COMPARE_R_TO_TEXTURE'''
 +
:: Bestimmt, dass die interpolierte und begrenzte r-Texturkoordinate mit dem Wert der momentan gebundenen Tiefentextur verglichen wird. Für mehr Details wie der Vergleich berechnet wird, siehe die Diskussion bei '''GL_TEXTURE_COMPARE_FUNC'''. Das Ergebnis des Vergleiches wird der Luminanz, der Intensität oder Alpha zugewiesen ( so wie bei '''GL_DEPTH_TEXTURE_MODE''' angegeben ).
 +
 
 +
: '''GL_NONE'''
 +
:: Gibt an, dass der Luminanz, der Intensität oder Alpha ( so wie bei '''GL_DEPTH_TEXTURE_MODE''' angegeben ) der entsprechende Wert der momentan gebundenen Tiefentextur zugewiesen wird.
 +
 
 +
'''GL_TEXTURE_COMPARE_FUNC'''
 +
: Gibt den Vergleichsoperator an, der benutzt wird, wenn '''GL_TEXTURE_COMPARE_MODE''' auf '''GL_COMPARE_R_TO_TEXTURE''' gesetzt wurde. Erlaubte Werte sind :
 +
 
 +
<div style="margin-left:27px">
 +
{| {{Prettytable_B1}}
 +
|'''Vergleichsfunktion der Textur'''
 +
|'''Berechnetes Ergebnis'''
 +
|-
 +
|'''GL_LEQUAL'''
 +
|[[Bild:Formel_Compare_r_LEQUAL.png]]
 +
|-
 +
|'''GL_GEQUAL'''
 +
|[[Bild:Formel_Compare_r_GEQUAL.png]]
 +
|-
 +
|'''GL_LESS'''
 +
|[[Bild:Formel_Compare_r_LESS.png]]
 +
|-
 +
|'''GL_GREATER'''
 +
|[[Bild:Formel_Compare_r_GREATER.png]]
 +
|-
 +
|'''GL_EQUAL'''
 +
|[[Bild:Formel_Compare_r_EQUAL.png]]
 +
|-
 +
|'''GL_NOTEQUAL'''
 +
|[[Bild:Formel_Compare_r_NOTEQUAL.png]]
 +
|-
 +
|'''GL_ALWAYS'''
 +
|[[Bild:Formel_Compare_r_ALWAYS.png]]
 +
|-
 +
|'''GL_NEVER'''
 +
|[[Bild:Formel_Compare_r_NEVER.png]]
 +
|}
 +
</div>
 +
 
 +
:wobei ''r'' die momentane interpolierte Texturkoordinate ist und ''Dt'' der Tiefentexturwert, der von der aktuell gebundenen Tiefentextur geholt wurde. Das Ergebnis wird entweder der Luminanz, der Intensität oder Alpha zugewiesen (so wie bei '''GL_DEPTH_TEXTURE_MODE''' angegeben).
 +
 
 +
'''GL_DEPTH_TEXTURE_MODE'''
 +
:Spezifiziert eine einzele symbolische Konstante, die angibt wie Tiefenwerte während der Filterung und Texturanwendung behandelt werden sollen. Akzeptierte Werte sind '''GL_LUMINANCE, GL_INTENSITY''' und '''GL_ALPHA'''. Anfangswert ist '''GL_LUMINANCE'''.
 +
 
 +
'''GL_GENERATE_MIPMAP'''
 +
:Spezifiziert einen booleschen Wert, der angibt ob alle Stufen eines Mipmap-Feldes automatisch aktualisiert werden sollen, wenn die Basisstufen-Mipmap verändert wird. Der Anfangswert ist '''GL_FALSE'''.
 +
 
 +
 
 +
 
 +
=== Vergleich zwischen verschiedenen Texturfilter ===
 +
{|{{Prettytable_B1}} width="100%"
 +
|[[Bild:Filter_nearest.png|center]]
 +
|[[Bild:Filter_linear.png|center]]
 +
|[[Bild:Filter_linear_mipmap_linear.png|center]]
 +
|-
 +
|Textur ohne Filterung. 
 +
|Textur mit linearer Filterung.
 +
|Textur mit [[Mipmaps|Mipmapping]] und linearer Filterung.
 +
|-
 +
|'''MAG_FILTER''' : '''GL_NEAREST'''
 +
|'''MAG_FILTER''' : '''GL_LINEAR'''
 +
|'''MAG_FILTER''' : '''GL_LINEAR'''
 +
|-
 +
|'''MIN_FILTER''' : '''GL_NEAREST'''
 +
|'''MIN_FILTER''' : '''GL_LINEAR'''
 +
|'''MIN_FILTER''' : '''GL_LINEAR_MIPMAP_LINEAR'''
 +
|}
  
<br>
+
=== Vergleich zwischen verschiedenen Texturwraptypen ===
 +
{|{{Prettytable_B1}} width="100%"
 +
|
 +
!'''WRAP_S''' : '''GL_CLAMP'''
 +
!'''WRAP_S''' : '''GL_REPEAT'''
 +
|-
 +
!'''WRAP_T''' : '''GL_CLAMP'''
 +
|[[Bild:S_clamp_t_clamp.jpg|center]]
 +
|[[Bild:S_repeat_t_clamp.jpg|center]]
 +
|-
 +
!'''WRAP_T''' : '''GL_REPEAT'''
 +
|[[Bild:S_clamp_t_repeat.jpg|center]]
 +
|[[Bild:S_repeat_t_repeat.jpg|center]]
 +
|}
  
 
== Hinweise ==
 
== Hinweise ==
<b><i>
+
Angenommen Texturen sind aktiviert (durch Aufruf von [[glEnable]] mit dem Argument '''GL_TEXTURE_1D, GL_TEXTURE_2D''' oder '''GL_TEXTURE_3D''') und '''GL_TEXTURE_MIN_FILTER''' ist auf eine der Funktionen gesetzt, die eine Mipmap benötigen. <br>
Angenommen Texturen sind aktiviert(durch Aufruf von glEnable mit dem Argument GL_TEXTURE_1D oder GL_TEXTURE_2D) und GL_TEXTURE_MIN_FILTER ist auf eine der Funktionen gesetzt, die eine Mipmap benötigen. Wenn entweder die Ausmaße des aktuellen Texturbildes(zuvor gesetzt durch Aufruf von glTexImage1D oder glTexImage2D) nicht den Anforderungen für Mipmaps genügen, weniger Texturbilder als nötig definiert sind, oder das Texturenset abweichende Anzahl von Texturkomponenten hat, wirkt sich das aus als ob Texturmapping deaktiviert wäre.
+
Wenn entweder die Ausmaße des aktuellen Texturbildes (zuvor gesetzt durch Aufruf von [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glCopyTexImage1D]] oder [[glCopyTexImage2D]]) nicht den Anforderungen für [[Mipmaps]] genügen oder weniger Texturbilder als nötig definiert sind oder das Texturenset abweichende Anzahlen von Texturkomponenten hat, wirkt sich das aus, als ob Texturmapping deaktiviert wäre.
  
 
Lineare Filterung greift nur in 2D-Texturen auf die vier nächsten Texturelemente zu. Bei 1D-Texturen greift Lineare Filterung auf die zwei nächsten Texturelemente zu.
 
Lineare Filterung greift nur in 2D-Texturen auf die vier nächsten Texturelemente zu. Bei 1D-Texturen greift Lineare Filterung auf die zwei nächsten Texturelemente zu.
  
Suppose texturing is enabled (by calling glEnable with argument GL_TEXTURE_1D or GL_TEXTURE_2D) and GL_TEXTURE_MIN_FILTER is set to one of the functions that requires a mipmap. If either the dimensions of the texture images currently defined (with previous calls to glTexImage1D or glTexImage2D) do not follow the proper sequence for mipmaps, or there are fewer texture images defined than are needed, or the set of texture images have differing numbers of texture components, then it is as if texture mapping were disabled.
 
  
Linear filtering accesses the four nearest texture elements only in 2-D textures. In 1-D textures, linear filtering accesses the two nearest texture elements.
 
</i></b>
 
  
<br>
+
== Änderungen ==
 +
=== Ab OpenGL Version 1.2 ===
 +
'''GL_TEXTURE_3D, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_CLAMP_TO_EDGE, GL_TEXTURE_BASE_LEVEL''' und '''GL_TEXTURE_MAX_LEVEL''' stehen zur Verfügung.
 +
 
 +
=== Ab OpenGL Version 1.3 ===
 +
'''GL_CLAMP_TO_BORDER''' steht zur Verfügung.
 +
 
 +
'''glTexParameter''' spezifiziert die Texturparameter für die aktive Textureinheit, die durch Aufruf von [[glActiveTexture]] gesetzt wird. ( oder schon vorher, falls die [[ARB_multitexture]]-Erweiterung unterstützt wird )
 +
 
 +
=== Ab OpenGL Version 1.4 ===
 +
'''GL_MIRRORED_REPEAT, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE''' und '''GL_GENERATE_MIPMAP''' stehen zur Verfügung.
 +
 
 +
=== Ab OpenGL Version 1.5 ===
 +
'''GL_TEXTURE_COMPARE_FUNC''' erlaubt die zusätzlichen Vergleichsmodi '''GL_LESS, GL_GREATER, GL_EQUAL, GL_NOTEQUAL, GL_ALWAYS''' und '''GL_NEVER'''.
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_Enum''' wird generiert wenn ''target'' oder ''pname'' kein gültiger Wert übergeben wurde, oder wenn ''params'' einen definierten, konstanten Wert (basierend auf den Wert von ''pname'') erwartet und diesen nicht bekommt.<br>
+
'''GL_INVALID_ENUM''' wird generiert, wenn ''target'' oder ''pname'' kein gültiger Wert übergeben wurde, oder wenn ''params'' einen definierten, konstanten Wert (basierend auf den Wert von ''pname'') erwartet und diesen nicht bekommt.
'''GL_INVALID_OPERATION''' wird generiert wenn '''glTexParameter''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
+
 
 +
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glTexParameter''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.
 +
 
 +
 
 +
 
 +
== Zugehörige Wertrückgaben ==
 +
[[glGetTexParameter]]
  
<br>
 
==  Zugehörige Wertrückgaben ==
 
[[glGetTexParameter]]<br>
 
 
[[glGetTexLevelParameter]]
 
[[glGetTexLevelParameter]]
  
<br>
+
 
 +
 
 +
== Links ==
 +
http://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml
 +
 
 +
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glTexEnv]], [[glTexImage1D]], [[glTexImage2D]], [[glTexGen]]  
+
[[glActiveTexture]], [[glBindTexture]], [[glCopyPixels]], [[glCopyTexImage1D]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glCopyTexSubImage3D]], [[glDrawPixels]], [[glPixelStore]], [[glPixelTransfer]], [[glPrioritizeTextures]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]]
  
 
[[Kategorie:GL|TexParameter]]
 
[[Kategorie:GL|TexParameter]]
 +
[[Kategorie:GL1.0|TexParameter]]

Aktuelle Version vom 22. Juni 2011, 04:03 Uhr

Hinweis: Diesem Artikel sollten folgende Bilder beigefügt werden:

(Mehr Informationen/weitere Artikel)
Bildwunsch.jpg
Bitte Bilder für die seit 1.1 neu hinzugekommenen Parameter ergänzen.

glTexParameter

Name

glTexParameter Setzen von Textureigenschaften.


Delphi-Spezifikation

procedure glTexParameterf(target: TGLenum; pname: TGLenum; param: TGLfloat);
procedure glTexParameteri(target: TGLenum; pname: TGLenum; param: TGLint);


Parameter

target Bestimmt die Zieltextur welche GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D oder GL_TEXTURE_CUBE_MAP sein kann.
pname Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:
GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_WRAP_R, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_PRIORITY, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE oder GL_GENERATE_MIPMAP.
param Enthält den Wert für pname.


Delphi-Spezifikation

procedure glTexParameterfv(target: TGLenum; pname: TGLenum; const params: PGLfloat);
procedure glTexParameteriv(target: TGLenum; pname: TGLenum; const params: PGLint);


Parameter

target Bestimmt die Zieltextur welche GL_TEXTURE_1D, GL_TEXTURE_2D oder GL_TEXTURE_3D sein kann.
pname Bestimmt den symbolischen Namen eines Parameters der einen Einzelwert enthält. Folgende Werte werden akzeptiert:
GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_WRAP_R, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_BORDER_COLOR, GL_TEXTURE_PRIORITY, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE oder GL_GENERATE_MIPMAP.
params Ist ein Zeiger auf ein Feld welches die oder den Wert für pname enthält.


Beschreibung

Texturmapping ist eine Technik die Bilder (oder Ausschnitte von Bildern) auf die Oberfläche von Objekten "aufklebt". Man kann sich dies tatsächlich so vorstellen wie das aufkleben von Tapeten an Wände. Das Bild wir im Texturenraum, welcher über ein (s,t) Koordinatensystem verfügt, erstellt. Eine Textur ist ein ein-, zwei- und mittlerweile auch dreidimensionales Bild inklusive einiger Parameter die bestimmen wie Texturen/Texturausschnitte aus dem Bild gewonnen werden sollen.

Mit der Funktion glTexParameter kann man den mit pname ausgewiesenen Parametern die Werte zuweisen, die man über params spezifiziert hat. target wiederum definiert den Typ der Zieltextur. Als Werte werden GL_TEXTURE_1D, GL_TEXTURE_2D oder GL_TEXTURE_3D akzeptiert. Die folgenden symbolischen Werte kann man dem Parameter pname zuweisen:

GL_TEXTURE_MIN_FILTER

Die Texturen-Verkleinerungsfunktion wird immer dann genutzt, wenn der zu texturierende Pixel auf eine Fläche gemappt wird, die größer als ein Texturenelement ist. Es gibt sechs definierte Verkleinerungsfunktionen, zwei davon nutzen den nächsten bzw. die nächsten vier Texturenelemente um den Texturenwert zu berechnen. Die anderen vier benutzen MipMaps. (siehe Texturfilterbeispiele)
Eine MipMap ist ein sortierter Satz von Bildern, der das selbe Bild in progressiv kleineren Auflösungen darstellt. Wenn die Texturendimension 2^n * 2^n entsprocht, gibt es Maximum(n, m) + 1 MipMaps. Die erste MipMap ist die original Textur, deren Dimension 2^n * 2^n* beträgt. Jede folgende MipMap entspricht dann der Dimension 2^k(-1) * 2^l(-1), wobei 2^k * 2^l die Dimension der vorherigen MipMap darstellen. Dies wird solange vollzogen bis entweder k oder l gleich 0 ist. Ab dieem Punkt haben folgende MipMaps Dimensionen vom Format 1*2^l-1 oder 2^k-1*1, bis zur finalen Mipmap, die 1*1 Pixel groß ist. MipMaps werden über glTexImage1D, glTexImage2D, glTexImage3D, glCopyTexImage1D oder glCopyTexImage2D über den Detaillevel-Parameter spezifiziert. Level 0 ist die original Textur, Level Maximum(n, m) ist dann die finale 1*1 MipMap. Mittels der GLU-Bibliothek lassen sich MipMaps übrigens direkt generieren, dazu gibt es die Befehle gluBuild1DMipmaps, gluBuild2DMipmaps und gluBuild3DMipmaps.
params liefert folgende Funktionen zur Verkleinerung von Texturen. Dies wären:
GL_NEAREST
Liefert den Wert des Texturelements, welches am nächsten (in Manhattandistanz) zum Zentrum des zu texturierenden Pixels liegt.
GL_LINEAR
Liefert den gewichteten Mittelwert der vier Texturenelemente die dem Zentrum des zu texturierenden Pixels am nächsten liegen. Dies kann Randpixel-Elemente einschliessen, je nachdem wie GL_TEXTURE_WRAP_S und GL_TEXTURE_WRAP_T eingestellt sind.
GL_NEAREST_MIPMAP_NEAREST
Wählt die MipMap, die der Größe des zu texturierenden Pixels am besten entspricht, und nutzt die Kriterien von GL_NEAREST um den Texturenwert zu generieren.
GL_LINEAR_MIPMAP_NEAREST
Wählt die MipMap, die der Größe des zu texturierenden Pixels am besten entspricht, und nutzt die Kriterien von GL_LINEAR um den Texturenwert zu generieren.
GL_NEAREST_MIPMAP_LINEAR
Wählt die zwei MipMaps, die der Größe des zu texturierenden Pixels am besten entsprechen, und nutzt die Kriterien von GL_NEAREST um Texturenwerte aus jeder MipMap zu generieren. Der endgültige Texturenwert ist das gewichtete Mittel aus diesen beiden Werten.
GL_LINEAR_MIPMAP_LINEAR
Wählt die zwei MipMaps, die der Größe des zu texturierenden Pixels am besten entsprechen, und nutzt die Kriterien von GL_LINEAR um Texturenwerte aus jeder MipMap zu generieren. Der endgültige Texturenwert ist das gewichtete Mittel aus diesen beiden Werten.
Je mehr Texturenelemente im Verkleinerungsprozess genutzt werden, desto weniger Kantenartifakte werden sichtbar. Während GL_NEAREST und GL_LINEAR-Verkleinerungsfunktionen schneller als die anderen sind, ermitteln sie nur einen bzw. vier Texturenwerte um den endgültigen Texturenwert des zu texturierenden Pixels zu ermitteln, wodurch eher Moiré-Muster oder rauhe Übergänge entstehen. Voreinstellung für GL_TEXTURE_MIN_FILTER ist GL_NEAREST_MIPMAP_LINEAR.


GL_TEXTURE_MAG_FILTER

Die Textur-Vergrößerungsfunktion wird benutzt wenn das zu texturierenden Pixel durch eine Fläche, die größer oder gleich einem Texturelement ist, texturiert werden soll. (siehe Texturfilterbeispiele)
Die Funktion kann dabei auf einen der folgenden Werte gesetzt werden:
GL_NEAREST
Liefert den Wert des Texturelements, welches am nächsten (in Manhattandistanz) zum Zentrum des zu texturierenden Pixels liegt.
GL_LINEAR
Liefert den gewichteten Mittelwert der vier Teexturenelemente zurück, die dem Zentrum des zu texturierenden Pixels am nächsten sind. Dies kann Randpixel-Elemente einschliessen, je nachdem wie GL_TEXTURE_WRAP_S und GL_TEXTURE_WRAP_T eingestellt sind.
GL_NEAREST ist im Normalfall schneller als GL_LINEAR, aber produziert auch Bilder mit schärferen Kanten, da der Übergang zwischen den Texturelementen nicht so weich ist. Voreinstellung für GL_TEXTURE_MAG_FILTER ist GL_LINEAR.

GL_TEXTURE_MIN_LOD

Setzt den minimalen Level of Detail-Parameter. Dieser Fließkommazahl-Wert begrenzt die Auswahl der Mipmap mit der höchsten Auflösung (niedrigstens Mipmap-Level). Der Anfangswert ist -1000.

GL_TEXTURE_MAX_LOD

Setzt den maximalen Level of Detail-Parameter. Dieser Fließkommazahl-Wert begrenzt die Auswahl der Mipmap mit der niedrigsten Auflösung (höchstes Mipmap-Level). Der Anfangswert ist 1000.

GL_TEXTURE_BASE_LEVEL

Gibt den Index der niedrigsten definierten Mipmap-Stufe an. Dies ist ein Integer-Wert. Der Anfangswert ist 0.

GL_TEXTURE_MAX_LEVEL

Gibt den Index der höchsten definierten Mipmap-Stufe an. Dies ist ein Integer-Wert. Der Anfangswert ist 1000.

GL_TEXTURE_WRAP_S

Setzt den Umwicklungsparameter für die Texturkoordiante s auf folgende Werte:
GL_CLAMP
Die s-Koordinate wird auf die Reichweite [0,1] beschränkt und ist nützlich wenn Umwicklungsartifakte beim Mapping eines einzelnen Bildes auf ein Objekt vermieden werden sollen.
GL_CLAMP_TO_BORDER
Die s-Koordinate wird auf den Bereich Formel Clamp To Border Range.png begrenzt, wobei N die Größe der Textur in Richtung der Begrenzung ist.
GL_CLAMP_TO_EDGE
Die s-Koordinate wird auf den Bereich Formel Clamp To Edge Range.png begrenzt, wobei N die Größe der Textur in Richtung der Begrenzung ist.
GL_REPEAT
Der Ganzzahlanteil der s-Koordinate wird ignoriert, genutzt wird also nur der Nachkommateil, wodurch ein Wiederholungsmuster entsteht.
GL_MIRRORED_REPEAT
Die s-Koordinate wird auf den Nachkommateil der Texturkoordinate gesetzt, falls der Ganzzahlanteil von s gerade ist. Ist der Ganzzahlanteil von s ungerade wird die s-Texturkoordinate auf 1 - frac(s), wobei frac(s) für den Nachkommateil von s steht.

Randtexturenelemente werden nur dann genutzt, wenn die Umwicklung auf GL_CLAMP oder GL_CLAMP_TO_BORDER gesetzt wird. Voreinstellung für GL_TEXTURE_WRAP_S ist GL_REPEAT. (siehe Wraptypen)


GL_TEXTURE_WRAP_T

Setzt den Umwicklungsparameter für die Texturkoordinate auf entweder GL_CLAMP, GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT oder GL_REPEAT. Siehe obiges Kapitel für eine genauere Erklärung. Voreinstellung für GL_TEXTURE_WRAP_T ist GL_REPEAT. (siehe Wraptypen)

GL_TEXTURE_WRAP_R

Setzt den Wrap-Parameter für die Texturkoordinate r auf entweder GL_CLAMP, GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT oder GL_REPEAT. Siehe obige Diskussion unter GL_TEXTURE_WRAP_S. Initial ist GL_TEXTURE_WRAP_R auf GL_REPEAT gesetzt.


GL_TEXTURE_BORDER_COLOR

Setzt die Randfarbe. Der Parameter params enthält vier Werte, die den RGBA-Farbwert für den Texturenrand darstellen. Ganzzahlfarbwerte werden linear interpretiert, so dass der höchste positive Ganzzahlwert auf 1.0 gemappt wird, und der negativste Wert auf -1.0. Die Werte werden dann auf den Bereich [0,1] beschränkt. Voreinstellung für die Randfarbe ist (0, 0, 0, 0).

GL_TEXTURE_PRIORITY

Gibt die Textur-Residenz-Priorität der momentan gebundenen Textur an. Erlaubte Werte liegen im Bereich [0, 1]. Für mehr Informationen siehe glPrioritizeTextures und glBindTexture.

GL_TEXTURE_COMPARE_MODE

Gibt den Textur-Vergleichsmodus für die momentan gebundene Tiefentextur an. Dies ist eine Textur, deren internes Format GL_DEPTH_COMPONENT_* ist ( siehe glTexImage2D ).
Erlaubte Werte sind :
GL_COMPARE_R_TO_TEXTURE
Bestimmt, dass die interpolierte und begrenzte r-Texturkoordinate mit dem Wert der momentan gebundenen Tiefentextur verglichen wird. Für mehr Details wie der Vergleich berechnet wird, siehe die Diskussion bei GL_TEXTURE_COMPARE_FUNC. Das Ergebnis des Vergleiches wird der Luminanz, der Intensität oder Alpha zugewiesen ( so wie bei GL_DEPTH_TEXTURE_MODE angegeben ).
GL_NONE
Gibt an, dass der Luminanz, der Intensität oder Alpha ( so wie bei GL_DEPTH_TEXTURE_MODE angegeben ) der entsprechende Wert der momentan gebundenen Tiefentextur zugewiesen wird.

GL_TEXTURE_COMPARE_FUNC

Gibt den Vergleichsoperator an, der benutzt wird, wenn GL_TEXTURE_COMPARE_MODE auf GL_COMPARE_R_TO_TEXTURE gesetzt wurde. Erlaubte Werte sind :
Vergleichsfunktion der Textur Berechnetes Ergebnis
GL_LEQUAL Formel Compare r LEQUAL.png
GL_GEQUAL Formel Compare r GEQUAL.png
GL_LESS Formel Compare r LESS.png
GL_GREATER Formel Compare r GREATER.png
GL_EQUAL Formel Compare r EQUAL.png
GL_NOTEQUAL Formel Compare r NOTEQUAL.png
GL_ALWAYS Formel Compare r ALWAYS.png
GL_NEVER Formel Compare r NEVER.png
wobei r die momentane interpolierte Texturkoordinate ist und Dt der Tiefentexturwert, der von der aktuell gebundenen Tiefentextur geholt wurde. Das Ergebnis wird entweder der Luminanz, der Intensität oder Alpha zugewiesen (so wie bei GL_DEPTH_TEXTURE_MODE angegeben).

GL_DEPTH_TEXTURE_MODE

Spezifiziert eine einzele symbolische Konstante, die angibt wie Tiefenwerte während der Filterung und Texturanwendung behandelt werden sollen. Akzeptierte Werte sind GL_LUMINANCE, GL_INTENSITY und GL_ALPHA. Anfangswert ist GL_LUMINANCE.

GL_GENERATE_MIPMAP

Spezifiziert einen booleschen Wert, der angibt ob alle Stufen eines Mipmap-Feldes automatisch aktualisiert werden sollen, wenn die Basisstufen-Mipmap verändert wird. Der Anfangswert ist GL_FALSE.


Vergleich zwischen verschiedenen Texturfilter

Filter nearest.png
Filter linear.png
Filter linear mipmap linear.png
Textur ohne Filterung. Textur mit linearer Filterung. Textur mit Mipmapping und linearer Filterung.
MAG_FILTER : GL_NEAREST MAG_FILTER : GL_LINEAR MAG_FILTER : GL_LINEAR
MIN_FILTER : GL_NEAREST MIN_FILTER : GL_LINEAR MIN_FILTER : GL_LINEAR_MIPMAP_LINEAR

Vergleich zwischen verschiedenen Texturwraptypen

WRAP_S : GL_CLAMP WRAP_S : GL_REPEAT
WRAP_T : GL_CLAMP
S clamp t clamp.jpg
S repeat t clamp.jpg
WRAP_T : GL_REPEAT
S clamp t repeat.jpg
S repeat t repeat.jpg

Hinweise

Angenommen Texturen sind aktiviert (durch Aufruf von glEnable mit dem Argument GL_TEXTURE_1D, GL_TEXTURE_2D oder GL_TEXTURE_3D) und GL_TEXTURE_MIN_FILTER ist auf eine der Funktionen gesetzt, die eine Mipmap benötigen.
Wenn entweder die Ausmaße des aktuellen Texturbildes (zuvor gesetzt durch Aufruf von glTexImage1D, glTexImage2D, glTexImage3D, glCopyTexImage1D oder glCopyTexImage2D) nicht den Anforderungen für Mipmaps genügen oder weniger Texturbilder als nötig definiert sind oder das Texturenset abweichende Anzahlen von Texturkomponenten hat, wirkt sich das aus, als ob Texturmapping deaktiviert wäre.

Lineare Filterung greift nur in 2D-Texturen auf die vier nächsten Texturelemente zu. Bei 1D-Texturen greift Lineare Filterung auf die zwei nächsten Texturelemente zu.


Änderungen

Ab OpenGL Version 1.2

GL_TEXTURE_3D, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_CLAMP_TO_EDGE, GL_TEXTURE_BASE_LEVEL und GL_TEXTURE_MAX_LEVEL stehen zur Verfügung.

Ab OpenGL Version 1.3

GL_CLAMP_TO_BORDER steht zur Verfügung.

glTexParameter spezifiziert die Texturparameter für die aktive Textureinheit, die durch Aufruf von glActiveTexture gesetzt wird. ( oder schon vorher, falls die ARB_multitexture-Erweiterung unterstützt wird )

Ab OpenGL Version 1.4

GL_MIRRORED_REPEAT, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_DEPTH_TEXTURE_MODE und GL_GENERATE_MIPMAP stehen zur Verfügung.

Ab OpenGL Version 1.5

GL_TEXTURE_COMPARE_FUNC erlaubt die zusätzlichen Vergleichsmodi GL_LESS, GL_GREATER, GL_EQUAL, GL_NOTEQUAL, GL_ALWAYS und GL_NEVER.

Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn target oder pname kein gültiger Wert übergeben wurde, oder wenn params einen definierten, konstanten Wert (basierend auf den Wert von pname) erwartet und diesen nicht bekommt.

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


Zugehörige Wertrückgaben

glGetTexParameter

glGetTexLevelParameter


Links

http://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml


Siehe auch

glActiveTexture, glBindTexture, glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glDrawPixels, glPixelStore, glPixelTransfer, glPrioritizeTextures, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D