cocos2d-x ios游戏开发初认识(六) 渲染的优化
做程序開發肯定要考慮到內存的優化,畢竟iphone本身的內存就不是非常大。這一節主要說這個cocos2d開發對內存的優化,詳細表如今,既能夠對同樣的精靈(圖片)僅僅渲染一次,也能夠對不能的精靈僅僅渲染一次。
以下是程序的做法,先屏蔽前面的代碼。
先簡介一下?CCSpriteBatchNode類,它是用來優化游戲渲染效率的。CCSpriteBatchNode 中的全部CCSprite僅僅會被渲染1次,因此能夠提高游戲的FPS。限制:增加到CCSpriteBatchNode 中的CCSprite必須使用同一張紋理圖。
詳細代碼
? ??CCSpriteBatchNode *node =CCSpriteBatchNode::create("Peashooter1.tiff");//先渲染文件
? ?this->addChild(node);
? ?CCSprite *plant = CCSprite::create("Peashooter1.tiff");?//創建精靈
? ? plant->setPosition(ccp(300,300));
? ? node->addChild(plant); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//加入到 node中
執行:能夠看到 加入一個精靈 此時的FPS為1。以下再加入一個文件同樣精靈:
? ??CCSpriteBatchNode *node =CCSpriteBatchNode::create("Peashooter1.tiff");//先渲染文件
? ? this->addChild(node);
? ? CCSprite *plant = CCSprite::create("Peashooter1.tiff");?//創建精靈
? ? plant->setPosition(ccp(300,300));
? ? node->addChild(plant); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//加入到 node中
?? ?
? ? //再創建一個精靈
? ? CCSprite *plant1 = CCSprite::create("Peashooter1.tiff");?//創建精靈
? ? plant1->setPosition(ccp(400,400));
? ? node->addChild(plant1);
? ? return true;
執行:
能夠看到兩個精靈都被創建出來了,可是FPS還是為1。這就是CCSpriteBatchNode的作用,它保證加入到類里面全部同樣文件的精靈僅僅被渲染一次。
既然同樣的精靈能夠僅僅渲染。那么不同的文件的精靈可不能夠僅僅被渲染一次,答案是能夠的。看以下的做法。
這時要用到第(五)篇文章講的內容。詳細做法是我們能夠先把非常多種不同的圖片合成一張大圖,然后將這張大圖加入到CCSpriteBatchNode中。這時渲染大圖里面的小圖都會僅僅被渲染一次,看詳細程序做法:
? ??///*假設想讓不同圖片僅僅渲染一次得要用到幀緩存機制渲染多個不同的圖片 */
? ? CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Person.plist");?//先緩存大圖
? ? CCSpriteBatchNode *node1 =CCSpriteBatchNode::create("Person.png");//渲染到一個大圖片
? ?this->addChild(node1);
?? ?
? ? CCSpriteFrame *frame =CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("本.png");
? ?CCSprite *plant3 =CCSprite::createWithSpriteFrame(frame);
? ? plant3->setPosition(ccp(200,200));
? ? node1->addChild(plant3);
?? ?
? ? CCSpriteFrame *frame1 =CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("登.png");
? ?CCSprite *plant4 =CCSprite::createWithSpriteFrame(frame1);
? ? plant4->setPosition(ccp(500,500));
? ? node1->addChild(plant4);
這個大圖 全部小圖片的名字:執行:
我們能夠看到又添加了兩張圖片。并且這兩張圖片不是一樣的,可是FPS還是為2僅僅加了1,表示新添加的兩個精靈僅僅被渲染了一次,如今我們發現幀緩存機制 是很強大的,在游戲開發中經經常使用到。
轉載于:https://www.cnblogs.com/gccbuaa/p/6777279.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的cocos2d-x ios游戏开发初认识(六) 渲染的优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dede调用当前顶级栏目名称、ID、ur
- 下一篇: 余额宝是基金吗 支付宝推出的一项余额理财