cocos2d-x利用精靈表和紋理緩存實現優化

//採用緩存CCSpriteBatchNode緩存添加9000個精靈
void GameOverLayer::createSpriteUseCache()
{
    CCSize size = CCDirector::sharedDirector()->getVisibleSize();
    CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("Player.png");
batchNode->setPosition(CCPointZero);
    addChild(batchNode,1);//指定加到第一層
    for(int i = 0; i<9000; i++)
    {
CCSprite* sp = CCSprite::createWithTexture(batchNode->getTexture());
        sp->setPosition(ccp(CCRANDOM_0_1()*size.width,CCRANDOM_0_1()*size.height));
        batchNode->addChild(sp);
    }

}

//如下圖所示,採用精靈表添加9000個精靈總共渲染3次(幀率爲20.6)


2、不採用精靈表時間加載9000個精靈

void GameOverLayer::createSpriteNotUseCache()
{
    CCSize size = CCDirector::sharedDirector()->getVisibleSize();
    for(int i = 0; i<9000; i++)
    {
        CCSprite* sp = CCSprite::create("Player.png");
        sp->setPosition(ccp(CCRANDOM_0_1()*size.width,CCRANDOM_0_1()*size.height));
        this->addChild(sp);
    }
}

//如下圖所示,不採用精靈表需要渲染9002次,幀率爲(17.6)


//由此可見採取精靈表的方式可以大大減少渲染次數,但是幀率提高不明顯(問題不明,希望能有高手指出)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章