Spec-Zone.ru › Web APIs

GPURenderBundleEncoder: метод setIndexBuffer()

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

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

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

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

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

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

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

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

Синтаксис

setIndexBuffer(buffer, indexFormat, offset, size)

Параметры

buffer

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

indexFormat

Перечислимое значение, определяющее формат данных индексов, содержащихся в buffer. Возможные значения:

  • "uint16"
  • "uint32"
offset Необязательно

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

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

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

Примечание по indexFormat

indexFormat определяет тип данных значений индексов в буфере и, при использовании с конвейером, который определяет топологию примитива strip ("line-strip" или "triangle-strip"), также определяет значение сброса примитива. Значение сброса примитива — это значение индекса, указывающее, что следует начать новый примитив, а не продолжать построение ленты с предыдущими индексированными вершинами. Значение равно 0xFFFF для "uint16", или 0xFFFFFFFF для "uint32".

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

Ничего (Undefined).

Валидация

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

  • buffer содержит флаг GPUBufferUsage.INDEX.
  • offset + size меньше или равно размеру buffer — GPUBuffer.size.
  • offset кратно размеру в байтах indexFormat (2 для "uint16", 4 для "uint32").

Примеры

// ...

const bundleEncoder = device.createRenderBundleEncoder(descriptor);

bundleEncoder.setPipeline(pipeline);
bundleEncoder.setBindGroup(0, sceneBindGroupForRender);
bundleEncoder.setBindGroup(1, modelBindGroup);
bundleEncoder.setVertexBuffer(0, vertexBuffer);
bundleEncoder.setIndexBuffer(indexBuffer, "uint16");
bundleEncoder.drawIndexed(indexCount);

const renderBundle = bundleEncoder.finish();

// ...

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

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

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
setIndexBuffer
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/GPURenderBundleEncoder/setIndexBuffer

Spec-Zone.ru

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