gl.TexImage1D(level, internalformat, width, border, format, type, pixels)
#GL_TEXTURE_1D
auf.
Texturbilder werden mit gl.TexImage1D()
definiert. Die Argumente beschreiben
die Parameter des Texturbildes, wie Breite, Breite des Rahmens, Anzahl der
Detailstufen (siehe gl.TexParameter()), sowie die interne
Auflösung und das Format, das zum Speichern des Bildes verwendet wird. Die
letzten drei Argumente beschreiben, wie das Bild im Speicher dargestellt
wird; sie sind identisch mit den Pixelformaten für
gl.DrawPixels().
Daten werden von pixels
als eine Folge von vorzeichenbehafteten oder
vorzeichenlose Bytes, Shorts oder Longs oder einfach präzisen
Gleitkommawerten gelesen, je nach type
. Diese Werte werden je nach format
in Gruppen von einem, zwei, drei oder vier Werten zu Elementen zusammengefasst.
Wenn der Typ #GL_BITMAP
ist, werden die Daten als eine Zeichenkette von
vorzeichenlose Bytes betrachtet (und das Format muss #GL_COLOR_INDEX
sein).
Jedes Datenbyte wird als acht 1-Bit-Elemente behandelt, wobei die
Bitreihenfolge durch #GL_UNPACK_LSB_FIRST
bestimmt wird.
Siehe gl.PixelStore für Details.
Das erste Element entspricht dem linken Ende des Texturfeldes. Nachfolgende Elemente gehen von links nach rechts durch die restlichen Texel im Textur-Feld. Das letzte Element entspricht dem rechten Ende des Texturfeldes.
format
bestimmt die Zusammensetzung jedes Elements in Pixeln. Es kann einen
von neun symbolischen Werten annehmen:
#GL_COLOR_INDEX
#GL_INDEX_SHIFT
nach links oder rechts und ergänzt ihn zu #GL_INDEX_OFFSET
(siehe gl.PixelTransfer()). Der resultierende Index wird mit
Hilfe der Tabellen #GL_PIXEL_MAP_I_TO_R
, #GL_PIXEL_MAP_I_TO_G
,
#GL_PIXEL_MAP_I_TO_B
und #GL_PIXEL_MAP_I_TO_A
in eine Reihe von
Farbkomponenten umgewandelt und in den Bereich [0,1] festgelegt.
#GL_RED
#GL_c_SCALE
multipliziert, zur
vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und in den Bereich [0, 1]
festgelegt. Siehe gl.PixelTransfer für Details.
#GL_GREEN
#GL_c_SCALE
multipliziert, zur
vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und in den Bereich [0, 1]
festgelegt. Siehe gl.PixelTransfer für Details.
#GL_BLUE
#GL_c_SCALE
multipliziert, zur
vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und in den Bereich [0, 1]
festgelegt. Siehe gl.PixelTransfer für Details.
#GL_ALPHA
#GL_c_SCALE
multipliziert, zur vorzeichenbehafteten Ausrichtung
#GL_c_BIAS
addiert und in den Bereich [0, 1] festgelegt.
Siehe gl.PixelTransfer für Details.
#GL_RGB
#GL_c_SCALE
multipliziert, zur vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und
in den Bereich [0, 1] festgelegt. Siehe gl.PixelTransfer für Details.
#GL_RGBA
#GL_c_SCALE
multipliziert, zur
vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und in den Bereich [0, 1]
festgelegt. Siehe gl.PixelTransfer für Details.
#GL_LUMINANCE
#GL_c_SCALE
multipliziert, zur vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und
in den Bereich [0, 1] festgelegt. Siehe gl.PixelTransfer für Details.
#GL_LUMINANCE_ALPHA
#GL_c_SCALE
multipliziert, zur
vorzeichenbehafteten Ausrichtung #GL_c_BIAS
addiert und in den Bereich [0, 1]
festgelegt. Siehe gl.PixelTransfer für Details.
#GL_DEPTH_COMPONENT
#GL_DEPTH_SCALE
multipliziert, zur vorzeichenbehafteten Ausrichtung
#GL_DEPTH_BIAS
addiert und in den Bereich [0, 1] festgelegt.
Siehe gl.PixelTransfer für Details.
Wenn eine Anwendung die Textur in einer bestimmten Auflösung oder in einem
bestimmten Format speichern möchte, kann sie die Auflösung und das Format
mit internalformat
anfordern. internalformat
gibt das interne Format des
Textur-Feldes an. Siehe Interne Pixelformate für Details. GL wird
eine interne Darstellung wählen, die der vom internalformat
geforderten
genau entspricht, aber möglicherweise nicht genau übereinstimmt. (Die durch
#GL_LUMINANCE
, #GL_LUMINANCE_ALPHA
, #GL_RGB
und #GL_RGBA
angegebenen
Darstellungen müssen genau übereinstimmen. Die Zahlenwerte 1, 2, 3 und 4
können auch verwendet werden, um die obigen Darstellungen anzugeben.)
Ein Einkomponenten-Texturbild verwendet nur die Rotkomponente der aus Pixeln extrahierten RGBA-Farbe, ein Zweikomponentenbild das R und die A Werte, ein Dreikomponentenbild die Werte R, G und B und ein Vierkomponentenbild verwendet alle RGBA-Komponenten.
Die Texturierung hat im Farbindexmodus keine Wirkung.
Das Texturbild kann durch die gleichen Datenformate dargestellt werden wie
die Pixel in einem gl.DrawPixels(), nur dass
#GL_STENCIL_INDEX
und #GL_DEPTH_COMPONENT
nicht verwendet werden können.
gl.PixelStore() und gl.PixelTransfer()
Modi beeinflussen Texturbilder genau so, wie es gl.DrawPixels() beeinflusst.
Bitte beachten Sie, dass dieser Befehl direkt mit Speicherzeigern arbeitet. Es gibt auch eine Version, die mit Tabellen anstelle von Speicherzeigern arbeitet, aber das ist natürlich langsamer. Siehe gl.TexImage für Details. Siehe Mit Zeigern arbeiten für Details zur Verwendung von Speicherzeigern mit Hollywood.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_INVALID_ENUM
wird erzeugt, wenn format
keine akzeptierte Formatkonstante
ist. Andere Formatkonstanten als #GL_STENCIL_INDEX
werden akzeptiert.
#GL_INVALID_ENUM
wird erzeugt, wenn type
keine Typkonstante ist.
#GL_INVALID_ENUM
wird erzeugt, wenn type
#GL_BITMAP
und format
nicht #GL_COLOR_INDEX
ist.
#GL_INVALID_VALUE
wird erzeugt, wenn level
kleiner als 0 ist.
#GL_INVALID_VALUE
wird erzeugt, wenn level
größer als log2max ist, wobei max
der zurückgegebene Wert von #GL_MAX_TEXTURE_SIZE
ist.
#GL_INVALID_VALUE
wird erzeugt, wenn internalformat
nicht 1, 2, 3, 4 oder
eine der akzeptierten symbolischen Auflösungs- und Formatkonstanten ist.
#GL_INVALID_VALUE
wird erzeugt, wenn width
oder height
kleiner als 0 oder
größer als 2 + #GL_MAX_TEXTURE_SIZE
ist oder wenn beide nicht als 2k + 2*Border
für einen ganzzahligen Wert von k dargestellt werden können.
#GL_INVALID_VALUE
wird erzeugt, wenn border
nicht 0 oder 1 ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.TexImage1D()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
gl.IsEnabled() mit dem Argument #GL_TEXTURE_1D