WebGLRenderingContext: bufferSubData()-Methode

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: Diese Funktion ist in Web Workers verfügbar.

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, der den Bindepunkt (das Ziel) angibt. Mögliche Werte:

gl.ARRAY_BUFFER

Puffer, der Vertex-Attribute enthält, wie z.B. Vertex-Koordinaten, Texturkoordinatendaten oder Vertex-Farbendaten.

gl.ELEMENT_ARRAY_BUFFER

Puffer, der für Elementindizes verwendet wird.

Bei Verwendung eines WebGL 2-Kontextes sind zusätzlich folgende Werte verfügbar:

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, der zum Speichern von Uniformblöcken verwendet wird.

gl.PIXEL_PACK_BUFFER

Puffer, der für Pixeltransfer-Operationen verwendet wird.

gl.PIXEL_UNPACK_BUFFER

Puffer, der für Pixeltransfer-Operationen verwendet wird.

dstByteOffset

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

srcData Optional

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

srcOffset

Ein GLuint, der den Elementindex-Versatz angibt, ab welchem der Puffer gelesen werden soll.

length Optional

Ein GLuint, der standardmäßig auf 0 gesetzt ist.

Rückgabewert

Keiner (undefined).

Ausnahmen

  • Ein gl.INVALID_VALUE-Fehler wird ausgelöst, wenn die Daten über das Ende des Puffers hinaus geschrieben 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

Siehe auch