glGetTexImage: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) 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 ''' | + | <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_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, | + | '''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 | + | ''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 | + | 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
Inhaltsverzeichnis
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