GPUCommandEncoder: метод copyTextureToBuffer()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно изучите таблицу совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Метод copyTextureToBuffer() интерфейса GPUCommandEncoder кодирует команду, которая копирует данные из GPUTexture в GPUBuffer.
Синтаксис
copyTextureToBuffer(source, destination, copySize)
Параметры
source-
Объект, определяющий текстуру для копирования данных. В сочетании с
copySize, определяет область подресурса исходной текстуры.sourceможет принимать следующие свойства: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, представляющий текстуру для копирования данных.
destination-
Объект, определяющий буфер для записи и структуру данных для записи в буфер. В сочетании с
copySize, определяет область целевого буфера.sourceможет принимать следующие свойства:buffer-
GPUBufferдля записи. offsetНеобязательно-
Смещение в байтах от начала
dataдо начальной позиции для записи скопированных данных. Если опущено,offsetпо умолчанию равно 0. bytesPerRowНеобязательно-
Число, представляющее шаг в байтах между началом каждой строки блоков (т.е. строки полных блоков текстурных элементов) и следующей строкой блоков. Требуется, если есть несколько строк блоков (т.е. высота или глубина копирования больше одного блока).
rowsPerImageНеобязательно-
Количество строк блоков на один образ внутри данных.
bytesPerRow×rowsPerImageдаст вам шаг в байтах между началом каждого целого изображения. Требуется, если нужно скопировать несколько изображений.
copySize-
Объект или массив, определяющий ширину, высоту и глубину/количество слоев массива копируемых данных. Ширина должна всегда быть указана, а высота и глубина/количество слоев массива — необязательны и по умолчанию равны 1, если опущено.
Следующий пример массива
copySize:[16, 16, 2];
Эквивалентный объект:
{ width: 16, height: 16, depthOrArrayLayers: 2 }
Значение результата
None (Undefined).
Проверка
При вызове copyTextureToBuffer() должны быть выполнены следующие условия; в противном случае генерируется GPUValidationError, и GPUCommandEncoder становится недействительным.
Для source:
-
mipLevelменьшеGPUTexture.mipLevelCount. -
origin.xкратно ширине блока текстурного элементаGPUTexture.format. -
origin.yкратно высоте блока текстурного элементаGPUTexture.format. - Если
GPUTexture.format— формат глубины или трафарета илиGPUTexture.sampleCountбольше 1, размер подресурса равенsize. sourceGPUTexture.usageвключает флагGPUTextureUsage.COPY_SRC.sourceGPUTexture.sampleCountравен 1.-
source.aspectотносится к одному аспектуGPUTexture.format. - Этот аспект является допустимым источником копирования изображения в соответствии с форматами глубины или трафарета.
sourceсовместимо сcopySize.
Для destination:
-
destination.bytesPerRowкратно 256. destination.bufferGPUBuffer.usageвключает флагGPUBufferUsage.COPY_DST.
Примеры
commandEncoder.copyTextureToBuffer(
{
texture: sourceTexture,
},
{
buffer: destinationBuffer,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpucommandencoder-copytexturetobuffer |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
copyTextureToBuffer |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
превью | 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/copyTextureToBuffer