glGetTexImage

Aus DGL Wiki
Wechseln zu: Navigation, Suche

glGetTexImage

Name

glGetTexImage - liefert ein Texturbild.


Delphi-Spezifikation

procedure glGetTexImage(target: TGLenum; level: TGLint; format: TGLenum; _type: TGLenum; pixels: PGLvoid);


Parameter

target Gibt an, welche Texture erreicht werden soll.GL_TEXTURE_1D, GL_TEXTURE_2D und GL_TEXTURE_3D werden akzeptiert.
level Gibt den Detailgrad für das gewünschte Bild an.
Level 0 ist das Basisbild. Level n ist die n-te Mipmap reduzierung des Bildes.
format Bestimmt das Pixelformat für den Inhalt von pixels. Folgende Formate werden unterstützt:
GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_BGR, GL_BGRA, GL_LUMINANCE, GL_LUMINANCE_ALPHA
_type Bestimmt den Pixeltyp für den Inhalt von pixels. Folgende Typen werden unterstützt:
GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2 und GL_UNSIGNED_INT_2_10_10_10_REV.
pixels Liefert das Texturbild. pixels ist ein Pointer auf ein Feld(array) vom Typ type.



Beschreibung

glGetTexImage liefert ein Texturbild über pixels zurück. target bestimmt, ob die gewünschte Textur via glTexImage1D(GL_TEXTURE_1D), glTexImage2D (GL_TEXTURE_2D, oder glTexImage3D(GL_TEXTURE_3D) erstellt wurde. level gibt den Detailsgrad (LOD - Level of Detail) für das gewünschte Bild an. format und type geben das Format und den Typ des gewünschten Bildfeld (Image array) an. Für genauere Informationen zu den Werten für type und format, lesen Sie bitte die Artikel glTexImage1D und glDrawPixels.

Am besten versteht man die Arbeitsweise von glGetTeximage, wenn man sich das interne vier-Komponenten Texturbild als einen RGBA Farbpuffer mit der Größe des Bildes vorstellt. Der Aufruf von glGetTexImage entspräche dann einem Aufruf von glReadPixels mit:

den gleichen Werten für format und type,
x, y gleich null,
width gleich der Breite des Texturbildes (inklusive Rand, wenn einer definiert wurde) und
height = 1 für 1D Bilder oder der Höhe des Texturbildes (inklusive Rand, wenn einer definiert wurde) für 2D Bilder.

Wenn die ausgewählte Textur weniger als vier Komponenten besitzt, wird folgendermaßen vorgegangen:

Texturen mit nur einer Komponente werden behandelt wie ein RGBA Puffer der in der Rot-Komponente die Werte enthält und dessen restliche Komponenten auf 0 gesetzt sind.
Zwei-Komponenten-Texturen werden behandelt wie ein RGBA Puffer der in der Rot-Komponente die Werte der 0ten Komponente, der in der Grün-Komponente die Werte der 1ten Komponente enthält und dessen restliche Komponenten auf 0 gesetzt sind.
Drei-Komponenten-Texturen werden behandelt wie ein RGBA Puffer der in der Rot-Komponente die Werte der 0ten Komponente, in der Grün-Komponente die Werte der 1ten Komponente und in der Blau-Komponente die Werte der 2ten Komponente enthält und dessen Alpha-Komponenten auf 0 gesetzt ist.

Um die benötigte Größe für das Feld (pixels) zu ermitteln, benutzen Sie glGetTexLevelParameter. Anschließend skalieren Sie die benötigte Anzahl der Pixel anhand des Speicherplatzes der für jedes Pixel benötigt wird. Dieser basiert auf format und type. Vergessen Sie nicht die Pixelspeicherparameter in die Berechnung einzubeziehen, vor allem GL_PACK_ALIGNMENT.


Hinweise

Da das interne Texturbild ein RGBA Bild ist, werden folgende Pixelformate nicht unterstützt: GL_COLOR_INDEX, GL_STENCIL_INDEX, und GL_DEPTH_COMPONENT.

Der Pixeltyp GL_BITMAP wird ebenfalls nicht unterstützt.

Wenn während der Ausführung der Funktion ein Fehler ausgelöst wird, werden keine Veränderungen am Inhalt von pixels durchgeführt.


Fehlermeldungen

GL_INVALID_ENUM wird generiert wenn taget, format oder type ein ungültiger Wert übergeben wurde.
GL_INVALID_VALUE wird generiert wenn level kleiner 0 oder größer ld(max) ist, wobei max der Rückgabewert von GL_MAX_TEXTURE_SIZE ist. (ld = Logarithmus Dualis = Basis 2)
GL_INVALID_OPERATION wird generiert wenn glGetTexImage innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGetTexLevelParameter mit Token GL_TEXTURE_WIDTH
glGetTexLevelParameter mit Token GL_TEXTURE_HEIGHT
glGetTexLevelParameter mit Token GL_TEXTURE_BORDER
glGetTexLevelParameter mit Token GL_TEXTURE_COMPONENTS
glGet mit Token GL_PACK_ALIGNMENT



Siehe auch

glDrawPixels, glReadPixels, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D, glTexParameter