Spec-Zone.ru › Web APIs

GPURenderPassEncoder: метод setVertexBuffer()

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

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

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

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

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

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

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

Синтаксис

setVertexBuffer(slot, buffer, offset, size)

Параметры

slot

Число, ссылающееся на слот буфера вершин, для которого нужно установить буфер вершин.

buffer

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

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

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

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

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

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

Ничего (Undefined).

Валидация

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

  • buffer содержит флаг GPUBufferUsage.VERTEX в GPUBuffer.usage.
  • slot меньше или равно предельному значению GPUDevice для maxVertexBuffers (предел).
  • offset + size меньше или равно размеру buffer GPUBuffer.size.
  • offset кратно 4.

Примеры

Установка буфера вершин

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

// ...

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()]);

// ...

Сброс буфера вершин

// Set vertex buffer in slot 0
passEncoder.setVertexBuffer(0, vertexBuffer);

// Later, unset vertex buffer in slot 0
passEncoder.setVertexBuffer(0, null);

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

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

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

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

Spec-Zone.ru

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