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
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 eineDataView
, die eineArrayBuffer
oderSharedArrayBuffer
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 wenndata
null
ist. - Ein
gl.INVALID_ENUM
Fehler wird geworfen, wenntarget
nicht eines der erlaubten Enums ist.
Beispiele
Verwendung von bufferSubData
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 |