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 |
См. также
© 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