cocos2d学习笔记(二)CCSpriteBatchNode相关

说到cocos2d,就不得不说CCSpriteBatchNode


用CCSpriteBatchNode的好处:

1、减少OpenGL ES的bind call,这里简单说下图片的载入。当一张图片要显示时,首先它会被转为texture,之后装入内存,因为GPU大多认识解压后的图片(png是压缩格式的图片,GPU也可以处理一些压缩格式的,比如PVRTC),然后通过OpenGL ES把这张图片画到屏幕上,当一个场景载入大量图片时,势必会多次调用OpenGL ES,这样GPU都压力就会很大,帧数就掉下来了。使用CCSpriteBatchNode可以一次性的把当前场景所有的图片都载入进来,从而减少大量GPU的运算,帧数自然就高了

2、减少内存占用,其实这一点现在已经不是最重要的了,因为3gs以后的设备都支持NPOT(NON POWER OF TWO)了。老GPU保存texture的时候只能存为power-of-two的大小,也就是你都图片是50x50像素的,最后在内存中最后就变为64x64的了,那么64 * 64 - 50 * 50这么大块的内存相当于浪费掉了(实际上,CPU和GPU操作图片内存地址不是一个,所以当GPU操作图片的时候,这个图片还要被考到GPU能操作的内存区域,所以那部分浪费都内存还会再被拷贝一便)。而使用texture atlas就没必要担心这个了,texture atlas让你把一个一个的图片放到一起,然后一次性载入内存,这样那些每张图片都浪费一点的内存就会大大减少了。不过在cocos2d1.1中,默认只要设备支持NPOT,就会自动开启NPOT,我现在用的版本是1.0.0,在ccConfig.h中看到:

@deprecated This value will be removed in 1.1 and NPOT textures will be loaded by default if the device supports it.

所以科技的发展多么重要,让我们需要考虑的越来越少了,哈哈!


其实现在最重要的一点还是第一条


制作texture atlas比较好用的软件有:TexturePacker,链接我就不放了,这东西网上一搜就找到了


CCSpriteBatchNode的使用也很简单,首先用CCSpriteFrameCache载入frame file([CCSpriteFrameCachesharedSpriteFrameCache] addSpriteFramesWithFile:@"scene1atlas.plist"]),是一个plist文件,使用TexturePacker创建texture atlas的时候会自动生成,然后创建[CCSpriteBatchNode batchNodeWithFile:@"scene1atlas.png"]CCSpriteBatchNode对象并添加到CCLayer中,然后CCSprite通过- (id) initWithSpriteFrame:(CCSpriteFrame*)spriteFrame创建对象,最后CCSpriteBatchNode对象 addChild:CCSprite对象即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值