1 FPS含义
2
渲染树的结构
3
优化原理
CCSpriteBatchNode介绍
A
先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一次渲染调用。也就是说,渲染的次数越少,游戏的运行效率越高。
B CCSpriteBatchNode就是cocos2d-x为了降低渲染批次而建立的一个专门管理精灵的类。
C
如果要加载1000个精灵,加载,渲染重复执行1000次,使用CCSpriteBatchNode批量渲染,一次渲染就把所有的CCSprite绘制出来。大量降低渲染批次。
4
案例说明:
BachNode.h |
#ifndef __BACHNODE_H__ #define #include USING_NS_CC; class { public: static CREATE_FUNC(BachNode); bool virtual //创建BatchNode CCSpriteBatchNode }; #endif |
BachNode.cpp |
#include "BachNode.h" #include CCScene *BachNode::scene() { CCScene * BachNode * scene->addChild(layer); return } bool { CCLayer::init(); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); //初始化成员batchNode //batchNode = CCSpriteBatchNode::create("CloseNormal.png"); //第一步:通过CCSpriteBatchNode的方式进行添加 //将小图中的东西先绘制成一张大图,然后将它们缓存到CCSpriteFrameCache中了 CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("batchnode/plant.plist"); //然后将大图渲染 batchNode = //第二部:将batchNode添加到CCLayer中 addChild(batchNode); return } bool { static CCSprite *spr; for (int { //1.下面的方式是加载一张图的情况 //CCSprite *spr = CCSprite::create("CloseNormal.png"); //通过CCRANDOM_0_1()获得一个0到1的节点 //spr->setPosition(ccp(CCRANDOM_0_1() * 480, CCRANDOM_0_1() * 320)); //batchNode->addChild(spr); //2.通过下面的方式加载两类图 if (flag) { //因为已经加载到缓存中,所以直接可以通过createWithSpriteFrameName加载图片 spr = } else { spr = } spr->setPosition(ccp(CCRANDOM_0_1() //batchNode在头文件中定义的有 batchNode->addChild(spr); flag = !flag; } return } |
运行结果: |