Как изменить формат текстуры с Alpha8 на RGBA в Unity3d? - PullRequest
0 голосов
/ 02 августа 2020

Я пытался изменить формат с камеры, которая дает текстуру в Alpha8 на RGBA , и пока безуспешно.

Это код, который я пробовал:

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

И я называю код следующим образом:

  Texture imgTexture = Aplpha8Texture.ChangeFormat(TextureFormat.RGBA32);

Но изображение искажается и не отображается.

Кто-нибудь знает, как изменить это Alpha8 на RGBA , чтобы я мог обрабатывать его, как любое другое изображение в OpenCV?

1 Ответ

0 голосов
/ 12 августа 2020

Друг дал мне ответ:

    Color[] cs =oldTexture.GetPixels();
    for(int i = 0; i < cs.Length; i++){//we want to set the r g b values to a
        cs[i].r = cs[i].a;
        cs[i].g = cs[i].a;
        cs[i].b = cs[i].a;
        cs[i].a = 1.0f;                                                
    }
    //set the pixels in the new texture
    newTex.SetPixels(cs);
    //Apply
    newTex.Apply();

Это потребует много ресурсов, но обязательно сработает. Если вы знаете лучший способ внести это изменение, добавьте ответ в эту ветку.

...