Changer le format Texture2D en une unité

J’ai un Textured2D chargé qui est représenté dans ETC_RGB4 Comment puis-je changer cela dans un autre format? dire RGBA32 . En gros, je veux passer de 3 canaux à 4 et de 4 bits par canal à 8 par canal.

Merci

Vous pouvez changer le format de texture pendant l’exécution.

1. Créez une nouvelle Texture2D vide et fournissez RGBA32 à l’argument TextureFormat . Cela créera une texture vide au format RGBA32 .

2 Texture2D.GetPixels pour obtenir les pixels de l’ancienne texture au format ETC_RGB4 , puis utilisez Texture2D.SetPixels pour les placer dans la nouvelle texture créée à partir de # 1 .

3. Appelez Texture2D.Apply . Texture2D.Apply pour appliquer les modifications. C’est tout.

Une méthode d’extension simple pour cela:

 public static class TextureHelperClass { public static Texture2D ChangeFormat(this Texture2D oldTexture, TextureFormat newFormat) { //Create new empty Texture Texture2D newTex = new Texture2D(2, 2, newFormat, false); //Copy old texture pixels into new one newTex.SetPixels(oldTexture.GetPixels()); //Apply newTex.Apply(); return newTex; } } 

USAGE :

 public Texture2D theOldTextue; // Update is called once per frame void Start() { Texture2D RGBA32Texture = theOldTextue.ChangeFormat(TextureFormat.RGBA32); }