CommandBuffer.ConvertTexture
Declaration
public void ConvertTexture(Rendering.RenderTargetIdentifier src, Rendering.RenderTargetIdentifier dst);public void ConvertTexture(Rendering.RenderTargetIdentifier src, int srcElement, Rendering.RenderTargetIdentifier dst, int dstElement);Параметры
| Параметр | Описание |
|---|---|
| сердце | Текстура источника. Текстура должна быть Texture2D или Cubemap. |
| дст | Текстура назначения. Текстура должна быть Texture2D, Texture2DArray, Cubemap или CubemapArray. Текстура также должна быть несжатой и соответствовать поддерживаемым RenderTextureFormat. |
| srcElement | Элемент в исходной текстуре для копирования. Используйте CubemapFace, если src является кубическим изображением. Установите значение 0, если src является текстурой 2D. |
| dstElement | Элемент в исходной текстуре для копирования. Например, CubemapFace в кубическом отображении или слой в массиве текстур. Установите значение 0, если `dst` является текстурой 2D. |
Описание
Добавлена команда для копирования данных пикселей из одной текстуры, преобразования данных в другой формат и копирования их в другую текстуру.
Этот метод добавляет команду для преобразования и копирования пиксельных данных из одной текстуры в другую на GPU.
При использовании ConvertTextureUnity выполняет следующие действия:
- Создает временную текстуру RenderTexture, которая соответствует размеру и формату текстуры
dst. - Использует Graphics.Blit для копирования текстуры
srcво временную текстуру рендеринга и преобразует ее в форматdst. - Использует Graphics.CopyTexture для копирования из временной текстуры рендеринга в текстуру
dst.
Это означает, что, возможно, быстрее преобразовать текстуру перед загрузкой в Unity. Или, если вы можете создать dst в качестве текстуры рендеринга, вы можете использовать CommandBuffer.Blit вместо этого.
Вы можете использовать текстуры разных размеров для src и dst.ConvertTexture не поддерживает следующие преобразования:
- Кубическое отображение на Texture2D.
- Преобразования, которые используют RenderTextures — используйте CommandBuffer.Blit вместо этого.
Вы не можете использовать ConvertTexture, если используете OpenGL с MacOS. В зависимости от вашей графики API, вы можете не иметь возможности выполнять некоторые типы преобразований. Для получения дополнительной информации о совместимости, см. SystemInfo.copyTextureSupport, CopyTextureSupport и CommandBuffer.CopyTexture.
Для копирования преобразованной текстуры из GPU в CPU, используйте Texture2D.RequestIntoNativeArray.
Дополнительные ресурсы: CopyTextureSupport.