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

来源:互联网 发布:淘宝直通车选词助手 编辑:程序博客网 时间:2024/06/08 17:30

        在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是可以识别的。

    PVRTC2PVRTC4是两种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

0 0
原创粉丝点击