压缩纹理之前和之后

时间:2015-10-02 10:37:36

标签: unity3d textures image-compression

我想用Unity创建一个程序,在左侧的分屏中显示.jpg或.png图像,在右侧显示压缩图像(ETC或DXT)。

我试图像这样解决它:

void CompressImage()
{
    original_image = new Texture2D(Screen.height, Screen.width, TextureFormat.ASTC_RGBA_12x12, false);
    GetComponent<Renderer>().material.mainTexture = original_image;
}

public void OnGUI()
{
    GUI.DrawTexture(new Rect(0, 0, original_image.height, original_image.width), original_image);
} 

我正在以正确的方式进行压缩吗?当我尝试显示压缩图像时,没有图像可以看到,但有一些随机颜色。

我是新手,如果有人可以帮助我,那就太好了。 谢谢

1 个答案:

答案 0 :(得分:0)

您只能在编辑器中执行此操作。构建只能转换基本格式的纹理。

您可以使用Texture2D.Compress方法将纹理压缩为DXT格式, 或EditorUtility.CompressTexture获取更多格式,但只能在编辑器中使用。

您获得随机颜色,因为您创建纹理但不提供任何数据。所以在记忆中你有垃圾。

修改

Unity正在从构建中剥离负责纹理压缩的代码,因为没有人使用它,它很慢并且构建必须尽可能小。如果你真的需要在你的构建中进行压缩,你必须自己实现它或者为它找到一个库。