GPUDevice:createBuffer() 方法
注意:此功能在 Web Workers 中可用。
createBuffer() 方法是 GPUDevice 介面的一個方法,用於建立一個 GPUBuffer,以便在 GPU 操作中儲存原始資料。
語法
createBuffer(descriptor)
引數
描述符(descriptor)-
包含以下屬性的物件:
label可選-
一個字串,提供可用於識別物件的標籤,例如在
GPUError訊息或控制檯警告中。 mappedAtCreation可選-
一個布林值。如果設定為
true,則緩衝區將在建立時被對映,這意味著您可以透過呼叫GPUBuffer.getMappedRange()來立即設定緩衝區內的值。預設值為false。請注意,即使未設定
GPUBufferUsage.MAP_READ或GPUBufferUsage.MAP_WRITE使用標誌,也可以將mappedAtCreation: true設定為緩衝區設定初始資料。 size-
一個表示緩衝區大小(以位元組為單位)的數字。如果
mappedAtCreation設定為true,則此值必須是4的倍數。 usage-
表示
GPUBuffer允許使用的 位標誌。可能的值在GPUBuffer.usage值表 中。請注意,可以透過按位 OR 分隔值來指定多個可能的用法,例如:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE。
返回值
一個 GPUBuffer 物件例項。
異常
RangeErrorDOMException-
如果
mappedAtCreation設定為true,並且指定的size不是4的倍數,則會丟擲此錯誤。
驗證
呼叫 createBuffer() 時必須滿足以下條件,否則會生成 GPUValidationError 並返回一個無效的 GPUBuffer 物件。
- 指定了有效的
usage。 - 指定了
GPUBufferUsage.MAP_READ,並且除了GPUBufferUsage.COPY_DST之外沒有指定其他標誌。 - 指定了
GPUBufferUsage.MAP_WRITE,並且除了GPUBufferUsage.COPY_SRC之外沒有指定其他標誌。
注意:如果緩衝區分配失敗而沒有任何特定副作用,則會生成一個 GPUOutOfMemoryError 物件。
示例
在我們的 基礎計算演示 中,我們建立了一個用於讀取 GPU 計算結果的輸出緩衝區,以及一個用於 JavaScript 訪問的對映暫存緩衝區。
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
規範
| 規範 |
|---|
| WebGPU # dom-gpudevice-createbuffer |
瀏覽器相容性
載入中…