码迷,mamicode.com
首页 > 其他好文 > 详细

3.游戏优化(CCSpriteBatchNode)

时间:2014-10-21 10:21:10      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   使用   for   



1 FPS含义

bubuko.com,布布扣

bubuko.com,布布扣

2 渲染树的结构

3 优化原理

CCSpriteBatchNode介绍

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

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

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

 

4 案例说明:

BachNode.h

#ifndef __BACHNODE_H__

#define __BACHNODE_H__

 

#include "cocos2d.h"

USING_NS_CC;

class BachNode :public CCLayer

{

public:

    static CCScene * scene();

    CREATE_FUNC(BachNode);

    bool init();

 

    virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

    //创建BatchNode

    CCSpriteBatchNode  *batchNode;

 

};

 

#endif

BachNode.cpp

#include "BachNode.h"

#include "AppMacros.h"

 

CCScene *BachNode::scene()

{

    CCScene * scene = CCScene::create();

    BachNode * layer = BachNode::create();

    scene->addChild(layer);

    return scene;

}

bool 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);

 

    return true;

}

 

bool BachNode::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

{

    static bool flag = true;

    CCSprite *spr;

    for (int i = 0; i < 1000; i++)

    {

        //1.下面的方式是加载一张图的情况

        //CCSprite *spr = CCSprite::create("CloseNormal.png");

        //通过CCRANDOM_0_1()获得一个01的节点

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

        {

            spr = CCSprite::createWithSpriteFrameName("p_3_01.png");

        }

        spr->setPosition(ccp(CCRANDOM_0_1() * 480, CCRANDOM_0_1() * 320));

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

        batchNode->addChild(spr);

        flag = !flag;

    }

    return false;

}

运行结果:

bubuko.com,布布扣

 

3.游戏优化(CCSpriteBatchNode)

标签:style   blog   http   color   io   os   ar   使用   for   

原文地址:http://blog.csdn.net/tototuzuoquan/article/details/40340329

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!