cocos2dx Auto-batching的使用

cocos2dx Auto-batching的使用,第1张

概述根据官方文档于cocosdx3.0+中推出了Auto―batching的新功能 这个东西到底有什么作用呢? 我们知道在我们的游戏开发中经常会遇到要在屏幕上出现许多相同精灵的情况(比如LOL中的一大群小兵) 根据我们的经验可以得知 在加载精灵时候都会进行一次渲染 那么问题来了 我们每次想加载一大批相同精灵时都需要对每一个精灵进行多次渲染吗? 官方文档说明 Auto-batching(自动批处理)生效

根据官方文档于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的条件

总结

以上是内存溢出为你收集整理的cocos2dx Auto-batching的使用全部内容,希望文章能够帮你解决cocos2dx Auto-batching的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存