C# 在unity中更改Texture2D格式
我加载了一个C# 在unity中更改Texture2D格式,c#,unity3d,C#,Unity3d,我加载了一个Textured2D,它在ETC\u RGB4中表示,如何将其更改为另一种格式?说RGBA32。基本上我想从3个通道切换到4个,从每个通道4位切换到每个通道8位 谢谢您可以在运行时更改纹理格式 1。创建新的空Texture2D,并向TextureFormat参数提供RGBA32。这将使用RGBA32格式创建一个空纹理 2。使用Texture2D.GetPixels获取ETC\u RGB4格式的旧纹理的像素,然后使用Texture2D.SetPixels将这些像素放入从#1创建的新纹理
Textured2D
,它在ETC\u RGB4
中表示,如何将其更改为另一种格式?说RGBA32
。基本上我想从3个通道切换到4个,从每个通道4位切换到每个通道8位
谢谢您可以在运行时更改纹理格式 1。创建新的空
Texture2D
,并向TextureFormat
参数提供RGBA32
。这将使用RGBA32
格式创建一个空纹理
2。使用Texture2D.GetPixels
获取ETC\u RGB4
格式的旧纹理的像素,然后使用Texture2D.SetPixels
将这些像素放入从#1创建的新纹理中
3。调用Texture2D。应用
以应用更改。就这样
一种简单的扩展方法:
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;
}
}
用法:
public Texture2D theOldTextue;
// Update is called once per frame
void Start()
{
Texture2D RGBA32Texture = theOldTextue.ChangeFormat(TextureFormat.RGBA32);
}
根据
GetRawTextureData
返回一个字节数组,而不是前面提到的ETC\u RBG4
。这里有什么我不明白的吗?它是不清楚和混乱的,让我改变我的问题。