Spec-Zone.ru › Web APIs

GPUCommandEncoder: метод copyBufferToTexture()

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

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

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

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

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

Метод copyBufferToTexture() интерфейса GPUCommandEncoder кодирует команду, копирующую данные из GPUBuffer в GPUTexture.

Синтаксис

copyBufferToTexture(source, destination, copySize)

Параметры

source

Объект, определяющий буфер для копирования, а также структуру данных в буфере, которые будут скопированы в текстуру. В сочетании с copySize, определяет область исходного буфера. source может содержать следующие свойства:

buffer

GPUBuffer для копирования.

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

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

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

Число, представляющее шаг в байтах между началом каждой строки блоков (т. е. строкой полных блоков текстул) и последующей строкой блоков. Это требуется, если есть несколько строк блоков (т. е. высота или глубина копирования больше одного блока).

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

Количество строк блоков на одно изображение внутри данных. bytesPerRow × rowsPerImage даст вам шаг в байтах между началом каждого полного изображения. Это требуется, если для копирования имеется несколько изображений.

destination

Объект, определяющий текстуру, в которую будут записаны данные. В сочетании с copySize, определяет область подресурса целевой текстуры. destination может содержать следующие свойства:

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

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

"all"

Будут записаны все доступные аспекты формата текстуры, что может означать все или любые из цветовых, глубинных и стереоскопических аспектов в зависимости от используемого формата.

"depth-only"

Будет записан только глубинной аспект формата глубины или стереоскопии.

"stencil-only"

Будет записан только стереоскопический аспект формата глубины или стереоскопии.

Если опущено, aspect принимает значение "all".

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

Число, представляющее уровень mip-карты текстуры, в которую будут записаны данные. Если опущено, по умолчанию mipLevel равно 0.

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

Объект или массив, определяющий исходную точку копирования — минимальный угол области текстуры, в которую будут записаны данные. В сочетании с size, определяет полный объем области копирования. Значения x, y, и z по умолчанию равны 0, если любой из origin опущен.

Вот пример массива:

[0, 0, 0];

Эквивалентный объект выглядит следующим образом:

{
  x: 0,
  y: 0,
  z: 0
}
texture

Объект GPUTexture, представляющий текстуру, в которую будут записаны данные.

copySize

Объект или массив, определяющий ширину, высоту и количество слоев глубины/массива копируемых данных. Ширина всегда должна быть указана, а высота и глубина/слои массива являются необязательными и по умолчанию равны 1, если опушены.

Вот пример массива copySize,

[16, 16, 2];

Эквивалентный объект выглядит следующим образом:

{
  width: 16,
  height: 16,
  depthOrArrayLayers: 2
}

Значение возврата

None (Undefined).

Валидация

При вызове copyBufferToTexture() должны быть соблюдены следующие условия, в противном случае будет сгенерирована ошибка GPUValidationError, и GPUCommandEncoder станет недопустимым.

Для source:

  • source.bytesPerRow является кратным 256.
  • Для source.buffer свойство GPUBuffer.usage включает флаг GPUBufferUsage.COPY_SRC.

Для destination:

  • mipLevel меньше GPUTexture.mipLevelCount.
  • origin.x кратно ширине блока текстул GPUTexture.format.
  • origin.y кратно высоте блока текстул GPUTexture.format.
  • Если GPUTexture.format является форматом глубины или стереоскопии или GPUTexture.sampleCount больше 1, размер подресурса равен size.
  • Для destination свойство GPUTexture.usage включает флаг GPUTextureUsage.COPY_DST.
  • Для destination свойство GPUTexture.sampleCount равно 1.
  • destination.aspect относится к одному аспекту GPUTexture.format.
  • Этот аспект является допустимой областью копирования изображений в соответствии с форматами глубины или стереоскопии.
  • destination совместим с copySize.

Примеры

commandEncoder.copyBufferToTexture(
  {
    buffer: sourceBuffer,
  },
  {
    texture: destinationTexture,
  },
  {
    width: 16,
    height: 16,
    depthOrArrayLayers: 2,
  },
);

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

Спецификация
WebGPU
# dom-gpucommandencoder-copybuffertotexture

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

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

Spec-Zone.ru

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