我加载Textured2D
,在ETC_RGB4
中表示如何将其更改为其他格式?说RGBA32
。基本上我想从3个频道切换到4个频道,从每个频道4个比特切换到每个频道8个。
由于
答案 0 :(得分:6)
您可以在运行时更改纹理格式。
1 。创建新的空Texture2D
并向RGBA32
参数提供TextureFormat
。这将创建一个RGBA32
格式的空纹理。
2 。使用Texture2D.GetPixels
获取ETC_RGB4
格式中旧纹理的像素,然后使用Texture2D.SetPixels
将这些像素放入来自#1 的新创建的纹理。
3 。致电Texture2D.Apply
以应用更改。那就是它。
一种简单的扩展方法:
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);
}