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); }