pixelsArray = gl.GetTexImage(target, level, format)
gl.GetTexImage()
gibt die Pixel eines Texturbildes zurück. Eindimensionale
Texturen werden in einer eindimensionalen Tabelle zurückgegeben, während
zweidimensionale Texturen in einer Tabelle zurückgegeben werden, die
Untertabellen für alle Zeilen der Textur enthält. Die Pixel werden als Werte
vom Typ #GL_FLOAT
zurückgegeben. target
gibt an, ob das gewünschte Texturbild
eines ist, das durch gl.TexImage1D() (#GL_TEXTURE_1D
)
oder gl.TexImage2D() (#GL_TEXTURE_2D
) angegeben wird.
level
gibt die Detaillierungsstufe des gewünschten Bildes an. format
gibt das Format des gewünschten Bildfeldes an.
Siehe gl.TexImage2D für eine Beschreibung der zulässigen Werte für den Formatparameter..
Um die Funktionsweise von gl.GetTexImage()
zu verstehen, betrachten Sie das
ausgewählte interne Vierkomponenten-Texturbild als einen RGBA-Farbpuffer in
der Größe des Bildes. Die Semantik von gl.GetTexImage()
ist dann identisch mit
gl.ReadPixels(), mit der Ausnahme, dass keine
Pixelübertragungsoperationen durchgeführt werden, wenn sie mit dem gleichen
Format und Typ aufgerufen werden, wobei x und y auf 0 gesetzt sind, die Breite
auf die Breite des Texturbildes (einschließlich Rand, wenn einer angegeben
wurde) und die Höhe auf 1 für 1D-Bilder oder auf die Höhe des Texturbildes
(einschließlich Rand, wenn einer angegeben wurde) für 2D-Bilder eingestellt
ist. Da das interne Texturbild ein RGBA-Bild ist, werden die Pixelformate
#GL_COLOR_INDEX
, #GL_STENCIL_INDEX
und #GL_DEPTH_COMPONENT
sowie der Pixeltyp
#GL_BITMAP
nicht akzeptiert.
Wenn das ausgewählte Texturbild keine vier Komponenten enthält, werden die folgenden Zuordnungen angewendet: Einkomponenten-Texturen werden als RGBA-Puffer mit Rot auf den Einkomponentenwert, Grün auf 0, Blau auf 0 und Alpha auf 1 gesetzt. Zweikomponenten-Texturen werden als RGBA-Puffer mit Rot auf den Wert der Komponente 0, Alpha auf den Wert der Komponente 1 und Grün und Blau auf 0 gesetzt. 3-Komponenten-Texturen werden schließlich als RGBA-Puffer mit Rot auf Komponente 0, Grün auf Komponente 1, Blau auf Komponente 2 und Alpha auf 1 gesetzt.
Wenn Sie eine fein abgestimmte Kontrolle über den Pixeltyp haben möchten oder wenn Sie wollen, dass die Pixel in einen Speicherpuffer anstelle einer Tabelle geschrieben werden, können Sie den Befehl gl.GetTexImageRaw() verwenden.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_TEXTURE_1D
oder #GL_TEXTURE_2D
sein)#GL_RED
, #GL_GREEN
, #GL_BLUE
, #GL_ALPHA
, #GL_RGB
, #GL_RGBA
, #GL_LUMINANCE
und #GL_LUMINANCE_ALPHA
#GL_INVALID_ENUM
wird erzeugt, wenn target
oder format
kein akzeptierter Wert ist.
#GL_INVALID_VALUE
wird erzeugt, wenn level
kleiner als Null oder größer als
ld(max) ist, wobei max
der Rückgabewert von #GL_MAX_TEXTURE_SIZE
ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.GetTexImage()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_TEXTURE_WIDTH
gl.GetTexLevelParameter() mit dem Argument #GL_TEXTURE_HEIGHT
gl.GetTexLevelParameter() mit dem Argument #GL_TEXTURE_BORDER
gl.GetTexLevelParameter() mit dem Argument #GL_TEXTURE_COMPONENTS
gl.Get() mit dem Argumente #GL_PACK_ALIGNMENT
und andere