天天看点

3.游戏优化(CCSpriteBatchNode)



1 fps含义

3.游戏优化(CCSpriteBatchNode)
3.游戏优化(CCSpriteBatchNode)

2

渲染树的结构

3

优化原理

ccspritebatchnode介绍

a

先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一次渲染调用。也就是说,渲染的次数越少,游戏的运行效率越高。

b ccspritebatchnode就是cocos2d-x为了降低渲染批次而建立的一个专门管理精灵的类。

c

如果要加载1000个精灵,加载,渲染重复执行1000次,使用ccspritebatchnode批量渲染,一次渲染就把所有的ccsprite绘制出来。大量降低渲染批次。

4

案例说明:

bachnode.h

#ifndef

__bachnode_h__

#define

#include

"cocos2d.h"

using_ns_cc;

class

bachnode :public

cclayer

{

public:

static

ccscene *

scene();

create_func(bachnode);

bool

init();

virtual

cctouchbegan(cctouch

*ptouch,

ccevent *pevent);

//创建batchnode

ccspritebatchnode 

*batchnode;

};

#endif

bachnode.cpp

"bachnode.h"

"appmacros.h"

ccscene *bachnode::scene()

scene =

ccscene::create();

bachnode *

layer =

bachnode::create();

scene->addchild(layer);

return

scene;

}

bachnode::init()

cclayer::init();

settouchenabled(true);

settouchmode(kcctouchesonebyone);

//初始化成员batchnode

//batchnode = ccspritebatchnode::create("closenormal.png");

//第一步:通过ccspritebatchnode的方式进行添加

//将小图中的东西先绘制成一张大图,然后将它们缓存到ccspriteframecache中了

ccspriteframecache::sharedspriteframecache()->addspriteframeswithfile("batchnode/plant.plist");

//然后将大图渲染

batchnode =

ccspritebatchnode::create("batchnode/plant.png");

//第二部:将batchnode添加到cclayer中

addchild(batchnode);

true;

bachnode::cctouchbegan(cctouch

ccevent *pevent)

flag =

ccsprite *spr;

for (int

i = 0;

i < 1000;

i++)

//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 =

ccsprite::createwithspriteframename("p_2_01.png");

else

ccsprite::createwithspriteframename("p_3_01.png");

spr->setposition(ccp(ccrandom_0_1()

* 480, ccrandom_0_1() * 320));

//batchnode在头文件中定义的有

batchnode->addchild(spr);

flag = !flag;

false;

运行结果:

3.游戏优化(CCSpriteBatchNode)

继续阅读