使用前必须先解压纹理EncodeToPNG
在上面。你应该能够做到这一点RenderTexture
。复制压缩包Texture2D
to RenderTexture
。分配RenderTexture
to RenderTexture.active
然后使用ReadPixels
复制像素RenderTexture
到新的Texture2D
您希望采用解压缩格式。现在,您可以使用EncodeToPNG
on it.
执行此操作的辅助函数:
public static class ExtensionMethod
{
public static Texture2D DeCompress(this Texture2D source)
{
RenderTexture renderTex = RenderTexture.GetTemporary(
source.width,
source.height,
0,
RenderTextureFormat.Default,
RenderTextureReadWrite.Linear);
Graphics.Blit(source, renderTex);
RenderTexture previous = RenderTexture.active;
RenderTexture.active = renderTex;
Texture2D readableText = new Texture2D(source.width, source.height);
readableText.ReadPixels(new Rect(0, 0, renderTex.width, renderTex.height), 0, 0);
readableText.Apply();
RenderTexture.active = previous;
RenderTexture.ReleaseTemporary(renderTex);
return readableText;
}
}
Usage:
创建压缩纹理:
Texture2D tex = new Texture2D(recwidth, recheight, TextureFormat.RGB24, false);
tex.ReadPixels(rex, rdPXX, rdPXY);
tex.Apply();
tex.Compress(false);
从压缩纹理创建一个新的解压缩纹理:
Texture2D decopmpresseTex = tex.DeCompress();
编码为 png
var bytes = decopmpresseTex.EncodeToPNG();