Spec-Zone.ru › Web APIs

GPURenderBundleEncoder: метод setVertexBuffer()

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

Эта функция не относится к Baseline, поскольку она не работает во всех широко используемых браузерах.

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

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

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

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

Метод setVertexBuffer() интерфейса GPURenderBundleEncoder устанавливает или сбрасывает текущий GPUBuffer для заданного слота, который будет предоставлять данные вершин для последующих команд отрисовки.

Примечание: Этот метод функционально идентичен своему аналогу в GPURenderPassEncoder — setVertexBuffer().

Синтаксис

setVertexBuffer(slot, buffer, offset, size)

Параметры

slot

Число, ссылающееся на слот буфера вершин, для которого необходимо установить буфер вершин.

buffer

GPUBuffer, представляющий буфер, содержащий данные вершин, которые будут использоваться для последующих команд отрисовки, или null, в этом случае любой ранее установленный буфер в данном слоте будет сброшен.

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

Число, представляющее смещение в байтах в buffer, где начинаются данные вершин. Если опущено, offset по умолчанию равно 0.

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

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

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

None (Undefined).

Проверка

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

  • buffer's GPUBuffer.usage содержит флаг GPUBufferUsage.VERTEX.
  • slot меньше ограничения GPUDevice's maxVertexBuffers limit.
  • offset + size меньше или равно GPUBuffer.size buffer.
  • offset кратно 4.

Примеры

Установка буфера вершин

function recordRenderPass(passEncoder) {
  if (settings.dynamicOffsets) {
    passEncoder.setPipeline(dynamicPipeline);
  } else {
    passEncoder.setPipeline(pipeline);
  }
  passEncoder.setVertexBuffer(0, vertexBuffer);
  passEncoder.setBindGroup(0, timeBindGroup);
  const dynamicOffsets = [0];
  for (let i = 0; i < numTriangles; ++i) {
    if (settings.dynamicOffsets) {
      dynamicOffsets[0] = i * alignedUniformBytes;
      passEncoder.setBindGroup(1, dynamicBindGroup, dynamicOffsets);
    } else {
      passEncoder.setBindGroup(1, bindGroups[i]);
    }
    passEncoder.draw(3, 1, 0, 0);
  }
}

Вышеприведенный фрагмент взят из примера Animometer в примерах WebGPU.

Сброс буфера вершин

// Set vertex buffer in slot 0
passEncoder.setVertexBuffer(0, vertexBuffer);

// Later, unset vertex buffer in slot 0
passEncoder.setVertexBuffer(0, null);

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

Спецификация
WebGPU
# dom-gpurendercommandsmixin-setvertexbuffer

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
setVertexBuffer
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
превьюВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
превью 121 Нет 81 Нет 25.0 121
unset_vertex_buffer
117В настоящее время поддерживается только на ChromeOS, macOS и Windows.
117В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет
103В настоящее время поддерживается только на ChromeOS, macOS и Windows.
превью 121 Нет 81 Нет 25.0 121

См. также

  • The 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/GPURenderBundleEncoder/setVertexBuffer

Spec-Zone.ru

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