gl.CopyTexSubImage(level, x, y, xoffset, width[, yoffset, height])
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.
#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.
gl.IsEnabled() mit dem Argument #GL_TEXTURE_2D
oder #GL_TEXTURE_1D