WebGL2RenderingContext.getBufferSubData()

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The WebGL2RenderingContext.getBufferSubData() method of the WebGL 2 API reads data from a buffer binding point and writes them to an ArrayBuffer or SharedArrayBuffer.

Syntax

void gl.getBufferSubData(target, srcByteOffset, ArrayBufferView dstData, optional dstOffset, optional length);

Parameters

target
A GLenum specifying the binding point (target). Possible values:
  • gl.ARRAY_BUFFER: Buffer containing vertex attributes, such as vertex coordinates, texture coordinate data, or vertex color data.
  • gl.ELEMENT_ARRAY_BUFFER: Buffer used for element indices.
  • gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
  • gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
  • gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
  • gl.UNIFORM_BUFFER: Buffer used for storing uniform blocks.
  • gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
  • gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
srcByteOffset
A GLintptr specifying the byte offset from which to start reading from the buffer.
dstData
An ArrayBuffer or SharedArrayBuffer to which to write the buffer data.
srcOffset Optional
A GLuint specifying the element index offset where to start reading the buffer.
length Optional
A GLuint defaulting to 0.

Return value

None.

Exceptions

An INVALID_VALUE error is generated if:

  • offset + returnedData.byteLength would extend beyond the end of the buffer
  • returnedData is null
  • offset is less than zero.

An INVALID_OPERATION error is generated if:

  • zero is bound to target
  • target is TRANSFORM_FEEDBACK_BUFFER, and any transform feedback object is currently active.

Examples

var buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);

var arrBuffer = new ArrayBuffer(vertices.length * Float32Array.BYTES_PER_ELEMENT);
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, arrBuffer);

Specifications

Specification Status Comment
WebGL 2.0
The definition of 'getBufferSubData' in that specification.
Editor's Draft Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Basic supportChrome Full support 56Edge No support NoFirefox Full support 51IE No support NoOpera Full support YesSafari No support NoWebView Android Full support 58Chrome Android Full support 58Edge Mobile No support NoFirefox Android Full support 51Opera Android Full support YesSafari iOS No support NoSamsung Internet Android Full support 7.0
SharedArrayBuffer as a parameterChrome Full support 60Edge ? Firefox ? IE ? Opera Full support 47Safari ? WebView Android Full support 60Chrome Android Full support 60Edge Mobile ? Firefox Android ? Opera Android Full support 47Safari iOS ? Samsung Internet Android No support No

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown

See also

Document Tags and Contributors

Contributors to this page: fscholz, teoli
Last updated by: fscholz,