WebGL2RenderingContext: getBufferSubData() 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.

* Some parts of this feature may have varying levels of support.

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

Die WebGL2RenderingContext.getBufferSubData()-Methode der WebGL 2 API liest Daten von einem Pufferbindungspunkt und schreibt sie in einen ArrayBuffer oder SharedArrayBuffer.

Syntax

js
getBufferSubData(target, srcByteOffset, dstData)
getBufferSubData(target, srcByteOffset, dstData, dstOffset)
getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)

Parameter

target

Ein GLenum, das den Bindungspunkt (Ziel) spezifiziert. Mögliche Werte:

gl.ARRAY_BUFFER

Puffer, der Scheitelpunktattribute enthält, wie zum Beispiel Scheitelpunktkoordinaten, Texturkoordinatendaten oder Scheitelpunktfarbdaten.

gl.ELEMENT_ARRAY_BUFFER

Puffer, der für Elementindizes verwendet wird.

gl.COPY_READ_BUFFER

Puffer zum Kopieren von einem Pufferobjekt zu einem anderen.

gl.COPY_WRITE_BUFFER

Puffer zum Kopieren von einem Pufferobjekt zu einem anderen.

gl.TRANSFORM_FEEDBACK_BUFFER

Puffer für Transform-Feedback-Operationen.

gl.UNIFORM_BUFFER

Puffer zum Speichern von Uniformblöcken.

gl.PIXEL_PACK_BUFFER

Puffer, der für Pixeltransferoperationen verwendet wird.

gl.PIXEL_UNPACK_BUFFER

Puffer, der für Pixeltransferoperationen verwendet wird.

srcByteOffset

Ein GLintptr, das den Byteversatz angibt, von dem aus mit dem Lesen aus dem Puffer begonnen wird.

dstData

Ein TypedArray oder ein DataView-Objekt, in das die Daten kopiert werden. Wenn dstData ein DataView ist, werden dstOffset und length in Bytes interpretiert, ansonsten wird der Elementtyp von dstData verwendet.

dstOffset Optional

Ein GLuint, der den Elementindex-Versatz angibt, an dem begonnen wird, in dstData zu schreiben.

length Optional

Ein GLuint, der die Anzahl der zu kopierenden Elemente angibt. Wenn dieser Wert 0 ist oder nicht angegeben wird, kopiert getBufferSubData bis zum Ende von dstData.

Rückgabewert

Keiner (undefined).

Ausnahmen

Ein INVALID_VALUE-Fehler wird generiert, wenn:

  • offset + returnedData.byteLength über das Ende des Puffers hinausgehen würde
  • returnedData null ist
  • offset kleiner als null ist.

Ein INVALID_OPERATION-Fehler wird generiert, wenn:

  • null an target gebunden ist
  • target TRANSFORM_FEEDBACK_BUFFER ist und ein Transform-Feedback-Objekt derzeit aktiv ist.

Beispiele

js
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);

const arrBuffer = new ArrayBuffer(
  vertices.length * Float32Array.BYTES_PER_ELEMENT,
);
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, new Float32Array(arrBuffer));

Spezifikationen

Specification
WebGL 2.0 Specification
# 3.7.3

Browser-Kompatibilität

Siehe auch