Bezeichnung
gl.CopyTexSubImage -- kopiert ein zweidimensionales Textur-Teilbild
Übersicht
gl.CopyTexSubImage(level, x, y, xoffset, width[, yoffset, height])
Beschreibung
gl.CopyTexSubImage() ersetzt einen rechteckigen Teil eines ein- oder zweidimensionalen Texturbildes durch Pixel aus dem aktuellen #GL_READ_BUFFER (statt aus dem Hauptspeicher, wie es bei gl.TexSubImage2D() der Fall ist. Wenn die letzten beiden Argumente weggelassen werden, wird ein rechteckiger Abschnitt eines eindimensionalen Texturbildes ersetzt, andernfalls ist ein zweidimensionales Texturbild das Ziel.

Das bildschirmausgerichtete Pixelrechteck mit der linken, unteren Ecke bei (x, y), mit der Breite width und der Höhe height ersetzt die Pixel des Texturfeldes mit den x-Indizes von xoffset bis und mit xoffset + width - 1 und y-Indizes von yoffset bis und mit yoffset + height - 1, auf der durch level festgelegten Mipmap-Ebene.

Die Pixel im Rechteck werden genau so verarbeitet, als wäre gl.CopyPixels() aufgerufen worden, aber der Prozess stoppt kurz vor der endgültigen Konvertierung. An diesem Punkt werden alle Pixelkomponentenwerte auf den Bereich [0,1] festgelegt und dann in das interne Format der Textur zum Speichern in dem Texel-Feld umgewandelt.

Das Zielrechteck im Texturfeld darf keine Texel außerhalb des Texturfelder enthalten, wie es ursprünglich festgelegt wurde. Es ist kein Fehler, eine Subtextur mit der Breite oder Höhe null anzugeben, aber eine solche Angabe hat keine Auswirkung.

Wenn eines der Pixel innerhalb des angegebenen Rechtecks des aktuellen #GL_READ_BUFFER außerhalb des Lesefensters liegt, das dem aktuellen Renderkontext zugeordnet ist, sind die für diese Pixel erhaltenen Werte nicht definiert.

Es wird keine Änderung an den Parametern internalformat, width, height, oder border der angegebenen Texturfeldern oder an Texelwerten außerhalb der angegebenen Teilregion vorgenommen.

Die Texturierung hat im Farbindexmodus keine Wirkung.

Die Modi gl.PixelStore() und gl.PixelTransfer() beeinflussen Texturbilder genau so, wie sich gl.DrawPixels() auswirkt.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
level
gibt die Detaillierungsstufe an; Level 0 ist die Grundbildstufe; Level n ist das n-te Mipmap-Reduzierungsbild
x
gibt die x-Koordinate der unteren linken Ecke des rechteckigen Bereichs der zu kopierenden Pixel an
y
gibt die y-Koordinate der unteren linken Ecke des rechteckigen Bereichs der zu kopierenden Pixel an
xoffset
gibt einen Texel-Versatz in der x-Richtung innerhalb des Texturfeldes an
yoffset
optional: Gibt einen Texel-Versatz in der y-Richtung innerhalb des Texturfeldes an
width
legt die Breite des Textur-Teilbildes fest
height
optional: Gibt die Höhe des Textur-Teilbilds an
Fehler
#GL_INVALID_OPERATION wird generiert, wenn das Texturfeld nicht durch eine vorherige gl.TexImage2D() oder gl.CopyTexImage() -Operation definiert wurde.

#GL_INVALID_VALUE wird generiert, wenn level kleiner als 0 ist.

#GL_INVALID_VALUE kann generiert werden, wenn level > log2(max), wobei max der zurückgegebene Wert von #GL_MAX_TEXTURE_SIZE ist.

#GL_INVALID_VALUE wird generiert, wenn xoffset <-b, xoffset + width> w-b, yoffset <-b oder yoffset + height> h -b ist, wobei w die #GL_TEXTURE_WIDTH ist, h die #GL_TEXTURE_HEIGHT und b #GL_TEXTURE_BORDER des Texturbildes ist, das geändert wird. Beachten Sie, dass w und h die doppelte Rahmenbreite enthalten.

#GL_INVALID_OPERATION wird generiert, wenn gl.CopyTexSubImage() zwischen gl.Begin() und gl.End() ausgeführt wird.

Verbundene get-operationen
gl.GetTexImage()

gl.IsEnabled() mit dem Argument #GL_TEXTURE_2D oder #GL_TEXTURE_1D


Navigation zeigen