# ConvertTexture

> Adds a command to copy the pixel data from one texture, convert the data into a different format, and copy it into another texture.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Rendering](/engine/6000.6/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule

## ConvertTexture(RenderTargetIdentifier, RenderTargetIdentifier)

Adds a command to copy the pixel data from one texture, convert the data into a different format, and copy it into another texture.

```csharp
public void ConvertTexture(RenderTargetIdentifier src, RenderTargetIdentifier dst)
```

### Parameters

**** (\[RenderTargetIdentifier]\(/engine/6000.6/script-reference/unityengine/rendering/rendertargetidentifier)): The source texture. The texture must be a Texture2D or Cubemap.**** (\[RenderTargetIdentifier]\(/engine/6000.6/script-reference/unityengine/rendering/rendertargetidentifier)): The destination texture. The texture must be a Texture2D, Texture2DArray, Cubemap, or CubemapArray. The texture must also be uncompressed and correspond to a supported [RenderTextureFormat](/engine/6000.6/script-reference/unityengine/rendertextureformat.md).

### Remarks

This method adds a command to convert and copy pixel data from one texture to another on the GPU.

When you use `ConvertTexture`, Unity does the following:

1. Creates a temporary [RenderTexture](/engine/6000.6/script-reference/unityengine/rendertexture.md) that matches the size and format of the `dst` texture.
2. Uses [Graphics.Blit](/engine/6000.6/script-reference/unityengine/graphics/blit.md) to copy from the `src` texture to the temporary render texture, and converts to the format of `dst`.
3. Uses [Graphics.CopyTexture](/engine/6000.6/script-reference/unityengine/graphics/copytexture.md) to copy from the temporary render texture to the `dst` texture.

This means it might be faster to convert the texture before you load it into Unity. Or if you can create `dst` as a render texture, you can use [CommandBuffer.Blit](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/blit.md) instead.

You can use textures with different sizes for `src` and `dst`.

`ConvertTexture` doesn't support the following conversions:

* Cubemap to Texture2D.
* Conversions that use RenderTextures - use [CommandBuffer.Blit](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/blit.md) instead.

You can't use `ConvertTexture` if you use OpenGL with MacOS. Depending on your graphics API, you might not be able to do some types of conversions. For more information on compatibility, see [SystemInfo.copyTextureSupport](/engine/6000.6/script-reference/unityengine/systeminfo/copytexturesupport.md), [CopyTextureSupport](/engine/6000.6/script-reference/unityengine/rendering/copytexturesupport.md) and [CommandBuffer.CopyTexture](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/copytexture.md).

To copy the converted texture from the GPU to the CPU, use RequestIntoNativeArray.

Additional Resources: [CopyTextureSupport](/engine/6000.6/script-reference/unityengine/rendering/copytexturesupport.md).

## ConvertTexture(RenderTargetIdentifier, int, RenderTargetIdentifier, int)

Adds a command to copy the pixel data from one texture, convert the data into a different format, and copy it into another texture.

```csharp
public void ConvertTexture(RenderTargetIdentifier src, int srcElement, RenderTargetIdentifier dst, int dstElement)
```

### Parameters

**** (\[RenderTargetIdentifier]\(/engine/6000.6/script-reference/unityengine/rendering/rendertargetidentifier)): The source texture. The texture must be a Texture2D or Cubemap.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The element in the source texture to copy from. Use [CubemapFace](/engine/6000.6/script-reference/unityengine/cubemapface.md) if `src` is a Cubemap. Set the value to `0` if `src` is a 2D texture.**** (\[RenderTargetIdentifier]\(/engine/6000.6/script-reference/unityengine/rendering/rendertargetidentifier)): The destination texture. The texture must be a Texture2D, Texture2DArray, Cubemap, or CubemapArray. The texture must also be uncompressed and correspond to a supported [RenderTextureFormat](/engine/6000.6/script-reference/unityengine/rendertextureformat.md).**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The element in the source texture to copy to. For example, the [CubemapFace](/engine/6000.6/script-reference/unityengine/cubemapface.md) in a Cubemap or the slice in a texture array. Set the value to `0` if `dst` is a 2D texture.

### Remarks

This method adds a command to convert and copy pixel data from one texture to another on the GPU.

When you use `ConvertTexture`, Unity does the following:

1. Creates a temporary [RenderTexture](/engine/6000.6/script-reference/unityengine/rendertexture.md) that matches the size and format of the `dst` texture.
2. Uses [Graphics.Blit](/engine/6000.6/script-reference/unityengine/graphics/blit.md) to copy from the `src` texture to the temporary render texture, and converts to the format of `dst`.
3. Uses [Graphics.CopyTexture](/engine/6000.6/script-reference/unityengine/graphics/copytexture.md) to copy from the temporary render texture to the `dst` texture.

This means it might be faster to convert the texture before you load it into Unity. Or if you can create `dst` as a render texture, you can use [CommandBuffer.Blit](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/blit.md) instead.

You can use textures with different sizes for `src` and `dst`.

`ConvertTexture` doesn't support the following conversions:

* Cubemap to Texture2D.
* Conversions that use RenderTextures - use [CommandBuffer.Blit](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/blit.md) instead.

You can't use `ConvertTexture` if you use OpenGL with MacOS. Depending on your graphics API, you might not be able to do some types of conversions. For more information on compatibility, see [SystemInfo.copyTextureSupport](/engine/6000.6/script-reference/unityengine/systeminfo/copytexturesupport.md), [CopyTextureSupport](/engine/6000.6/script-reference/unityengine/rendering/copytexturesupport.md) and [CommandBuffer.CopyTexture](/engine/6000.6/script-reference/unityengine/rendering/commandbuffer/copytexture.md).

To copy the converted texture from the GPU to the CPU, use RequestIntoNativeArray.

Additional Resources: [CopyTextureSupport](/engine/6000.6/script-reference/unityengine/rendering/copytexturesupport.md).
