WebGLRenderingContext: Methode bufferSubData()

Baseline Widely available

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

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die WebGLRenderingContext.bufferSubData()-Methode der WebGL-API aktualisiert einen Teil des Datenspeichers eines Pufferobjekts.

Syntax

js
bufferSubData(target, offset)
bufferSubData(target, offset, srcData)

Parameter

target

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

gl.ARRAY_BUFFER

Puffer, der Vertex-Attribute enthält, wie beispielsweise Vertex-Koordinaten, Texturkoordinatendaten oder Vertex-Farbwerte.

gl.ELEMENT_ARRAY_BUFFER

Puffer, der für Elementindizes verwendet wird.

Bei Verwendung eines WebGL 2-Kontexts sind zusätzlich die folgenden Werte verfügbar:

gl.COPY_READ_BUFFER

Puffer zum Kopieren von einem Pufferobjekt zum anderen.

gl.COPY_WRITE_BUFFER

Puffer zum Kopieren von einem Pufferobjekt zum anderen.

gl.TRANSFORM_FEEDBACK_BUFFER

Puffer für Transform-Feedback-Operationen.

gl.UNIFORM_BUFFER

Puffer, der zum Speichern von Uniform-Blöcken verwendet wird.

gl.PIXEL_PACK_BUFFER

Puffer, der für Pixeltransferoperationen verwendet wird.

gl.PIXEL_UNPACK_BUFFER

Puffer, der für Pixeltransferoperationen verwendet wird.

dstByteOffset

Ein GLintptr, der einen Offset in Bytes angibt, an dem der Datenaustausch beginnen soll.

srcData Optional

Ein ArrayBuffer, SharedArrayBuffer, ein DataView oder ein TypedArray, das in den Datenspeicher kopiert wird.

srcOffset

Ein GLuint, der den Element-Index-Offset angibt, ab dem der Puffer gelesen werden soll.

length Optional

Ein GLuint, standardmäßig 0.

Rückgabewert

Keiner (undefined).

Ausnahmen

  • Ein gl.INVALID_VALUE-Fehler wird ausgelöst, wenn die Daten über das Ende des Puffers hinaus geschrieben werden würden oder wenn data null ist.
  • Ein gl.INVALID_ENUM-Fehler wird ausgelöst, wenn target nicht eines der erlaubten Enums ist.

Beispiele

Verwendung von bufferSubData

js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
const data = new Float32Array([1, 2, 3, 4]);
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.bufferSubData(gl.ARRAY_BUFFER, 512, data);

Spezifikationen

Specification
WebGL Specification
# 5.14.5

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch