glCopyTexImage2D: Unterschied zwischen den Versionen
K |
|||
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glCopyTexImage2D = | = glCopyTexImage2D = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
− | '''glCopyTexImage2D''' - Kopiert Pixel in eine 2-dimensionale Textur | + | '''glCopyTexImage2D''' - Kopiert Pixel in eine 2-dimensionale Textur. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''glCopyTexImage2D'''(''target'' : GLenum; ''level'' : GLint; ''internalformat'' : GLenum; | procedure '''glCopyTexImage2D'''(''target'' : GLenum; ''level'' : GLint; ''internalformat'' : GLenum; | ||
''x'' : GLint; ''y'' : GLint; ''width'' : GLsizei; ''height'' : GLsizei; ''border'' : GLint) | ''x'' : GLint; ''y'' : GLint; ''width'' : GLsizei; ''height'' : GLsizei; ''border'' : GLint) | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 16: | Zeile 19: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''target'' | ! ''target'' | ||
− | | Gibt die zu bearbeitende Textur an. Die Textur muss vom Typ ''' | + | | Gibt die zu bearbeitende Textur an. Die Textur muss vom Typ '''GL_TEXTURE_2D''' sein. |
|- | |- | ||
! ''level'' | ! ''level'' | ||
− | | Gibt den level-of-detail-Grad an. Level 0 ist das normale Bild. Level ''n'' ist | + | | Gibt den level-of-detail-Grad an. Level 0 ist das normale Bild. Level ''n'' ist der n-te Mipmap-Level |
|- | |- | ||
! ''internalformat'' | ! ''internalformat'' | ||
Zeile 25: | Zeile 28: | ||
|- | |- | ||
! ''x, y'' | ! ''x, y'' | ||
− | | Gibt die Fenster-Koordinaten der linken Ecke der zu kopierenden | + | | Gibt die Fenster-Koordinaten der unteren linken Ecke der zu kopierenden rechteckigen Region von Pixeln an. |
|- | |- | ||
! ''width'' | ! ''width'' | ||
− | | Gibt die Breite der Textur an. Muss entweder 0 oder 2^n + 2 * border (für n | + | | Gibt die Breite der Textur an. Muss entweder 0 oder 2^n + 2 * border (für Ganzahlige n) sein. |
|- | |- | ||
! ''height'' | ! ''height'' | ||
− | | Gibt die Höhe der Textur an. Muss 2^m + 2 * border (für m | + | | Gibt die Höhe der Textur an. Muss 2^m + 2 * border (für Ganzahlige m) sein. Wenn '''GL_INTERLACE_EXT''' aktiviert ist, muss die Höhe 2^m + border sein, da die Höhe dann verdoppelt wird. Alle Implementationen unterstützen Texturen, die mindestens 64 Texel hoch sind. |
− | |||
− | |||
|- | |- | ||
! ''border'' | ! ''border'' | ||
Zeile 40: | Zeile 41: | ||
|} | |} | ||
− | + | == Beschreibung == | |
+ | '''glCopyTexImage2D''' definiert eine 2-dimensionale Textur mit Pixeln aus dem aktuellen '''GL_READ_BUFFER'''. | ||
+ | |||
+ | Das Bildschirm-bezogene Pixelrechteck mit der unteren linken Ecke bei (x, y) und mit einer Länge von ''width'' + 2 * ''border'' und einer Höhe von ''height'' + 2 * ''border'' definiert den Texturbereich. Als [[Mipmap]]-Level wird ''level'' benutzt. | ||
+ | |||
+ | |||
+ | ''internalformat'' gibt das interne Format des Textur-Arrays an. | ||
+ | |||
+ | |||
+ | Die Pixel in dem Rechteck werden genau so bearbeitet wie wenn [[glCopyPixels]] aufgerufen worden wäre, nur dass der Vorgang vor der finalen Konvertierung gestoppt wird. An diesem Punkt werden alle Pixel-Werte an den [0, 1]-Bereich angepasst und dann in das interne Texturformat konvertiert, um im Texel-Array gespeichert zu werden. | ||
+ | |||
+ | |||
+ | Das Bildschirm-bezogene Pixelrechteck mit der unteren linken Ecke bei (x, y), der Breite ''width'' und der Höhe ''height'' wird benutzt, um die Textur zu definieren. Ist '''GL_INTERLACE_READ_I3D''' aktiviert, werden gewisse Zeilen ignoriert, so dass das Pixelrechteck mit der linken unteren Ecke bei (x, y), der Breite ''width'' und der Höhe 2 * ''height'' - 1 verwendet wird, um die Textur zu definieren. Wenn Pixel die innerhalb dieses Bereich liegen sich außerhalb des Fensters des GL-Kontextes befinden, bleiben die Werte für diese Pixel undefiniert. | ||
+ | |||
+ | |||
+ | Die Pixel werden so geordnet, dass kleinere x- und y-Werte am Bildschirm kleineren s- und t-Texturkoordinaten entsprechen. | ||
+ | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Wenn sich einige der Pixel, die in der Zeile des aktuellen '''GL_READ_BUFFER''' angegeben werden, außerhalb des Bildschirms befinden, sind die Werte für diese Pixel undefiniert. | Wenn sich einige der Pixel, die in der Zeile des aktuellen '''GL_READ_BUFFER''' angegeben werden, außerhalb des Bildschirms befinden, sind die Werte für diese Pixel undefiniert. | ||
− | + | ||
+ | |||
Ist '''GL_INTERLACE_EXT''' aktiviert, sind nur die Zeilen (0,2,4,...) der Textur - bei der der Rand als Teil der Textur zählt - definiert. Die restlichen Zeilen (1,3,5,...) bleiben undefiniert und können nur per [[glTexSubImage2D]] oder [[glCopyTexSubImage2D]] definiert werden. | Ist '''GL_INTERLACE_EXT''' aktiviert, sind nur die Zeilen (0,2,4,...) der Textur - bei der der Rand als Teil der Textur zählt - definiert. Die restlichen Zeilen (1,3,5,...) bleiben undefiniert und können nur per [[glTexSubImage2D]] oder [[glCopyTexSubImage2D]] definiert werden. | ||
− | + | ||
+ | |||
+ | |||
== Hinweise == | == Hinweise == | ||
− | ''' | + | '''glCopyTexImage2D''' ist ab OpenGL Version 1.1 verfügbar. |
− | + | ||
− | Texturierung hat keinen Effekt im Farbindex-Modus. | + | Texturierung hat keinen Effekt im Farbindex-Modus. |
− | + | ||
− | 1, 2, 3 oder 4 werden nicht als ''internalformat'' akzeptiert. | + | 1, 2, 3 oder 4 werden nicht als ''internalformat'' akzeptiert. |
− | + | ||
Ein Bild mit der Breite 0 entspricht einer '''nil'''-Textur. | Ein Bild mit der Breite 0 entspricht einer '''nil'''-Textur. | ||
− | + | ||
+ | |||
+ | == Änderungen == | ||
+ | Folgende Erweiterungen hat die Funktion erfahren: | ||
+ | === Ab OpenGL-Version 1.3 === | ||
+ | :[[GL_ARB_texture_cube_map]] definiert weitere 6 2D-Texture-Typen, welche als ''target'' angegeben werden können. | ||
+ | |||
+ | |||
== Extensions == | == Extensions == | ||
+ | Einige der Anweisungen und Konstanten dieser Funktion sind Teil einer Extension, also in der Standard-OpenGL-Implementation nicht enthalten. Die folgenden Extension-Bezeichnungen müssen in dem String, den [[glGetString]] liefert, enthalten sein, wenn die Funktion mit dem Argument '''GL_EXTENSIONS''' aufgerufen wird, um diese Anweisungen und Konstanten zu verwenden. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | '''EXT_interlace_read | + | '''EXT_interlace |
− | + | :GL_INTERLACE_EXT''' ist Teil der [[GL_EXT_interlace|EXT_interlace]] - Extension. | |
+ | |||
+ | '''EXT_interlace_read | ||
+ | :GL_INTERLACE_READ_I3D''' ist Teil der [[GL_EXT_interlace_read|EXT_interlace_read]] - Extension. | ||
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | '''GL_INVALID_ENUM''' wird generiert, wenn | + | '''GL_INVALID_ENUM''' wird generiert, wenn ''target'' nicht '''GL_TEXTURE_2D''' ist. |
− | '''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner als 0 ist. | + | '''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner als 0 ist. |
− | '''GL_INVALID_VALUE''' könnte generiert werden, wenn ''level'' größer als log2(max) (max ist der Wert, der beim Aufruf von '''GL_MAX_TEXTURE_SIZE''' geliefert wird) | + | '''GL_INVALID_VALUE''' könnte generiert werden, wenn ''level'' größer als log2(max) ist. (max ist der Wert, der beim Aufruf von glGet mit Token '''GL_MAX_TEXTURE_SIZE''' geliefert wird) |
− | '''GL_INVALID_VALUE''' wird genereirt, wenn ''internalformat'' keinen zulässigen Wert hat. | + | '''GL_INVALID_VALUE''' wird genereirt, wenn ''internalformat'' keinen zulässigen Wert hat. |
− | '''GL_INVALID_VALUE''' wird generiert, wenn ''width'' oder ''height'' kleiner als 0 oder größer als 2 + '''GL_MAX_TEXTURE_SIZE''' ist oder nicht als 2^n + 2 * border (n | + | '''GL_INVALID_VALUE''' wird generiert, wenn |
+ | *''width'' oder ''height'' kleiner als 0 oder | ||
+ | *''width'' größer als 2 + '''GL_MAX_TEXTURE_SIZE''' ist oder nicht als 2^n + 2 * border (n ganzzahlig) dargestellt werden kann oder | ||
+ | *''height'' nicht als 2^k + I * ''border'' dargestellt werden kann. (k ganzzahlig, I ist 1, wenn '''GL_INTERLACE_EXT''' aktiviert ist oder andernfalls 2) | ||
− | '''GL_INVALID_VALUE''' wird erzeugt, wenn ''border'' nicht 1 oder 0 ist. | + | '''GL_INVALID_VALUE''' wird erzeugt, wenn ''border'' nicht 1 oder 0 ist. |
− | '''GL_INVALID_OPERATION''' wird generiert wenn ''' | + | '''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyTexImage2D''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird. |
− | |||
− | == | + | |
− | [[glGetTexImage]] | + | == Zugehörige Wertrückgaben == |
+ | [[glGetTexImage]] | ||
+ | |||
[[glIsEnabled]] mit dem Parameter '''GL_TEXTURE_2D''' | [[glIsEnabled]] mit dem Parameter '''GL_TEXTURE_2D''' | ||
− | + | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
− | [[glCopyPixels]], [[ | + | [[glCopyPixels]], [[glCopyTexImage1D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glCopyTexSubImage3D]], [[glPixelStore]], [[glPixelTransfer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]], [[glTexParameter]] |
[[Kategorie:GL|CopyTexImage2D]] | [[Kategorie:GL|CopyTexImage2D]] | ||
+ | [[Kategorie:GL1.1|CopyTexImage2D]] | ||
+ | [[Kategorie:GL3|CopyTexImage2D]] |
Aktuelle Version vom 20. Juli 2011, 07:59 Uhr
Inhaltsverzeichnis
glCopyTexImage2D
Name
glCopyTexImage2D - Kopiert Pixel in eine 2-dimensionale Textur.
Delphi-Spezifikation
procedure glCopyTexImage2D(target : GLenum; level : GLint; internalformat : GLenum; x : GLint; y : GLint; width : GLsizei; height : GLsizei; border : GLint)
Parameter
target | Gibt die zu bearbeitende Textur an. Die Textur muss vom Typ GL_TEXTURE_2D sein. |
---|---|
level | Gibt den level-of-detail-Grad an. Level 0 ist das normale Bild. Level n ist der n-te Mipmap-Level |
internalformat | Gibt das interne Format der Textur an. Muss eine der folgenden Konstanten sein: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_RGB, GL_R3_G3_B2, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12, oder GL_RGBA16. |
x, y | Gibt die Fenster-Koordinaten der unteren linken Ecke der zu kopierenden rechteckigen Region von Pixeln an. |
width | Gibt die Breite der Textur an. Muss entweder 0 oder 2^n + 2 * border (für Ganzahlige n) sein. |
height | Gibt die Höhe der Textur an. Muss 2^m + 2 * border (für Ganzahlige m) sein. Wenn GL_INTERLACE_EXT aktiviert ist, muss die Höhe 2^m + border sein, da die Höhe dann verdoppelt wird. Alle Implementationen unterstützen Texturen, die mindestens 64 Texel hoch sind. |
border | Gibt die Breite des Rands an. Muss 0 oder 1 sein. |
Beschreibung
glCopyTexImage2D definiert eine 2-dimensionale Textur mit Pixeln aus dem aktuellen GL_READ_BUFFER.
Das Bildschirm-bezogene Pixelrechteck mit der unteren linken Ecke bei (x, y) und mit einer Länge von width + 2 * border und einer Höhe von height + 2 * border definiert den Texturbereich. Als Mipmap-Level wird level benutzt.
internalformat gibt das interne Format des Textur-Arrays an.
Die Pixel in dem Rechteck werden genau so bearbeitet wie wenn glCopyPixels aufgerufen worden wäre, nur dass der Vorgang vor der finalen Konvertierung gestoppt wird. An diesem Punkt werden alle Pixel-Werte an den [0, 1]-Bereich angepasst und dann in das interne Texturformat konvertiert, um im Texel-Array gespeichert zu werden.
Das Bildschirm-bezogene Pixelrechteck mit der unteren linken Ecke bei (x, y), der Breite width und der Höhe height wird benutzt, um die Textur zu definieren. Ist GL_INTERLACE_READ_I3D aktiviert, werden gewisse Zeilen ignoriert, so dass das Pixelrechteck mit der linken unteren Ecke bei (x, y), der Breite width und der Höhe 2 * height - 1 verwendet wird, um die Textur zu definieren. Wenn Pixel die innerhalb dieses Bereich liegen sich außerhalb des Fensters des GL-Kontextes befinden, bleiben die Werte für diese Pixel undefiniert.
Die Pixel werden so geordnet, dass kleinere x- und y-Werte am Bildschirm kleineren s- und t-Texturkoordinaten entsprechen.
Wenn sich einige der Pixel, die in der Zeile des aktuellen GL_READ_BUFFER angegeben werden, außerhalb des Bildschirms befinden, sind die Werte für diese Pixel undefiniert.
Ist GL_INTERLACE_EXT aktiviert, sind nur die Zeilen (0,2,4,...) der Textur - bei der der Rand als Teil der Textur zählt - definiert. Die restlichen Zeilen (1,3,5,...) bleiben undefiniert und können nur per glTexSubImage2D oder glCopyTexSubImage2D definiert werden.
Hinweise
glCopyTexImage2D ist ab OpenGL Version 1.1 verfügbar.
Texturierung hat keinen Effekt im Farbindex-Modus.
1, 2, 3 oder 4 werden nicht als internalformat akzeptiert.
Ein Bild mit der Breite 0 entspricht einer nil-Textur.
Änderungen
Folgende Erweiterungen hat die Funktion erfahren:
Ab OpenGL-Version 1.3
- GL_ARB_texture_cube_map definiert weitere 6 2D-Texture-Typen, welche als target angegeben werden können.
Extensions
Einige der Anweisungen und Konstanten dieser Funktion sind Teil einer Extension, also in der Standard-OpenGL-Implementation nicht enthalten. Die folgenden Extension-Bezeichnungen müssen in dem String, den glGetString liefert, enthalten sein, wenn die Funktion mit dem Argument GL_EXTENSIONS aufgerufen wird, um diese Anweisungen und Konstanten zu verwenden.
EXT_interlace
- GL_INTERLACE_EXT ist Teil der EXT_interlace - Extension.
EXT_interlace_read
- GL_INTERLACE_READ_I3D ist Teil der EXT_interlace_read - Extension.
Fehlermeldungen
GL_INVALID_ENUM wird generiert, wenn target nicht GL_TEXTURE_2D ist.
GL_INVALID_VALUE wird generiert, wenn level kleiner als 0 ist.
GL_INVALID_VALUE könnte generiert werden, wenn level größer als log2(max) ist. (max ist der Wert, der beim Aufruf von glGet mit Token GL_MAX_TEXTURE_SIZE geliefert wird)
GL_INVALID_VALUE wird genereirt, wenn internalformat keinen zulässigen Wert hat.
GL_INVALID_VALUE wird generiert, wenn
- width oder height kleiner als 0 oder
- width größer als 2 + GL_MAX_TEXTURE_SIZE ist oder nicht als 2^n + 2 * border (n ganzzahlig) dargestellt werden kann oder
- height nicht als 2^k + I * border dargestellt werden kann. (k ganzzahlig, I ist 1, wenn GL_INTERLACE_EXT aktiviert ist oder andernfalls 2)
GL_INVALID_VALUE wird erzeugt, wenn border nicht 1 oder 0 ist.
GL_INVALID_OPERATION wird generiert, wenn glCopyTexImage2D innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.
Zugehörige Wertrückgaben
glIsEnabled mit dem Parameter GL_TEXTURE_2D
Siehe auch
glCopyPixels, glCopyTexImage1D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glPixelStore, glPixelTransfer, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D, glTexParameter