GPUDevice: метод createBuffer()
Ограниченная доступность
Эта функция не относится к базовому уровню, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод createBuffer() интерфейса GPUDevice создаёт GPUBuffer, в котором хранятся исходные данные для использования в операциях с графическим процессором.
Синтаксис
createBuffer(descriptor)
Параметры
descriptor-
Объект, содержащий следующие свойства:
labelНеобязательно-
Строка, предоставляющая метку, которая может использоваться для идентификации объекта, например, в сообщениях
GPUErrorили предупреждениях консоли. mappedAtCreationНеобязательно-
Булево значение. Если установлено в
true, буфер будет отображён при создании, что означает, что вы можете установить значения внутри буфера немедленно, вызвавGPUBuffer.getMappedRange(). Значение по умолчанию -false.Обратите внимание, что допустимо установить
mappedAtCreation: true, чтобы вы могли задать начальные данные буфера, даже если флаги использованияGPUBufferUsage.MAP_READилиGPUBufferUsage.MAP_WRITEне установлены. size-
Число, представляющее размер буфера в байтах.
usage-
Битовые флаги, представляющие разрешённые способы использования
GPUBuffer. Возможные значения находятся в таблице значенийGPUBuffer.usage.Обратите внимание, что несколько возможных способов использования можно указать, разделив значения символами «|», например:
usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
Возвращаемое значение
Экземпляр объекта GPUBuffer.
Валидация
При вызове createBuffer() должны быть соблюдены следующие критерии; в противном случае генерируется GPUValidationError, и возвращается неверный объект GPUBuffer:
- Указан допустимый
usage. -
Указан
GPUBufferUsage.MAP_READ, и не указаны дополнительные флаги, кромеGPUBufferUsage.COPY_DST. -
Указан
GPUBufferUsage.MAP_WRITE, и не указаны дополнительные флаги, кромеGPUBufferUsage.COPY_SRC. -
Указан
mappedAtCreation: true, и указанныйsizeкратен 4.
Примечание: Если выделение буфера не удаётся без каких-либо особых побочных эффектов, генерируется объект GPUOutOfMemoryError.
Примеры
В нашем примере вычислений мы создаём буфер вывода для чтения вычислений графического процессора и буфер кэширования для отображения в 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 |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createBuffer |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
- API WebGPU
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUDevice/createBuffer