1. 程式人生 > >Cocos2d-x優化中關於背景圖片優化

Cocos2d-x優化中關於背景圖片優化

指針 text .cpp 互動出版網 沒有 tde white 實現 origin

因為背景圖片長時間在場景中保存,並且圖片非常多,我們能夠對其進行一些優化。

我們通過例如以下幾個方面考慮優化:
1、不要Alpha通道
背景圖片的特點是不須要透明的,所以紋理格式能夠採用不帶有Alpha通道格式,所以RBG565格式比較適合背景圖片。
2、拼圖
背景圖片與其它的圖片紋理格式的不同。我們在創建精靈表的時候。沒有辦法將RBG565格式的背景圖片與其它的紋理圖片(如:RGBA4444)做在一個精靈表,所以基於格式的考慮我們能夠將多個背景放置在一個精靈表中的,可是要註意這個精靈表拼接成的大圖文件不能太大。一些老設備對於單個文件大小是有限制的,如:iPod touch 4是單個文件不能超過2048 * 2048像素大小。
3、載入到紋理緩存的時機
什麽時候載入背景圖片到紋理緩存呢?這個問題主要看這個背景圖片的場景使用使用頻率,假設頻率高就要在遊戲初始化時候載入。頻率比較低的場景背景圖片,能夠考慮進入場景時候載入。在圖片進行載入的時候,因為背景圖片比較大載入時間比較長,能夠考慮異步載入。
4、小紋理圖片,反復貼圖
假設場景的背景採用單色或有規律的圖形,我們能夠採用小紋理圖片。反復貼圖實現。我們在第8章案例採用了一個128x128紋理圖片(BackgroundTile.png)反復貼圖上,這樣能夠降低內存消耗。核心代碼例如以下:

//貼圖的紋理圖片寬高必須是2的n次冪,128x128
auto bg = Sprite::create("BackgroundTile.png",
Rect(0, 0, visibleSize.width, visibleSize.height));
//貼圖的紋理參數,水平反復平鋪,垂直反復平鋪
Texture2D::TexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
bg->getTexture()->setTexParameters(tp);
bg->setPosition(origin + Vec2(visibleSize.width/2, visibleSize.height/2));
addChild(bg, 0);


5、考慮使用瓦片地圖
背景能夠考慮採用瓦片地圖實現。瓦片地圖因為僅僅須要幾個小圖片就能夠構建一個非常大的遊戲背景,它的性能自不用多說。可是它的缺點也是因為採用幾個瓦片拼接而成,背景上有非常多反復的區域,假設用戶不在乎這些,當然選擇瓦片地圖構建背景是我們首選方式。另外,在設計瓦片地圖的時候地圖中的層不要超過4層。


6、背景z深度的優化
有的時候為了達到動態視差效果,背景被分成了幾個圖片,如圖所看到的,我們能夠把雲、樹木、草地和山分別放置在不同背景圖片中,我們通過設置z軸順序(z-order)。



技術分享


這樣的情況下我們開啟深度測試。

OpenG ES中的深度測試是採用深度緩存器算法,消除場景中的不可見面。在Cocos2d-x中開啟深度測試,能夠在AppDelegate.cpp中改動代碼例如以下:
bool AppDelegate::applicationDidFinishLaunching() {
… …

director->setDepthTest(true);


return true;

}

director->setDepthTest(true)開啟深度測試directorDirector類是的對象指針深度測試默認是關閉假設開啟深度測試會消耗很多其它的電量



很多其它內容請關註最新Cocos圖書《Cocos2d-x實戰 C++卷》本書交流討論站點:http://www.cocoagame.net
很多其它精彩視頻課程請關註智捷課堂Cocos課程:http://v.51work6.com
歡迎增加Cocos2d-x技術討論群:257760386


《Cocos2d-x實戰 C++卷》現已上線。各大商店均已開售:

京東:http://item.jd.com/11584534.html

亞馬遜:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

當當:http://product.dangdang.com/23606265.html

互動出版網:http://product.china-pub.com/3770734

《Cocos2d-x實戰 C++卷》源代碼及樣章下載地址:

源代碼下載地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1

樣章下載地址:http://51work6.com/forum.php?

mod=viewthread&tid=1157&extra=page%3D1

歡迎關註智捷iOS課堂微信公共平臺技術分享

Cocos2d-x優化中關於背景圖片優化