glCopyTexImage2D: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K
 
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glCopyTexImage2D =
 
= glCopyTexImage2D =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glCopyTexImage2D''' - Kopiert Pixel in eine 2-dimensionale Textur
+
'''glCopyTexImage2D''' - Kopiert Pixel in eine 2-dimensionale Textur.
 +
 
 +
 
  
<br>
 
 
== 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)
<br>
+
 
 +
 
  
 
== 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 '''GL_TEXTURE_1D''' sein.
+
| 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 das n-te Mipmap-Level
+
| 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 Teile von Pixeln an.
+
| 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: Integer) sein. Die Höhe der Textur ist 1.
+
| 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: Integer) 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 höch sind.
+
| 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.
 
 
Specifies the height of the texture image. Must be 2m + 2 * border for some integer m. If GL_INTERLACE_EXT is enabled, the height must be 2m + border since the height will be doubled. All implementations support texture images that are at least 64 texels high.
 
 
|-
 
|-
 
! ''border''
 
! ''border''
Zeile 40: Zeile 41:
 
|}
 
|}
  
<br>
+
== 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.
 +
 
  
== Beschreibung ==
 
'''glCopyTexImage1D''' definiert eine 2-dimensionale Textur mit Pixeln aus dem aktuellen '''GL_READ_BUFFER'''. <br>
 
<br>
 
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.<br>
 
<br>
 
''internalformat'' gibt das interne Format des Textur-Arrays an.<br>
 
<br>
 
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.<br>
 
<br>
 
Die Pixel werden so geordnet, dass kleinere x-Werte am Bildschirm kleineren Texturkoordinaten entsprechen.<br>
 
<br>
 
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.
 
<br>
 
 
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.
<br>
+
 
 +
 
 
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.
<br>
+
 
 +
 
 +
 
 
== Hinweise ==
 
== Hinweise ==
'''glCopyTexImage1D''' ist ab OpenGL Version 1.1 verfügbar.<br>
+
'''glCopyTexImage2D''' ist ab OpenGL Version 1.1 verfügbar.
<br>
+
 
Texturierung hat keinen Effekt im Farbindex-Modus.<br>
+
Texturierung hat keinen Effekt im Farbindex-Modus.
<br>
+
 
1, 2, 3 oder 4 werden nicht als ''internalformat'' akzeptiert.<br>
+
1, 2, 3 oder 4 werden nicht als ''internalformat'' akzeptiert.
<br>
+
 
 
Ein Bild mit der Breite 0 entspricht einer '''nil'''-Textur.
 
Ein Bild mit der Breite 0 entspricht einer '''nil'''-Textur.
  
<br>
+
 
 +
 
 +
== Ä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.
  
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.
 
<br>
 
<br>
 
'''EXT_interlace<br>
 
    GL_INTERLACE_EXT''' ist Teil der [[EXT_interlace]] - Extension.
 
  
'''EXT_interlace_read<br>
+
'''EXT_interlace
    GL_INTERLACE_READ_I3D''' ist Teil der [[EXT_interlace_read]] - Extension.  
+
: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 das Ziel keine der erlaubten Werte ist.<br>
+
'''GL_INVALID_ENUM''' wird generiert, wenn ''target'' nicht '''GL_TEXTURE_2D''' ist.
  
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner als 0 ist.<br>
+
'''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) ist.<br>
+
'''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.<br>
+
'''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: Integer) dargestellt werden kann, oder wenn ''height'' nicht als 2^k + I * ''border'' (k: Integer, I ist 1, wenn '''GL_INTERLACE_EXT''' aktiviert ist oder andernfalls 2) dargestellt werden kann.<br>
+
'''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. <br>
+
'''GL_INVALID_VALUE''' wird erzeugt, wenn ''border'' nicht 1 oder 0 ist.
  
'''GL_INVALID_OPERATION''' wird generiert wenn '''glCopyTexImage1D''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
+
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyTexImage2D''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.  
  
<br>
 
  
== Zugehörige Wertrückgaben ==
+
 
[[glGetTexImage]]<br>
+
== Zugehörige Wertrückgaben ==
 +
[[glGetTexImage]]
 +
 
 
[[glIsEnabled]] mit dem Parameter '''GL_TEXTURE_2D'''
 
[[glIsEnabled]] mit dem Parameter '''GL_TEXTURE_2D'''
  
<br>
+
 
 +
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glCopyPixels]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glPixelStore]], [[glPixelTransfer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3DEXT]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3DEXT]], [[glTexParameter]]
+
[[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

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

glGetTexImage

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