Spec-Zone.ru › Web APIs

GPURenderPassEncoder: метод drawIndexedIndirect()

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

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

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

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

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

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

Метод drawIndexedIndirect() интерфейса GPURenderPassEncoder рисует индексированные примитивы, используя параметры, считываемые из GPUBuffer.

Синтаксис

drawIndexedIndirect(indirectBuffer, indirectOffset)

Параметры

indirectBuffer

A GPUBuffer содержащий значения indexCount, instanceCount, firstIndex, baseVertex, и firstInstance, необходимые для выполнения операции рисования. Буфер должен содержать плотно упакованный блок из пяти 32-битных беззнаковых целочисленных значений, представляющих значения (всего 20 байтов), в том же порядке, что и аргументы для GPURenderPassEncoder.drawIndexed(). Например:

const uint32 = new Uint32Array(5);
uint32[0] = 3; // The indexCount value
uint32[1] = 1; // The instanceCount value
uint32[2] = 0; // The firstIndex value
uint32[3] = 0; // The baseVertex value
uint32[4] = 0; // The firstInstance value

// Write values into a GPUBuffer
device.queue.writeBuffer(buffer, 0, uint32, 0, uint32.length);

Примечание: Функция indirect-first-instance функция должна быть включена для использования значений отличных от нуля firstInstance. Если функция indirect-first-instance не включена, а firstInstance не равно нулю, вызов drawIndexedIndirect() будет обработан как нет действия.

indirectOffset

Смещение в байтах в indirectBuffer, где начинаются данные значений.

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

None (Undefined).

Валидация

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

  • indirectBuffer's GPUBuffer.usage содержит флаг GPUBufferUsage.INDIRECT.
  • indirectOffset + общий размер, указанный параметрами значений в indirectBuffer, меньше или равен GPUBuffer.size indirectBuffer.
  • indirectOffset кратно 4.

Примеры

// ...

// Create GPURenderPassEncoder
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Set pipeline and vertex buffer
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.setIndexBuffer(indexBuffer, "uint16");

// Create drawIndexedIndirect values
const uint32 = new Uint32Array(5);
uint32[0] = 3;
uint32[1] = 1;
uint32[2] = 0;
uint32[3] = 0;
uint32[4] = 0;

// Create a GPUBuffer and write the draw values into it
const drawValues = device.createBuffer({
  size: 20,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.INDIRECT,
});
device.queue.writeBuffer(drawValues, 0, uint32, 0, uint32.length);

// Draw the vertices
passEncoder.drawIndexedIndirect(drawValues, 0);

// End the render pass
passEncoder.end();

// End frame by passing array of GPUCommandBuffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);

// ...

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

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

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

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

Spec-Zone.ru

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