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



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

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

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

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

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

最新更新