Unity 6.3
0 онлайн 89 гостей 3 в системе
Вход

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 выполняет следующие действия:

  1. Создает временную текстуру RenderTexture, которая соответствует размеру и формату текстуры dst.
  2. Использует Graphics.Blit для копирования текстуры src во временную текстуру рендеринга и преобразует ее в формат dst.
  3. Использует 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.