WebGLRenderingContext: readPixels() method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Note: This feature is available in Web Workers.
Phương thức WebGLRenderingContext.readPixels() của WebGL API đọc một khối pixel từ một hình chữ nhật được chỉ định của bộ đệm khung màu hiện tại vào một đối tượng TypedArray hoặc DataView.
Cú pháp
// 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)
Thông số
x-
A
GLintchỉ định pixel ngang đầu tiên được đọc từ góc dưới bên trái của khối pixel hình chữ nhật. y-
A
GLintchỉ định pixel dọc đầu tiên được đọc từ góc dưới bên trái của khối pixel hình chữ nhật. width-
A
GLsizeichỉ định chiều rộng của hình chữ nhật. height-
A
GLsizeixác định chiều cao của hình chữ nhật. format-
Một
GLenumchỉ định định dạng của dữ liệu pixel. Các giá trị có thể:
WebGL2 thêm vào
- gl.RED
- gl.RG
- gl.RED_INTEGER
- gl.RG_INTEGER
- gl.RGB_INTEGER
- gl.RGBA_INTEGER
type-
A
GLenumchỉ định loại dữ liệu của dữ liệu pixel. Các giá trị có thể:gl.UNSIGNED_BYTEgl.UNSIGNED_SHORT_5_6_5gl.UNSIGNED_SHORT_4_4_4_4gl.UNSIGNED_SHORT_5_5_5_1gl.FLOAT
WebGL2 thêm vào
- gl.BYTE
- gl.UNSIGNED_INT_2_10_10_10_REV
- gl.HALF_FLOAT
- gl.SHORT
- gl.UNSIGNED_SHORT
- gl.INT
- gl.UNSIGNED_INT
- gl.UNSIGNED_INT_10F_11F_11F_REV
- gl.UNSIGNED_INT_5_9_9_9_REV
pixels-
Đối tượng để đọc dữ liệu vào. Kiểu mảng phải khớp với kiểu của tham số
type:Uint8Arraychogl.UNSIGNED_BYTE.Uint16Arraychogl.UNSIGNED_SHORT_5_6_5,gl.UNSIGNED_SHORT_4_4_4_4, hoặcgl.UNSIGNED_SHORT_5_5_5_1.Float32Arraychogl.FLOAT.
dstOffsetOptional-
Bù lại. Mặc định là 0.
Giá trị trả về
Không có (undefined).
Ngoại lệ
-
Lỗi
gl.INVALID_ENUMđược đưa ra nếuformathoặctypekhông phải là giá trị được chấp nhận. -
Lỗi
gl.INVALID_OPERATIONsẽ xuất hiện nếutypelàgl.UNSIGNED_SHORT_5_6_5vàformatkhông phải làgl.RGB.typelàgl.UNSIGNED_SHORT_4_4_4_4vàformatkhông phải làgl.RGBA.typekhông khớp với kiểu mảng được gõ củapixels.
-
Lỗi
gl.INVALID_FRAMEBUFFER_OPERATIONsẽ xuất hiện nếu hiện tại bộ đệm khung bị ràng buộc chưa hoàn thành bộ đệm khung.
Ví dụ
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
Thông số kỹ thuật
| Specification |
|---|
| WebGL Specification> # 5.14.12> |