Spec-Zone.ru › Web APIs

GPURenderPassEncoder: метод draw()

Ограниченное использование

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

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

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

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

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

Метод draw() интерфейса GPURenderPassEncoder рисует примитивы на основе буферов вершин, предоставленных setVertexBuffer().

Синтаксис

draw(vertexCount)
draw(vertexCount, instanceCount)
draw(vertexCount, instanceCount, firstVertex)
draw(vertexCount, instanceCount, firstVertex, firstInstance)

Параметры

vertexCount

Число, определяющее количество вершин для отрисовки.

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

Число, определяющее количество экземпляров для отрисовки. Если опущено, по умолчанию instanceCount равно 1.

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

Число, определяющее смещение в буферах вершин для начала отрисовки, в вершинах. Если опущено, по умолчанию firstVertex равно 0.

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

Число, определяющее первый экземпляр для отрисовки. Если опущено, по умолчанию firstInstance равно 0.

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

None (Undefined).

Примеры

В нашем демо-примере отрисовки несколько команд записываются через GPUCommandEncoder. Большинство из этих команд исходят из GPURenderPassEncoder, созданного с помощью GPUCommandEncoder.beginRenderPass(). draw() используется для указания, что нужно нарисовать три вершины, чтобы создать наш треугольник.

// ...

const renderPipeline = device.createRenderPipeline(pipelineDescriptor);

// Create GPUCommandEncoder to issue commands to the GPU
// Note: render pass descriptor, command encoder, etc. are destroyed after use, fresh one needed for each frame.
const commandEncoder = device.createCommandEncoder();

// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass
const renderPassDescriptor = {
  colorAttachments: [
    {
      clearValue: clearColor,
      loadOp: "clear",
      storeOp: "store",
      view: context.getCurrentTexture().createView(),
    },
  ],
};

const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Draw the triangle
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

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

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

// ...

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

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

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

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

Spec-Zone.ru

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