cocos2dx Auto-batching的使用

发布时间:2020-07-05 18:24:55 作者:a1989229
来源:网络 阅读:405

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


推荐阅读:
  1. Cocos2dx学习笔记9:cocos2dx锚点(Anchor Point)
  2. cocos2dx中的核心类是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

图片 精灵 create

上一篇:华为网络设备与基础配置

下一篇:用户组和权限、面试题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》