C# 在Unity中,如何将压缩的纹理资源转换为内存中的RGB24?

C# 在Unity中,如何将压缩的纹理资源转换为内存中的RGB24?,c#,unity3d,textures,image-conversion,C#,Unity3d,Textures,Image Conversion,我试图将静态Texture2D资源传递到库,但它只需要RGB24、RGB32或RGB32A。这些都是未压缩的,所以以这种格式存储我的纹理并不是一个真正的选择,它将是巨大的 如果我的Texture2D以压缩格式存储,如何将其转换为内存中的RGB24(或RGB32) 我知道如何创建具有正确格式和大小的新纹理,我只是不知道如何在没有着色器和rendertarget等的情况下移动图像数据,但我认为有一种更快更简单的方法 因此,在C#中,如何将压缩的纹理资源转换为内存中的RGB24?首先在导入设置中将纹理

我试图将静态Texture2D资源传递到库,但它只需要RGB24、RGB32或RGB32A。这些都是未压缩的,所以以这种格式存储我的纹理并不是一个真正的选择,它将是巨大的

如果我的Texture2D以压缩格式存储,如何将其转换为内存中的RGB24(或RGB32)

我知道如何创建具有正确格式和大小的新纹理,我只是不知道如何在没有着色器和rendertarget等的情况下移动图像数据,但我认为有一种更快更简单的方法


因此,在C#中,如何将压缩的纹理资源转换为内存中的RGB24?

首先在导入设置中将纹理标记为读/写。然后可以使用Texture2D.GetPixels32检索像素数据。如果您的库不支持unity为Color32提供的默认格式(它是ARGB或RGBA,不记得了),则必须手动转换