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
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ớiArrayBufferđược trả về bởiGPUBuffer.getMappedRange()sẽ bị loại bỏ khiGPUBuffer.unmap()được gọi.Ánh xạ chế độ đọc chỉ có thể được sử dụng trên các
GPUBuffercó cách sử dụngGPUBufferUsage.MAP_READđược đặt trên chúng (tức là khi được tạo bằngGPUDevice.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ớiArrayBufferđược trả về bởiGPUBuffer.getMappedRange()sẽ được lưu vàoGPUBufferkhiGPUBuffer.unmap()được gọi.Ánh xạ chế độ ghi chỉ có thể được sử dụng trên các
GPUBuffercó cách sử dụngGPUBufferUsage.MAP_WRITEđược đặt trên chúng (tức là khi được tạo bằngGPUDevice.createBuffer()).
offsetOptional-
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
offsetbị bỏ qua, mặc định là 0. sizeOptional-
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
sizebị bỏ qua, phạm vi được ánh xạ mở rộng đến cuốiGPUBuffer.
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:
offsetlà bội số của 8.- Tổng phạm vi cần ánh xạ (
sizenếu được chỉ định, hoặcGPUBuffer.size-offsetnế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,GPUBuffercó cách sử dụngGPUBufferUsage.MAP_READ. - Nếu chế độ là
GPUMapMode.WRITE,GPUBuffercó cách sử dụngGPUBufferUsage.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> |