我想用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);
}
我正在以正确的方式进行压缩吗?当我尝试显示压缩图像时,没有图像可以看到,但有一些随机颜色。
我是新手,如果有人可以帮助我,那就太好了。 谢谢
答案 0 :(得分:0)
您只能在编辑器中执行此操作。构建只能转换基本格式的纹理。
您可以使用Texture2D.Compress方法将纹理压缩为DXT格式, 或EditorUtility.CompressTexture获取更多格式,但只能在编辑器中使用。
您获得随机颜色,因为您创建纹理但不提供任何数据。所以在记忆中你有垃圾。
修改强>
Unity正在从构建中剥离负责纹理压缩的代码,因为没有人使用它,它很慢并且构建必须尽可能小。如果你真的需要在你的构建中进行压缩,你必须自己实现它或者为它找到一个库。