GPUBuffer: mapAsync() method

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Phương thức mapAsync() của giao diện GPUBuffer ánh xạ phạm vi được chỉ định của GPUBuffer. Nó trả về Promise được giải quyết khi nội dung của GPUBuffer sẵn sàng để truy cập. Khi GPUBuffer đang được ánh xạ, nó không thể được sử dụng trong bất kỳ lệnh GPU nào.

Khi buffer được ánh xạ thành công (có thể kiểm tra qua GPUBuffer.mapState), các lệnh gọi đến GPUBuffer.getMappedRange() sẽ trả về ArrayBuffer chứa các giá trị hiện tại của GPUBuffer, để đọc và cập nhật bởi JavaScript theo yêu cầu.

Khi bạn hoàn thành việc làm với các giá trị GPUBuffer, hãy gọi GPUBuffer.unmap() để hủy ánh xạ nó, làm cho nó có thể truy cập bởi GPU lại.

Cú pháp

js
mapAsync(mode)
mapAsync(mode, offset, size)

Tham số

mode

Cờ bitwise xác định xem GPUBuffer được ánh xạ để đọc hay ghi. Các giá trị có thể là:

GPUMapMode.READ

GPUBuffer được ánh xạ để đọc. Các giá trị có thể được đọc, nhưng bất kỳ thay đổi nào được thực hiện đối với ArrayBuffer được trả về bởi GPUBuffer.getMappedRange() sẽ bị loại bỏ khi GPUBuffer.unmap() được gọi.

Ánh xạ chế độ đọc chỉ có thể được sử dụng trên các GPUBuffer có cách sử dụng GPUBufferUsage.MAP_READ được đặt trên chúng (tức là khi được tạo bằng GPUDevice.createBuffer()).

GPUMapMode.WRITE

GPUBuffer được ánh xạ để ghi. Các giá trị có thể được đọc và cập nhật, bất kỳ thay đổi nào được thực hiện đối với ArrayBuffer được trả về bởi GPUBuffer.getMappedRange() sẽ được lưu vào GPUBuffer khi GPUBuffer.unmap() được gọi.

Ánh xạ chế độ ghi chỉ có thể được sử dụng trên các GPUBuffer có cách sử dụng GPUBufferUsage.MAP_WRITE được đặt trên chúng (tức là khi được tạo bằng GPUDevice.createBuffer()).

offset Optional

Số đại diện cho độ lệch, tính bằng byte, từ đầu buffer đến đầu phạm vi cần ánh xạ. Nếu offset bị bỏ qua, mặc định là 0.

size Optional

Số đại diện cho kích thước, tính bằng byte, của phạm vi cần ánh xạ. Nếu size bị bỏ qua, phạm vi được ánh xạ mở rộng đến cuối GPUBuffer.

Giá trị trả về

Promise được giải quyết với Undefined khi nội dung của GPUBuffer sẵn sàng để truy cập.

Xác thực

Các tiêu chí sau phải được đáp ứng khi gọi mapAsync(), nếu không OperationError DOMException sẽ được ném ra, promise bị từ chối và GPUValidationError được tạo ra:

  • offset là bội số của 8.
  • Tổng phạm vi cần ánh xạ (size nếu được chỉ định, hoặc GPUBuffer.size - offset nếu không) là bội số của 4.
  • Tổng phạm vi cần ánh xạ nằm trong giới hạn của GPUBuffer.
  • Nếu chế độ là GPUMapMode.READ, GPUBuffer có cách sử dụng GPUBufferUsage.MAP_READ.
  • Nếu chế độ là GPUMapMode.WRITE, GPUBuffer có cách sử dụng GPUBufferUsage.MAP_WRITE.

Ví dụ

Xem trang GPUBuffer chính để biết ví dụ.

Thông số kỹ thuật

Thông số kỹ thuật
WebGPU
# dom-gpubuffer-mapasync

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

Xem thêm