GPUBuffer:getMappedRange() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUBuffer 介面的 getMappedRange() 方法返回一個 ArrayBuffer,其中包含指定範圍內 GPUBuffer 的已對映內容。

這隻有在 GPUBuffer 已透過 GPUBuffer.mapAsync() 成功對映後才能發生(可以透過 GPUBuffer.mapState 進行檢查)。在 GPUBuffer 被對映期間,它不能用於任何 GPU 命令。

當您完成使用 GPUBuffer 值的工作後,請呼叫 GPUBuffer.unmap() 來取消對映,使其可以再次被 GPU 訪問。如果嘗試透過 GPUBuffer.unmap() 以外的任何方式(例如呼叫 transfer())分離 ArrayBuffer,則會丟擲 TypeError

語法

js
getMappedRange()
getMappedRange(offset)
getMappedRange(offset, size)

引數

offset 可選

一個數字,表示從 GPUBuffer 已對映範圍的開始到要返回的 ArrayBuffer 中範圍開始的偏移量(以位元組為單位)。如果省略 offset,則預設為 0。

size 可選

一個數字,表示要返回的 ArrayBuffer 的大小(以位元組為單位)。如果省略 size,則範圍將延伸到 GPUBuffer 已對映範圍的末尾。

返回值

一個 ArrayBuffer

驗證

在呼叫 getMappedRange() 時,必須滿足以下標準,否則將丟擲 OperationError DOMException

  • offset 必須是 8 的倍數。
  • 要對映的總範圍(如果指定了 size,則為 size;如果未指定,則為已對映範圍長度 - offset)必須是 4 的倍數。
  • 總範圍必須在已對映範圍的邊界內,並且不能與其他任何活動的 getMappedRange() 呼叫指定的 ArrayBuffer 範圍重疊。

示例

請參閱 GPUBuffer 頁面中的示例。

規範

規範
WebGPU
# dom-gpubuffer-getmappedrange

瀏覽器相容性

另見