Spec-Zone.ru › Web APIs

GPUQueue: метод writeBuffer()

Ограниченная доступность

Эта функция не является базовой, так как она не работает во всех наиболее распространённых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Перед использованием в продакшене внимательно изучите таблицу совместимости с браузерами.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Примечание: Эта функция доступна в рабочих потоках.

Метод writeBuffer() интерфейса GPUQueue записывает предоставленный источник данных в указанный GPUBuffer.

Это удобная функция, предоставляющая альтернативу установке данных буфера с помощью отображения буфера и копирования буфера в буфер. Она позволяет агенту пользователя определить наиболее эффективный способ копирования данных.

Синтаксис

writeBuffer(buffer, bufferOffset, data, dataOffset, size)

Параметры

buffer

Объект GPUBuffer, представляющий буфер для записи данных.

bufferOffset

Число, представляющее смещение в байтах для начала записи данных внутри GPUBuffer.

data

Объект, представляющий источник данных для записи в GPUBuffer. Это может быть ArrayBuffer, TypedArray или DataView.

dataOffset Необязательно

Число, представляющее смещение для начала записи данных внутри источника данных. Это значение представляет собой количество элементов, если data — TypedArray, и количество байтов в противном случае. Если опущено, dataOffset по умолчанию равно 0.

size Необязательно

Число, представляющее размер содержимого для записи из data в buffer. Это значение представляет собой количество элементов, если data — TypedArray, и количество байтов в противном случае. Если опущено, size будет равно общему размеру data, минус dataOffset.

Возвращаемое значение

Ничего (Undefined).

Исключения

OperationError DOMException

Метод выбрасывает OperationError если не выполнены следующие критерии:

  • Размер data равен или больше 0.
  • dataOffset равен или меньше размера data.
  • Размер data (при преобразовании в байты, в случае TypedArrays) кратен 4.

Валидация

При вызове writeBuffer() должны быть соблюдены следующие критерии, в противном случае генерируется GPUValidationError и GPUQueue становится недоступным:

  • buffer доступен для использования, т.е. не недоступен (GPUBuffer недоступны, если они в данный момент отображены) или уничтожены (с помощью метода GPUBuffer.destroy()).
  • Использование GPUBuffer.usage buffer включает флаг GPUBufferUsage.COPY_DST.
  • bufferOffset, при преобразовании в байты, кратно 4.
  • Размер data - dataOffset + bufferOffset, при преобразовании в байты, равен или меньше размера GPUBuffer.size buffer.

Примеры

В нашей демо-версии рендеринга мы определяем некоторые данные вершин в Float32Array, которые мы будем использовать для отрисовки треугольника:

const vertices = new Float32Array([
  0.0, 0.6, 0, 1, 1, 0, 0, 1, -0.5, -0.6, 0, 1, 0, 1, 0, 1, 0.5, -0.6, 0, 1, 0,
  0, 1, 1,
]);

Для использования этих данных в конвейере рендеринга нам нужно поместить их в GPUBuffer. Сначала создадим буфер:

const vertexBuffer = device.createBuffer({
  size: vertices.byteLength, // make it big enough to store vertices in
  usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
});

Чтобы получить данные в буфер, мы можем использовать writeBuffer():

device.queue.writeBuffer(vertexBuffer, 0, vertices, 0, vertices.length);

Спецификации

Спецификация
WebGPU
# dom-gpuqueue-writebuffer

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
writeBuffer
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
превьюВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
превью 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/GPUQueue/writeBuffer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API