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