中断drawcall的情况:
把节点树展开,从上往下(按渲染顺序前序遍历,这里假设zIndex都未设置)。
1、如果不是同一图集的前后两张图,会中断。
2、图、文本挨着,会中断。
3、同一图集下挨着的两张图仍然中断的情况:
1)、一张图有各种后处理效果时,即使两张图一样或在同一图集,也会中断。但多种后处理效果会合批只产生一次drawcall。
2)、两张图透明度不同时。
3)、两种图blend模式不同时。
4)、一张图使用了遮罩(事实上也是改变了渲染模式)。
5)、使用裁剪(例如Panel节点)。
4、文本的overflow只要不是“可见”就会产生一次drawcall(实际上也是裁剪导致的)
5、同一图集下的两个Animation节点,只要有透明度变化就会中断(无论两个Animation透明度是否相同)
优化:
1、尽量将文本和标签统一放到一起。
2、尽量将同一图集的图放到一起。
3、使用zindex,将一些因为节点关系不能放到一起的,可以用zIndex将他们的渲染顺序挨着,也会合批。
4、如果一张图不在屏幕内,可以将其隐藏,或暂时remove(也可启用enableCulling)。因为如果他显示着,即使在屏幕外也会占用一次drawcall。
5、节点少时,可以开启drawcallOptimize尝试优化效果
使用Spector.js插件工具检查效果
参考源码WebGraphicsBatch类。
807

被折叠的 条评论
为什么被折叠?



