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