glGetCompressedTexImage

Aus DGL Wiki
Wechseln zu: Navigation, Suche

glGetCompressedTexImage

Name

glGetCompressedTexImage - liefert ein komprimiertes Texturbild zurück.


Delphi-Spezifikation

procedure glGetCompressedTexImage(target: TGLenum; level: TGLint;
                                  img: PGLvoid);


Parameter

target Gibt die Zieltextur an, welche zurückgeliefert werden soll. GL_TEXTURE_1D, GL_TEXTURE_2D und GL_TEXTURE_3D werden akzeptiert.

Für Cubemaps sind ausserdem die symbolischen Konstanten GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z und GL_TEXTURE_CUBE_MAP_NEGATIVE_Z erlaubt.

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.

img Zeiger auf Speicher, in den die komprimierten Texturdaten geladen werden sollen.



Beschreibung

glGetCompressedTexImage liefert das aktuelle Texturbild über img zurück. Wenn Texturobjekte verwendet werden, so ist es diejenige Textur, welche zuletzt mit glBindTexture aktiviert wurde.

target bestimmt, ob die gewünschte Textur via glCompressedTexImage1D(GL_TEXTURE_1D), glCompressedTexImage2D (GL_TEXTURE_2D, oder glCompressedTexImage3D(GL_TEXTURE_3D) erstellt wurde. Zusätzlich ist es möglich Cubemap-Texturen, die mit glCompressedTexImage2D(GL_CUBE_MAP_*) geladen wurden, zurückzuholen.

level gibt den Detailsgrad (LOD - Level of Detail) für das gewünschte Bild an. Das Format der zurückgelieferten Textur entspricht dem komprimierten Format, das an die Textur beim Laden angegeben wurde. Es kann mit glGetTexLevelParameteriv und dem Parameter GL_TEXTURE_INTERNAL_FORMAT abgefragt werden.

Um genügend Speicher für das Feld (img) zu allokieren, kann mit der Funktion glGetTexLevelParameter und dem Parameter GL_TEXTURE_COMPRESSED_IMAGE_SIZE die benötigte Byteanzahl bestimmt werden.


Hinweise

glGetCompressedTexImage ist erst ab OpenGL Version 1.3 oder höher nutzbar.

Die Befehle glPixelTransfer und glPixelStore werden beim Aufruf von glGetCompressedTexImage komplett ignoriert.

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


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn target 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 glGetCompressedTexImage innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.

GL_INVALID_OPERATION wird generiert, wenn das interne Format der Textur kein Komprimierungsformat war.


Zugehörige Wertrückgaben

glGetTexLevelParameter mit Token GL_TEXTURE_COMPRESSED_IMAGE_SIZE

glGetTexLevelParameter mit Token GL_TEXTURE_INTERNAL_FORMAT


Siehe auch

glCompressedTexImage1D, glCompressedTexImage2D, glCompressedTexImage3D, glCompressedTexSubImage1D, glCompressedTexSubImage2D, glCompressedTexSubImage3D, glGetTexImage, glGetTexLevelParameter, glTexParameter