WebGLRenderingContext: readPixels() method

Note: This feature is available in Web Workers.

The WebGLRenderingContext.readPixels() method of the WebGL API reads a block of pixels from a specified rectangle of the current color framebuffer into a TypedArray or a DataView object.

Syntax

js
// WebGL1:
readPixels(x, y, width, height, format, type, pixels)

// WebGL2:
readPixels(x, y, width, height, format, type, offset)
readPixels(x, y, width, height, format, type, pixels)
readPixels(x, y, width, height, format, type, pixels, dstOffset)

Parameters

x

A GLint specifying the first horizontal pixel that is read from the lower left corner of a rectangular block of pixels.

y

A GLint specifying the first vertical pixel that is read from the lower left corner of a rectangular block of pixels.

width

A GLsizei specifying the width of the rectangle.

height

A GLsizei specifying the height of the rectangle.

format

A GLenum specifying the format of the pixel data. Possible values:

gl.ALPHA

Discards the red, green and blue components and reads the alpha component.

gl.RGB

Discards the alpha components and reads the red, green and blue components.

gl.RGBA

Red, green, blue and alpha components are read from the color buffer.

WebGL2 adds

type

A GLenum specifying the data type of the pixel data. Possible values:

WebGL2 adds

pixels

An object to read data into. The array type must match the type of the type parameter:

dstOffset Optional

Offset. Defaults to 0.

Return value

None (undefined).

Exceptions

Examples

js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const pixels = new Uint8Array(
  gl.drawingBufferWidth * gl.drawingBufferHeight * 4,
);
gl.readPixels(
  0,
  0,
  gl.drawingBufferWidth,
  gl.drawingBufferHeight,
  gl.RGBA,
  gl.UNSIGNED_BYTE,
  pixels,
);
console.log(pixels); // Uint8Array

Specifications

See also