WebGL2RenderingContext: copyBufferSubData() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die WebGL2RenderingContext.copyBufferSubData() Methode der WebGL 2 API kopiert einen Teil der Daten eines Puffers in einen anderen Puffer.

Syntax

js
copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)

Parameter

readTarget, writeTarget

Ein GLenum, der den Bindungspunkt (Target) spezifiziert, von dessen Datenspeicher gelesen oder in den geschrieben werden soll. Mögliche Werte:

  • gl.ARRAY_BUFFER: Puffer, der Vertex-Attribute enthält, wie zum Beispiel Vertex-Koordinaten, Texturkoordinaten-Daten oder Vertex-Farb-Daten.
  • gl.ELEMENT_ARRAY_BUFFER: Puffer, der für Elementindizes verwendet wird.
  • gl.COPY_READ_BUFFER: Puffer zum Kopieren von einem Pufferobjekt in ein anderes (speziell für Kopieroperationen bereitgestellt).
  • gl.COPY_WRITE_BUFFER: Puffer zum Kopieren von einem Pufferobjekt in ein anderes (speziell für Kopieroperationen bereitgestellt).
  • gl.TRANSFORM_FEEDBACK_BUFFER: Puffer für Transform-Feedback-Operationen.
  • gl.UNIFORM_BUFFER: Puffer, der zur Speicherung von Uniform-Blöcken verwendet wird.
  • gl.PIXEL_PACK_BUFFER: Puffer, der für Pixelübertragungsoperationen verwendet wird.
  • gl.PIXEL_UNPACK_BUFFER: Puffer, der für Pixelübertragungsoperationen verwendet wird.
readOffset, writeOffset

Ein GLintptr, das den Byte-Offset spezifiziert, ab dem im Puffer gelesen oder geschrieben werden soll.

size

Ein GLsizei in Bytes, der die Größe der zu kopierenden Daten vom readTarget zum writeTarget spezifiziert.

Rückgabewert

Keiner (undefined).

Beispiele

js
const srcBuffer = gl.createBuffer();
const dstBuffer = gl.createBuffer();

const data = new Float32Array(vertices);
const length = vertices.length * 4;

gl.bindBuffer(gl.ARRAY_BUFFER, srcBuffer);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.bindBuffer(gl.COPY_READ_BUFFER, srcBuffer);

gl.bindBuffer(gl.ARRAY_BUFFER, dstBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(length), gl.STATIC_DRAW);

gl.copyBufferSubData(gl.COPY_READ_BUFFER, gl.ARRAY_BUFFER, 0, 0, length);

Spezifikationen

Specification
WebGL 2.0 Specification
# 3.7.3

Browser-Kompatibilität

Siehe auch