GPUBuffer: usage 屬性
注意:此功能在 Web Workers 中可用。
GPUBuffer 介面的只讀屬性 usage 包含表示 GPUBuffer 允許用途的 按位標誌。
usage 是透過傳遞給原始 GPUDevice.createBuffer() 呼叫的描述符物件中的 usage 屬性來設定的。
值
表示 GPUBuffer 首次建立時設定的原始用途的按位標誌。返回的數字是表示不同標誌的十進位制值的總和,如下表所示。
| 按位標誌 | 用途描述 | 十六進位制等效值 | 十進位制等效值 |
|---|---|---|---|
GPUBufferUsage.COPY_SRC |
該緩衝區可用作複製操作的源,例如 copyBufferToBuffer() 呼叫中的源引數。 |
0x0004 | 4 |
GPUBufferUsage.COPY_DST |
該緩衝區可用作複製/寫入操作的目標,例如 copyTextureToBuffer() 呼叫中的目標引數。 |
0x0008 | 8 |
GPUBufferUsage.INDEX |
該緩衝區可用作索引緩衝區,例如作為傳遞給 setIndexBuffer() 的 buffer 引數。 |
0x0010 | 16 |
GPUBufferUsage.INDIRECT |
該緩衝區可用於儲存間接命令引數,例如 drawIndirect() 或 dispatchWorkgroupsIndirect() 呼叫中的 indirectBuffer 引數。 |
0x0100 | 256 |
GPUBufferUsage.MAP_READ |
該緩衝區可用於讀取對映,例如呼叫 mapAsync() 時 mode 為 GPUMapMode.READ。此標誌只能與 GPUBufferUsage.COPY_DST 結合使用。 |
0x0001 | 1 |
GPUBufferUsage.MAP_WRITE |
該緩衝區可用於寫入對映,例如呼叫 mapAsync() 時 mode 為 GPUMapMode.WRITE。此標誌只能與 GPUBufferUsage.COPY_SRC 結合使用。 |
0x0002 | 2 |
GPUBufferUsage.QUERY_RESOLVE |
該緩衝區可用於捕獲查詢結果,例如 resolveQuerySet() 呼叫中的目標引數。 |
0x0200 | 512 |
GPUBufferUsage.STORAGE |
該緩衝區可用作儲存緩衝區,例如在建立 GPUBindGroup(透過 createBindGroup())時作為繫結組條目中的資源,該繫結組條目符合具有 "storage" 或 "read-only-storage" type 的緩衝區繫結佈局的 GPUBindGroupLayout 條目。 |
0x0080 | 128 |
GPUBufferUsage.UNIFORM |
該緩衝區可用作統一緩衝區,例如在建立 GPUBindGroup(透過 createBindGroup())時作為繫結組條目中的資源,該繫結組條目符合具有 "uniform" type 的緩衝區繫結佈局的 GPUBindGroupLayout 條目。 |
0x0040 | 64 |
GPUBufferUsage.VERTEX |
該緩衝區可用作頂點緩衝區,例如作為傳遞給 setVertexBuffer() 的 buffer 引數。 |
0x0020 | 32 |
示例
js
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
console.log(output.usage); // 132
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
console.log(stagingBuffer.usage); // 9
規範
| 規範 |
|---|
| WebGPU # dom-gpubuffer-usage |
瀏覽器相容性
載入中…