您的位置:首页 > 移动开发 > Unity3D

unity游戏性能优化 - 贴图优化

2014-07-08 11:23 344 查看
在unity3d中贴图的内存消耗通常所占的比例比较搞,今天主要记录我所遇到的贴图优化及使用方面的问题。

贴图的使用过程中通常会遇到贴图模糊毛糙难看的情况,这一般是我们用于显示GUI图片的时候出现,那么相应的处理办法就是将导入到unity中的图片的类型改为GUI,unity默认导入的格式都是texture,这样图片就会比较接近如正常效果了。

另一种情况就是图片尺寸的要求要是2的幂次方,不然unity不会根据平台需要进行压缩,加大了程序尺寸,对于3d程序员来说,文理要求的本身也要是2的幂次方为最佳,提高性能。

还有一种情况就是,图片尺寸的大小,我们知道一张1024*1024的图片是4M,所以我们在压缩图集的时候应该尽可能1024*1024或更小。

再来说一个关于pvr算法问题,例如:一张1024*1024的贴图和一张1024*512的贴图,我们通常会选择哪一张?答案是选1024*1024,至于pvr算法的问题我也不太懂,我看到一片文章有介绍pvr与png的内存占用提供大家参考。

Zwoptex生成的spritesheet除了可以导出png格式的图片外还有pvr格式。pvr格式是iOS的显示芯片可以直接读取的,不需要经过解析就能直接显示,所以渲染速度更快,更节省内存。

我特意在cocos2D 2.0 rc1版本做了一项测试:

一个空的cocos2D模版工程运行起来之后占用的内存大约是4MB。

直接用CCSprite显示一张2048*1024的数据格式为RGBA565的PNG图片之后,内存占用达到了20MB。

同样的情况下换成pvr格式之后,内存占用为16MB。也就是说png格式的图片占用了20-4=16MB,pvr格式的图片占用了16-4=12MB。节省了25%。

Zwoptex还有一个选项叫做“ccz压缩”,选中之后图像的大小几乎可以减小一半。这样的文件格式成了:xxx.pvr.ccz,cocos2d是可以识别的。

PVRTC2和PVRTC4是两种pvr压缩的图像格式,他们都是pvr文件。这两种图像格式比普通图像有更快的加载速度和更小的内存占用。

PVRTC4: Compressed format, 4 bits per pixel, ok image quality

PVRTC2: Compressed format, 2 bits per pixel, poor image quality

一般pvr格式文件的图像格式有:

RGBA8888: 32-bit texture with alpha channel, best image quality

RGBA4444: 16-bit texture with alpha channel, good image quality

RGB565: 16-bit texture without alpha channel, good image quality but no alpha (transparency)

图像占用内存的公式是:numBytes
= width * height * bitsPerPixel / 8

也就是说2048*2048的RGBA8888占用内存16MB,而PVRTC4只占用2MB

参考文章地址:http://blog.sina.com.cn/s/blog_6fbe210701015j7z.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: