glCopyTexImage2D

Aus DGL Wiki
Wechseln zu: Navigation, Suche

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_1D sein.
level Gibt den level-of-detail-Grad an. Level 0 ist das normale Bild. Level n ist das 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 linken Ecke der zu kopierenden Teile von Pixeln an.
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.
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.

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 Gibt die Breite des Rands an. Muss 0 oder 1 sein.


Beschreibung

glCopyTexImage1D 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.

Die Pixel werden so geordnet, dass kleinere x-Werte am Bildschirm kleineren Texturkoordinaten entsprechen.

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 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

glCopyTexImage1D 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.


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 das Ziel keine der erlaubten Werte 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) ist.

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.

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.


Zugehörige Wertrückgaben

glGetTexImage
glIsEnabled mit dem Parameter GL_TEXTURE_2D


Siehe auch

glCopyPixels, glCopyTexImage1D, glCopyTexSubImage1D, glCopyTexSubImage2D, glPixelStore, glPixelTransfer, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3DEXT, glTexSubImage1D, glTexSubImage2D, glTexSubImage3DEXT, glTexParameter