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 Juli 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
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. srcDataOptional-
Ein
TypedArrayoder einDataView, das eineArrayBufferoder eineSharedArrayBufferbetrachtet, die in den Datenspeicher kopiert wird. srcOffset-
Ein
GLuint, der den Elementindex-Versatz angibt, ab welchem der Puffer gelesen werden soll. lengthOptional-
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 wenndatanullist. - Ein
gl.INVALID_ENUM-Fehler wird ausgelöst, wenntargetnicht 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
Loading…