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

时间:2017-03-27 20:44:30

标签: c# unity3d textures image-conversion

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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