您好,登錄后才能下訂單哦!
根據官方文檔于cocosdx3.0+中推出了Auto—batching的新功能 這個東西到底有什么作用呢?
我們知道在我們的游戲開發中經常會遇到要在屏幕上出現許多相同精靈的情況(比如LOL中的一大群小兵) 根據我們的經驗可以得知 在加載精靈時候都會進行一次渲染 那么問題來了 我們每次想加載一大批相同精靈時都需要對每一個精靈進行多次渲染嗎?
官方文檔說明 Auto-batching(自動批處理)生效需要滿足以下條件
確保精靈擁有相同的TextureID(精靈表單SpriteSheet)
確保都擁有相同的材質和混合功能
不能再次添加到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的條件
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。