WebGL2RenderingContext: phương thức copyBufferSubData()

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.

Note: This feature is available in Web Workers.

Phương thức WebGL2RenderingContext.copyBufferSubData() của WebGL 2 API sao chép một phần dữ liệu từ bộ đệm này sang bộ đệm khác.

Cú pháp

js
copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)

Tham số

readTarget, writeTarget

Một GLenum chỉ định điểm liên kết (target) từ nơi dữ liệu sẽ được đọc hoặc ghi. 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 (cung cấp cụ thể cho các hoạt động sao chép).
  • gl.COPY_WRITE_BUFFER: Bộ đệm để sao chép từ một đối tượng bộ đệm sang bộ đệm khác (cung cấp cụ thể cho các hoạt động sao chép).
  • 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.
readOffset, writeOffset

Một GLintptr chỉ định offset byte từ nơi bắt đầu đọc hoặc ghi vào bộ đệm.

size

Một GLsizei tính bằng byte chỉ định kích thước dữ liệu sẽ được sao chép từ readTarget sang writeTarget.

Giá trị trả về

None (undefined).

Ví dụ

js
const srcBuffer = gl.createBuffer();
const dstBuffer = gl.createBuffer();

const data = new Float32Array(vertices);
const length = vertices.length * 4;

gl.bindBuffer(gl.ARRAY_BUFFER, srcBuffer);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.bindBuffer(gl.COPY_READ_BUFFER, srcBuffer);

gl.bindBuffer(gl.ARRAY_BUFFER, dstBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(length), gl.STATIC_DRAW);

gl.copyBufferSubData(gl.COPY_READ_BUFFER, gl.ARRAY_BUFFER, 0, 0, length);

Đặc tả kỹ thuật

Specification
WebGL 2.0 Specification
# 3.7.3

Tương thích trình duyệt

Xem thêm