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

Die WebGLRenderingContext.bufferSubData() Methode des 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 z.B. Vertex-Koordinaten, Texturkoordinaten oder Vertex-Farbdaten.

gl.ELEMENT_ARRAY_BUFFER

Puffer, der für Element-Indizes verwendet wird.

Bei Verwendung eines WebGL 2 Kontextes sind zusätzlich die folgenden 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 zur Speicherung von Uniform-Blö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 ein Offset in Bytes angibt, bei dem die Datenersetzung beginnen soll.

srcData Optional

Eine TypedArray oder eine DataView, die eine ArrayBuffer oder SharedArrayBuffer ansieht und in den Datenspeicher kopiert wird.

srcOffset

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

length Optional

Ein GLuint, der standardmäßig 0 ist.

Rückgabewert

Keiner (undefined).

Ausnahmen

  • Ein gl.INVALID_VALUE Fehler wird geworfen, wenn die Daten über das Ende des Puffers hinaus geschrieben würden oder wenn data null ist.
  • Ein gl.INVALID_ENUM Fehler wird geworfen, 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