WebGLRenderingContext: метод readPixels()
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Примечание: Эта функция доступна в Web Workers.
Метод WebGLRenderingContext.readPixels() API WebGL считывает блок пикселей из указанного прямоугольника текущего цветового буфера фрейма в объект TypedArray или DataView.
Синтаксис
// 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)
Параметры
x-
Значение
GLint, определяющее первый горизонтальный пиксель, который считывается из левого нижнего угла прямоугольного блока пикселей. y-
Значение
GLint, определяющее первый вертикальный пиксель, который считывается из левого нижнего угла прямоугольного блока пикселей. width-
Значение
GLsizei, определяющее ширину прямоугольника. height-
Значение
GLsizei, определяющее высоту прямоугольника. format-
Значение
GLenum, определяющее формат данных пикселей. Возможные значения:gl.ALPHA-
Отбрасывает компоненты красного, зеленого и синего цветов и считывает альфа-компонент.
gl.RGB-
Отбрасывает альфа-компоненты и считывает компоненты красного, зеленого и синего цветов.
gl.RGBA-
Считываются компоненты красного, зеленого, синего и альфа-цвета из буфера цвета.
WebGL2 добавляет
gl.REDgl.RGgl.RED_INTEGERgl.RG_INTEGERgl.RGB_INTEGERgl.RGBA_INTEGER
type-
Значение
GLenum, определяющее тип данных пиксельных данных. Возможные значения:gl.UNSIGNED_BYTEgl.UNSIGNED_SHORT_5_6_5gl.UNSIGNED_SHORT_4_4_4_4gl.UNSIGNED_SHORT_5_5_5_1gl.FLOAT
WebGL2 добавляет
gl.BYTEgl.UNSIGNED_INT_2_10_10_10_REVgl.HALF_FLOATgl.SHORTgl.UNSIGNED_SHORTgl.INTgl.UNSIGNED_INTgl.UNSIGNED_INT_10F_11F_11F_REVgl.UNSIGNED_INT_5_9_9_9_REV
pixels-
Объект для чтения данных. Тип массива должен соответствовать типу параметра
type.-
Uint8Arrayдляgl.UNSIGNED_BYTE. -
Uint16Arrayдляgl.UNSIGNED_SHORT_5_6_5,gl.UNSIGNED_SHORT_4_4_4_4, илиgl.UNSIGNED_SHORT_5_5_5_1. -
Float32Arrayдляgl.FLOAT.
-
dstOffsetНеобязательно-
Смещение. По умолчанию 0.
Возвращаемое значение
Ничего (undefined).
Исключения
-
Выбрасывается ошибка
gl.INVALID_ENUM, еслиformatилиtypeне является допустимым значением. -
Выбрасывается ошибка
gl.INVALID_OPERATION, если-
typeравноgl.UNSIGNED_SHORT_5_6_5иformatне равноgl.RGB. -
typeравноgl.UNSIGNED_SHORT_4_4_4_4иformatне равноgl.RGBA. -
typeне соответствует типу массива с типомpixels.
-
-
Выбрасывается ошибка
gl.INVALID_FRAMEBUFFER_OPERATIONесли текущий связанный буфер фрейма не является полным буфером.
Примеры
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
Спецификации
| Спецификация |
|---|
| Спецификация WebGL # 5.14.12 |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
readPixels |
9 | 12 | 4 | 12 | 5.1 | 25 | 4 | 12 | 8 | 1.5 | 4.4.3 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/readPixels