2d 精灵帧动画 合批问题

大佬们 还得咨询下问题 资源合拼问题
问题:我们在同一个layer下 一个节点放500个同一个精灵帧,超过的话就重新创建一个新节点继续放500个同样的精灵帧这样规则 在不对这些精灵帧进行删除的情况下(击杀) 可以无限进行合并 但是一旦删除一部分精灵动画之后 再次按上面的方法创建 会发现合并会自动断开 通过插件发现是内部的bufferBinding: WebGLBuffer值 在交替变化 113 40 113 40(如图)


两次的大图是一样的


这个问题是由于 顶点 meshBuffer 穿插导致的。
您可以尝试加大 BATCHER2D_MEM_INCREMENT 的值来改善穿插的情况,参考 MeshBuffer 合批说明

造成穿插的主要原因是,当击杀回收时,会将顶点 buffer 返回给底层,当申请了新的精灵后,会优先使用空闲的 buffer,这就会导致新创建的精灵会存在于不同的 buffer 中,带来了 buffer 的穿插,通过上面的宏可以加大一次申请的大小,或者我更建议您可以稍微管理下对象来进行统一的创建和销毁,这样能够尽可能避免穿插的情况出现。

BATCHER2D_MEM_INCREMENT 这个值我们已经设置成最大

2303了

然后我们如果没有分节点 每个节点放500个这样规则的话 统一在一个节点上创建 大概在同一个节点添加2500单位的精灵帧之后 也是和击杀一样的效果 会开始穿插bufferBinding 值 这种我们应该就灭有回收的问题吧 为啥也会穿插
可以稍微管理下对象来进行统一的创建和销毁,这样能够尽可能避免穿插的情况出现。” 然后这个没有理解什么意思,我们是使用了对象池 应该算是对象进行了统一的创建和销毁吧