WebGL2RenderingContext: getBufferSubData() Methode
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die WebGL2RenderingContext.getBufferSubData()-Methode der WebGL 2 API liest Daten von einem Pufferbindungspunkt und schreibt sie in einen ArrayBuffer oder SharedArrayBuffer.
Syntax
getBufferSubData(target, srcByteOffset, dstData)
getBufferSubData(target, srcByteOffset, dstData, dstOffset)
getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)
Parameter
target-
Ein
GLenum, das den Bindungspunkt (Ziel) spezifiziert. Mögliche Werte:gl.ARRAY_BUFFER-
Puffer, der Scheitelpunktattribute enthält, wie zum Beispiel Scheitelpunktkoordinaten, Texturkoordinatendaten oder Scheitelpunktfarbdaten.
gl.ELEMENT_ARRAY_BUFFER-
Puffer, der für Elementindizes verwendet wird.
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 zum Speichern von Uniformblöcken.
gl.PIXEL_PACK_BUFFER-
Puffer, der für Pixeltransferoperationen verwendet wird.
gl.PIXEL_UNPACK_BUFFER-
Puffer, der für Pixeltransferoperationen verwendet wird.
srcByteOffset-
Ein
GLintptr, das den Byteversatz angibt, von dem aus mit dem Lesen aus dem Puffer begonnen wird. dstData-
Ein
TypedArrayoder einDataView-Objekt, in das die Daten kopiert werden. WenndstDataeinDataViewist, werdendstOffsetundlengthin Bytes interpretiert, ansonsten wird der Elementtyp vondstDataverwendet. dstOffsetOptional-
Ein
GLuint, der den Elementindex-Versatz angibt, an dem begonnen wird, indstDatazu schreiben. lengthOptional-
Ein
GLuint, der die Anzahl der zu kopierenden Elemente angibt. Wenn dieser Wert 0 ist oder nicht angegeben wird, kopiertgetBufferSubDatabis zum Ende vondstData.
Rückgabewert
Keiner (undefined).
Ausnahmen
Ein INVALID_VALUE-Fehler wird generiert, wenn:
offset+returnedData.byteLengthüber das Ende des Puffers hinausgehen würdereturnedDatanullistoffsetkleiner als null ist.
Ein INVALID_OPERATION-Fehler wird generiert, wenn:
- null an
targetgebunden ist targetTRANSFORM_FEEDBACK_BUFFERist und ein Transform-Feedback-Objekt derzeit aktiv ist.
Beispiele
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
const arrBuffer = new ArrayBuffer(
vertices.length * Float32Array.BYTES_PER_ELEMENT,
);
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, new Float32Array(arrBuffer));
Spezifikationen
| Specification |
|---|
| WebGL 2.0 Specification> # 3.7.3> |
Browser-Kompatibilität
Loading…