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.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die WebGL2RenderingContext.getBufferSubData()
-Methode des
WebGL 2 API liest Daten von einem Buffer-Bindepunkt 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
, der den Bindepunkt (target) angibt. Mögliche Werte:gl.ARRAY_BUFFER
-
Buffer, der Vertex-Attribute enthält, wie z. B. Vertex-Koordinaten, Texturkoordinatendaten oder Vertex-Farbdaten.
gl.ELEMENT_ARRAY_BUFFER
-
Buffer, der für Element-Indizes verwendet wird.
gl.COPY_READ_BUFFER
-
Buffer zum Kopieren von einem Pufferobjekt zu einem anderen.
gl.COPY_WRITE_BUFFER
-
Buffer zum Kopieren von einem Pufferobjekt zu einem anderen.
gl.TRANSFORM_FEEDBACK_BUFFER
-
Buffer für Transform-Feedback-Operationen.
gl.UNIFORM_BUFFER
-
Buffer, der zur Speicherung von Uniform-Blöcken verwendet wird.
gl.PIXEL_PACK_BUFFER
-
Buffer, der für Pixelübertragungsoperationen verwendet wird.
gl.PIXEL_UNPACK_BUFFER
-
Buffer, der für Pixelübertragungsoperationen verwendet wird.
srcByteOffset
-
Ein
GLintptr
, der den Byte-Offset angibt, ab dem aus dem Buffer gelesen werden soll. dstData
-
Ein
TypedArray
oder einDataView
-Objekt, in das die Daten kopiert werden. WenndstData
einDataView
ist, werdendstOffset
undlength
in Bytes interpretiert, andernfalls wird der Elementtyp vondstData
verwendet. dstOffset
Optional-
Ein
GLuint
, der den Elementindex-Offset angibt, ab dem indstData
geschrieben werden soll. length
Optional-
Ein
GLuint
, der die Anzahl der zu kopierenden Elemente angibt. Wenn dies 0 ist oder nicht angegeben wird, kopiertgetBufferSubData
bis zum Ende vondstData
.
Rückgabewert
Keiner (undefined
).
Ausnahmen
Ein INVALID_VALUE
-Fehler wird generiert, wenn:
offset
+returnedData.byteLength
über das Ende des Buffers hinausgehen würde.returnedData
null
ist.offset
kleiner als null ist.
Ein INVALID_OPERATION
-Fehler wird generiert, wenn:
- null an
target
gebunden ist. target
TRANSFORM_FEEDBACK_BUFFER
ist 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
BCD tables only load in the browser