默认Spine 的合批是关闭的,需要勾选enableBatch选项开启,Spine 必须是同个 Spine 资源创建的对象,且每个 Spine 只有一种混合模式、一张贴图,才能进行批次合并,Dragonbones 同理。 单次Draw call 的 Buffer 数据有限,当数据超过 Buffer 长度限制时,会重新申请新的 Buffer,不同的 Buffer 也会是不同的批次。
参考: 官方example项目 :新建cocos项目时选择example 官方文档:spine组件参考 cocos论坛:【方案】Cocos Creator 的 web/原生多平台 Spine 换装方案解析,附 Demo 源码 cocos版本:2.4.4 spine:3.8.x (cocos2.3版本
Creator 中的骨骼动画资源是由 Spine 编辑器 导出的,目前支持 JSON 和二进制 两种数据格式。 各Creator 版本对应支持的 Spine 版本如下所示: Creator 版本Spine 版本 v3.0 及以上 v3.8(原生平台不支持特定版本 v3.8.75) v2.3 及以上 v3.8 v2.2 v3.7 v2.0.8~v2.1 v3.6 v2.0.7 及以下 v2.5 导入骨骼动...
无法合批的组件包括: 内置组件 Mask、Graphics 和 UIMeshRenderer 组件由于材质不同和数据组织方式的差异,无法与其他组件合批; TiledMap、Spine 和 DragonBones 这三个中间件组件则是遵循自己的内部合批机制。 对于Sprite 和 Label 组件来说,因为贴图很容易产生差别,导致无法合批。因此我们提供了以下方法可以更好地实现...
CC_USE_MODEL值取决于是否启用合批(enableBatch属性),在复用Spine的情况下,不一定能够合批,因此不进一步讨论。 5. 修正合批检测 5.1 实现合批检测 在原本的方案中,我们调用共享节点的renderComponent来实现合批检测,现在我们需要拓展合批检测逻辑,来实现一个类似的~ ...
在不处理合批渲染的情况下,一个英雄换装后理论上drawcall数量为2n+1,n为更换的部件数,单个英雄轻松上20 +。所以要解决合批渲染的问题,否则drawcall压力非常大。 spriteFrame到region spine换装的基本原理是更换attachment的region,spine里的region概念和creator中spriteFrame对应。我们使用图集管理装备资源的话,加载后得到也是...
// CopySpine.js class CopySpine extends CopyNode { checkCanBacth(renderer) { return this.shareNode === renderer.node; } } 1. 2. 3. 4. 5. 6. 就这么简单,当节点不一样的时候,我们就认定为无法合批。 很好,位置正确了!哥布林和小人们快乐地… (不是 ...
换装,本质上,就是换插槽上的附件贴图。贴图来源可以是spine导出文件中带有的贴图,也可以是Cocos Creator中的texture。文中的整体换装以及皮肤附件换装即是使用自带贴图进行换装。而外部贴图顾名思义就是使用cocos creator中的texture进行换装。 至于挂点,简单理解则是选用一根骨骼作为挂点A,将挂点A作为欲挂cocos中节点...
默认Spine 的合批是关闭的,需要勾选enableBatch选项开启,Spine 必须是同个 Spine 资源创建的对象,且每个 Spine 只有一种混合模式、一张贴图,才能进行批次合并,Dragonbones 同理。 单次Draw call 的 Buffer 数据有限,当数据超过 Buffer 长度限制时,会重新申请新的 Buffer,不同的 Buffer 也会是不同的批次。
Creator 版本:V2.2.1 目标平台: iOS微信平台 手机型号:苹果6 用代码创建100个spine动画小人,无动作。 合批后是 2 drawcall.但是在苹果6设备的微信版本里,渲染效率只有7 帧。 同时在 oppo手机上查看 内存,有100M内存的增长。 案例在附件里。请查看。 理论上2 drawcall 画 100个小人,不应该有渲染降帧影响...