苹果中,没有etc-4的压缩格式,但是有pvrtc压缩格式,相比rgba的压缩格式,pvrtc的压缩比高很多,但是它有个特点,就是压缩完,图片会变成正方形,如果图集原始图片是长方形的,但是用了pvrtc压缩格式,就会导致图集乱了。所以我们需要判断图集是否是正方形,如果是,才设置它的压缩格式为正方形。
我们可以写个方法来检测
public static void CheckTextureFormat(string texturePath)
{
using(FileStream fs = new FileStream(texturePath,FileMode.Open))
{
using(BinaryReader br = new BinaryReader(fs))
{
br.ReadInt32();
br.ReadInt32();
br.ReadInt32();
br.ReadInt32();
var widthB = br.ReadInt32();
var wb = System.BitConverter.GetBytes(widthB);
var width = System.BitConverter.ToInt32(new byte[]{wb[3],wb[2],wb[1],wb[0]},0);
var heightB = br.ReadInt32();
var hb = System.BitConverter.GetBytes(heightB);
var height = System.BitConverter.ToInt32(new byte[]{hb[3],hb[2],hb[1],hb[0]},0);
if(width != height)
{
//不是正方形//
var assetPath = "Assets"+texturePath.Replace(Application.dataPath,"");
TextureImporter imp = AssetImporter.GetAtPath(assetPath) as TextureImporter;
var format = imp.GetAutomaticFormat("iPhone");
if(format.ToString().ToLower().Contains("pvr"))
{
Debug.Log("图片不是正方形,却使用了PVRTC压缩格式");
}
}
}
}
}
补充
图集压缩格式建议
|
Android |
iOS |
---|---|---|
RGB图 | RGB Compressed ETC 4 bits | 正方形图:RGB Compressed PVRTC 4 bits 长方形图:RGB 16bit |
alpha图 | RGB Compressed ETC 4 bits | 正方形图:RGB Compressed PVRTC 4 bits 长方形图:RGB 16bit |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。