Bezeichnung
gl.GetTexImageRaw -- gibt ein Texturbild zurück
Übersicht
gl.GetTexImageRaw(target, level, format, type, pixels)
Beschreibung
gl.GetTexImageRaw() schreibt die Pixel eines Texturbildes in pixels. Dies muss ein Speicherpuffer sein, der von dem Hollywood-Befehl AllocMem() zugewiesen und von GetMemPointer() zurückgegeben wird. Um die erforderliche Größe der pixels zu bestimmen, verwenden Sie gl.GetTexLevelParameter(), um die Abmessungen des internen Texturbildes zu bestimmen und skalieren dann die erforderliche Anzahl von Pixeln durch den für jedes Pixel erforderlichen Speicherplatz, basierend auf format und type. Achten Sie darauf, dass Sie die Pixelspeicherparameter berücksichtigen, insbesondere #GL_PACK_ALIGNMENT.

Die unterstützten Werte für format sind #GL_RED, #GL_GREEN, #GL_BLUE, #GL_ALPHA, #GL_RGB, #GL_RGBA, #GL_LUMINANCE und #GL_LUMINANCE_ALPHA.

Unterstützte Datentypen für type sind #GL_UNSIGNED_BYTE, #GL_BYTE, #GL_UNSIGNED_SHORT, #GL_SHORT, #GL_UNSIGNED_INT, #GL_INT und #GL_FLOAT.

Die Pixel werden als Werte vom Typ type in den Speicherpuffer geschrieben. 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.GetTexImageRaw() zu verstehen, betrachten Sie das ausgewählte interne Vierkomponenten-Texturbild als einen RGBA-Farbpuffer in der Größe des Bildes. Die Semantik von gl.GetTexImageRaw() ist dann identisch mit der von 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) eingestellt wird für 2D-Bilder. 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 möchten, dass die Pixel in einer Tabelle anstelle eines Speicherpuffers zurückgegeben werden, können Sie den Befehl gl.GetTexImage() verwenden. Siehe Mit Zeigern arbeiten für Details zur Verwendung von Speicherzeigern mit Hollywood.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
target
gibt an, welche Textur erhalten werden soll (muss #GL_TEXTURE_1D oder #GL_TEXTURE_2D sein)
level
gibt die Detaillierungsstufe des gewünschten Bildes an; Stufe 0 ist die Basis-Bildebene; Stufe n ist das n-te Mipmap-Reduktionsbild
format
gibt ein Pixelformat für die zurückgegebenen Daten an (siehe oben)
type
gibt einen Pixeltyp für die zurückgegebenen Daten an (siehe oben)
pixels
zeigt auf einen Speicherpuffer, um die Pixel in den Speicher zu schreiben
Fehler
#GL_INVALID_ENUM wird erzeugt, wenn target, type 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.GetTexImageRaw() zwischen gl.Begin() und gl.End() ausgeführt wird.

Verbundene get-operationen
gl.GetTexLevelParameter() mit dem Argument #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


Navigation zeigen