glGetTexImage: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
()
(Siehe auch)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glGetTexImage =
 
= glGetTexImage =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glGetTexImage''' - liefert ein Texturbild.
+
'''glGetTexImage''' - liefert ein Texturbild.  
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glGetTexImage'''(''target'': TGLenum; ''level'': TGLint; ''format'': TGLenum; ''_type'': TGLenum; ''pixels'': PGLvoid);
 
  procedure '''glGetTexImage'''(''target'': TGLenum; ''level'': TGLint; ''format'': TGLenum; ''_type'': TGLenum; ''pixels'': PGLvoid);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
 
<table border=1 rules=all>
 
<table border=1 rules=all>
Zeile 37: Zeile 40:
 
</table>
 
</table>
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Zeile 56: Zeile 60:
 
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'''.
 
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'''.
  
<br>
+
 
 +
 
 
== Hinweise ==
 
== 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'''.
 
Da das interne Texturbild ein RGBA Bild ist, werden folgende Pixelformate nicht unterstützt: '''GL_COLOR_INDEX, GL_STENCIL_INDEX,''' und '''GL_DEPTH_COMPONENT'''.
Zeile 64: Zeile 69:
 
Wenn während der Ausführung der Funktion ein Fehler ausgelöst wird, werden keine Veränderungen am Inhalt von ''pixels'' durchgeführt.
 
Wenn während der Ausführung der Funktion ein Fehler ausgelöst wird, werden keine Veränderungen am Inhalt von ''pixels'' durchgeführt.
  
<br>
+
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
 
GL_INVALID_ENUM wird generiert wenn ''taget'', ''format'' oder ''type'' ein ungültiger Wert übergeben wurde.<br>
 
GL_INVALID_ENUM wird generiert wenn ''taget'', ''format'' oder ''type'' ein ungültiger Wert übergeben wurde.<br>
Zeile 70: Zeile 76:
 
GL_INVALID_OPERATION wird generiert wenn '''glGetTexImage''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
 
GL_INVALID_OPERATION wird generiert wenn '''glGetTexImage''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
  
<br>
+
 
 +
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
 
[[glGetTexLevelParameter]] mit Token GL_TEXTURE_WIDTH<br>
 
[[glGetTexLevelParameter]] mit Token GL_TEXTURE_WIDTH<br>
Zeile 78: Zeile 85:
 
[[glGet]] mit Token [[glGet#GL_PACK_ALIGNMENT|GL_PACK_ALIGNMENT]]
 
[[glGet]] mit Token [[glGet#GL_PACK_ALIGNMENT|GL_PACK_ALIGNMENT]]
  
<br>
+
 
 +
 
  
 
== Siehe auch ==
 
== Siehe auch ==
Zeile 84: Zeile 92:
  
 
[[Kategorie:GL|GetTexImage]]
 
[[Kategorie:GL|GetTexImage]]
 +
[[Kategorie:GL1.0]]

Aktuelle Version vom 16. April 2007, 01:20 Uhr

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