WebGL2RenderingContext: phương thức getBufferSubData()
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.
* Some parts of this feature may have varying levels of support.
Note: This feature is available in Web Workers.
Phương thức WebGL2RenderingContext.getBufferSubData() của WebGL 2 API đọc dữ liệu từ một điểm liên kết bộ đệm và ghi chúng vào một ArrayBuffer hoặc SharedArrayBuffer.
Cú pháp
getBufferSubData(target, srcByteOffset, dstData)
getBufferSubData(target, srcByteOffset, dstData, dstOffset)
getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)
Tham số
target-
Một
GLenumchỉ định điểm liên kết (target). Các giá trị có thể:gl.ARRAY_BUFFER-
Bộ đệm chứa các thuộc tính đỉnh, chẳng hạn như tọa độ đỉnh, dữ liệu tọa độ texture hoặc dữ liệu màu đỉnh.
gl.ELEMENT_ARRAY_BUFFER-
Bộ đệm dùng cho chỉ mục phần tử.
gl.COPY_READ_BUFFER-
Bộ đệm để sao chép từ một đối tượng bộ đệm sang bộ đệm khác.
gl.COPY_WRITE_BUFFER-
Bộ đệm để sao chép từ một đối tượng bộ đệm sang bộ đệm khác.
gl.TRANSFORM_FEEDBACK_BUFFER-
Bộ đệm cho các hoạt động transform feedback.
gl.UNIFORM_BUFFER-
Bộ đệm dùng để lưu trữ các khối uniform.
gl.PIXEL_PACK_BUFFER-
Bộ đệm dùng cho các hoạt động chuyển pixel.
gl.PIXEL_UNPACK_BUFFER-
Bộ đệm dùng cho các hoạt động chuyển pixel.
srcByteOffset-
Một
GLintptrchỉ định offset byte từ nơi bắt đầu đọc từ bộ đệm. dstData-
Một đối tượng
TypedArrayhoặcDataViewđể sao chép dữ liệu vào. NếudstDatalà mộtDataViewthìdstOffsetvàlengthđược hiểu theo byte, nếu không thì loại phần tử củadstDatađược sử dụng. dstOffsetOptional-
Một
GLuintchỉ định offset phần tử bắt đầu ghi trongdstData. lengthOptional-
Một
GLuintchỉ định số phần tử sẽ sao chép. Nếu là 0 hoặc không được chỉ định,getBufferSubDatasẽ sao chép cho đến cuốidstData.
Giá trị trả về
None (undefined).
Ngoại lệ
Lỗi INVALID_VALUE được tạo nếu:
offset+returnedData.byteLengthsẽ vượt quá cuối bộ đệmreturnedDatalànulloffsetnhỏ hơn 0.
Lỗi INVALID_OPERATION được tạo nếu:
- số 0 được liên kết với
target targetlàTRANSFORM_FEEDBACK_BUFFERvà bất kỳ đối tượng transform feedback nào hiện đang hoạt động.
Ví dụ
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));
Đặc tả kỹ thuật
| Specification |
|---|
| WebGL 2.0 Specification> # 3.7.3> |