cocos2dx Auto-batching的使用

根據官方文檔於cocosdx3.0+中推出了Auto—batching的新功能 這個東西到底有什麼作用呢?


我們知道在我們的遊戲開發中經常會遇到要在屏幕上出現許多相同精靈的情況(比如LOL中的一大羣小兵) 根據我們的經驗可以得知 在加載精靈時候都會進行一次渲染 那麼問題來了 我們每次想加載一大批相同精靈時都需要對每一個精靈進行多次渲染嗎?


官方文檔說明 Auto-batching(自動批處理)生效需要滿足以下條件 

  1. 確保精靈擁有相同的TextureID(精靈表單SpriteSheet)

  2. 確保都擁有相同的材質和混合功能

  3. 不能再次添加到SpriteBatchNode上


簡而言之就是隻要我們用同一張圖片創造精靈,並且沒有做特殊處理就可以滿足條件


但是有些情況需要注意:


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

auto a = sprite::create("sprite1.png");

this->addchild(a);


auto b = sprite::create("sprite2.png");

this->addchild(b);


}

因爲我們在一個循環裏面每次創建了兩個精靈 雖然對於a和b精靈的循環來說是用了同一張圖片,但是在內存中的加載是兩張圖片間隔渲染 如下:


sprite1

sprite2

sprite1

sprite2

sprite1

sprite2

sprite1

sprite2

此種情況並不能滿足Auto-batching的要求


那麼我們可以怎麼辦呢?


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

auto a = sprite::create("sprite1.png");

this->addchild(a);

a->setGlobleZorder(1);


auto b = sprite::create("sprite2.png");

this->addchild(b);

b->setGlobleZorder(1);


}

此時在內存中會出現以下情況:


sprite1

sprite1

sprite1

sprite1

sprite1

sprite1

sprite2

sprite2

sprite2

sprite2

sprite2

sprite2

此時就滿足了Auto-batching的條件


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