glGetTexImage: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Parameter)
()
Zeile 14: Zeile 14:
 
<tr>
 
<tr>
 
  <td>''target''</td>
 
  <td>''target''</td>
  <td>Gibt an, welche Texture erreicht werden soll.'''GL_TEXTURE_1D''' und '''GL_TEXTURE_2D''' werden akzeptiert.</td>
+
  <td>Gibt an, welche Texture erreicht werden soll.'''GL_TEXTURE_1D''', '''GL_TEXTURE_2D''' und '''GL_TEXTURE_3D''' werden akzeptiert.</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Zeile 24: Zeile 24:
 
  <td>''format''</td>
 
  <td>''format''</td>
 
  <td>Bestimmt das Pixelformat für den Inhalt von ''pixels''. Folgende Formate werden unterstützt: <br>
 
  <td>Bestimmt das Pixelformat für den Inhalt von ''pixels''. Folgende Formate werden unterstützt: <br>
'''GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_LUMINANCE,''' und '''GL_LUMINANCE_ALPHA'''</td>
+
'''GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA''', '''GL_BGR''', '''GL_BGRA''', GL_LUMINANCE, GL_LUMINANCE_ALPHA'''</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
 
  <td>''_type''</td>
 
  <td>''_type''</td>
 
  <td>Bestimmt den Pixeltyp für den Inhalt von ''pixels''. Folgende Typen werden unterstützt:<br>
 
  <td>Bestimmt den Pixeltyp für den Inhalt von ''pixels''. Folgende Typen werden unterstützt:<br>
'''GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT,''' und '''GL_FLOAT'''</td>
+
'''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.'''</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Zeile 40: Zeile 40:
  
 
== Beschreibung ==  
 
== Beschreibung ==  
''glGetTexImage'' liefert ein Texturbild über ''pixels'' zurück. ''target'' bestimmt, ob die gewünschte Textur eine von [[glTexImage1D]](GL_TEXTURE_1D) erstellte ist oder eine die mittels [[glTexImage2D]](GL_TEXTURE_2D) 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]].
+
''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:<br>
 
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:<br>
Zeile 54: Zeile 54:
 
: '''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.
 
: '''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 nicht '''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>
 
<br>
Zeile 63: Zeile 63:
  
 
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>
 
<br>
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
Zeile 80: Zeile 81:
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glDrawPixels]], [[glReadPixels]], [[glTexImage1D]], [[glTexImage2D]]  
+
[[glDrawPixels]], [[glReadPixels]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]], [[glTexParameter]]
  
 
[[Kategorie:GL|GetTexImage]]
 
[[Kategorie:GL|GetTexImage]]

Version vom 7. September 2004, 09:55 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