Spec-Zone.ru › Web APIs

GPURenderPassEncoder: метод setIndexBuffer()

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

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

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

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

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

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

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

Синтаксис

setIndexBuffer(buffer, indexFormat, offset, size)

Параметры

buffer

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

indexFormat

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

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

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

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

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

Примечание к indexFormat

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

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

None (Undefined).

Проверка

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

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

Примеры

В примере Shadow Mapping из WebGPU Samples setIndexBuffer() используется в двух отдельных проходах рендеринга в каждом кадре анимации, один для отрисовки основной модели и один для отрисовки её тени. Изучите пример кода для полного контекста.

// ...

const commandEncoder = device.createCommandEncoder();
{
  const shadowPass = commandEncoder.beginRenderPass(shadowPassDescriptor);
  shadowPass.setPipeline(shadowPipeline);
  shadowPass.setBindGroup(0, sceneBindGroupForShadow);
  shadowPass.setBindGroup(1, modelBindGroup);
  shadowPass.setVertexBuffer(0, vertexBuffer);
  shadowPass.setIndexBuffer(indexBuffer, "uint16");
  shadowPass.drawIndexed(indexCount);

  shadowPass.end();
}
{
  const renderPass = commandEncoder.beginRenderPass(renderPassDescriptor);
  renderPass.setPipeline(pipeline);
  renderPass.setBindGroup(0, sceneBindGroupForRender);
  renderPass.setBindGroup(1, modelBindGroup);
  renderPass.setVertexBuffer(0, vertexBuffer);
  renderPass.setIndexBuffer(indexBuffer, "uint16");
  renderPass.drawIndexed(indexCount);

  renderPass.end();
}

// ...

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

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

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

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

Spec-Zone.ru

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