glGetTexImage: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (Wird offline bearbeitet) |
Flash (Diskussion | Beiträge) (→Siehe auch) |
||
(6 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | = glGetTexImage = | |
+ | |||
+ | |||
+ | |||
+ | == Name == | ||
+ | '''glGetTexImage''' - liefert ein Texturbild. | ||
+ | |||
+ | |||
+ | |||
+ | == Delphi-Spezifikation == | ||
+ | procedure '''glGetTexImage'''(''target'': TGLenum; ''level'': TGLint; ''format'': TGLenum; ''_type'': TGLenum; ''pixels'': PGLvoid); | ||
+ | |||
+ | |||
+ | |||
+ | == Parameter == | ||
+ | <table border=1 rules=all> | ||
+ | <tr> | ||
+ | <td>''target''</td> | ||
+ | <td>Gibt an, welche Texture erreicht werden soll.'''GL_TEXTURE_1D''', '''GL_TEXTURE_2D''' und '''GL_TEXTURE_3D''' werden akzeptiert.</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>''level''</td> | ||
+ | <td>Gibt den Detailgrad für das gewünschte Bild an. <br> | ||
+ | Level 0 ist das Basisbild. Level n ist die n-te Mipmap reduzierung des Bildes.</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>''format''</td> | ||
+ | <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_BGR''', '''GL_BGRA''', GL_LUMINANCE, GL_LUMINANCE_ALPHA'''</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>''_type''</td> | ||
+ | <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_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> | ||
+ | <td>''pixels''</td> | ||
+ | <td>Liefert das Texturbild. ''pixels'' ist ein Pointer auf ein Feld(array) vom Typ ''type''.</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == 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:<br> | ||
+ | : 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.<br> | ||
+ | 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) <br> | ||
+ | GL_INVALID_OPERATION wird generiert wenn '''glGetTexImage''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | ||
+ | |||
+ | |||
+ | |||
+ | == Zugehörige Wertrückgaben == | ||
+ | [[glGetTexLevelParameter]] mit Token GL_TEXTURE_WIDTH<br> | ||
+ | [[glGetTexLevelParameter]] mit Token GL_TEXTURE_HEIGHT<br> | ||
+ | [[glGetTexLevelParameter]] mit Token GL_TEXTURE_BORDER<br> | ||
+ | [[glGetTexLevelParameter]] mit Token GL_TEXTURE_COMPONENTS<br> | ||
+ | [[glGet]] mit Token [[glGet#GL_PACK_ALIGNMENT|GL_PACK_ALIGNMENT]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == Siehe auch == | ||
+ | [[glDrawPixels]], [[glReadPixels]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]], [[glTexParameter]] | ||
+ | |||
+ | [[Kategorie:GL|GetTexImage]] | ||
+ | [[Kategorie:GL1.0]] |
Aktuelle Version vom 16. April 2007, 00:20 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