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
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
, einDataView
oder einTypedArray
, 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 wenndata
null
ist. - Ein
gl.INVALID_ENUM
-Fehler wird ausgelöst, 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 |
Browser-Kompatibilität
BCD tables only load in the browser