日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x ios游戏开发初认识(六) 渲染的优化

發布時間:2024/10/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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游戏开发初认识(六) 渲染的优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。