大佬们 还得咨询下问题 资源合拼问题
问题:我们在同一个layer下 一个节点放500个同一个精灵帧,超过的话就重新创建一个新节点继续放500个同样的精灵帧这样规则 在不对这些精灵帧进行删除的情况下(击杀) 可以无限进行合并 但是一旦删除一部分精灵动画之后 再次按上面的方法创建 会发现合并会自动断开 通过插件发现是内部的bufferBinding: WebGLBuffer值 在交替变化 113 40 113 40(如图)
两次的大图是一样的
大佬们 还得咨询下问题 资源合拼问题
问题:我们在同一个layer下 一个节点放500个同一个精灵帧,超过的话就重新创建一个新节点继续放500个同样的精灵帧这样规则 在不对这些精灵帧进行删除的情况下(击杀) 可以无限进行合并 但是一旦删除一部分精灵动画之后 再次按上面的方法创建 会发现合并会自动断开 通过插件发现是内部的bufferBinding: WebGLBuffer值 在交替变化 113 40 113 40(如图)
两次的大图是一样的
这个问题是由于 顶点 meshBuffer 穿插导致的。
您可以尝试加大 BATCHER2D_MEM_INCREMENT 的值来改善穿插的情况,参考 MeshBuffer 合批说明
造成穿插的主要原因是,当击杀回收时,会将顶点 buffer 返回给底层,当申请了新的精灵后,会优先使用空闲的 buffer,这就会导致新创建的精灵会存在于不同的 buffer 中,带来了 buffer 的穿插,通过上面的宏可以加大一次申请的大小,或者我更建议您可以稍微管理下对象来进行统一的创建和销毁,这样能够尽可能避免穿插的情况出现。