大佬,想请问下你之前的文章,关于ugui合批原理的文章在csdn链接失效了,想看一下。
大致原文如下: 合批处理在UGUI中会有一些不同 先获得一个按Hierarchy的顺序的列表 计算每个物体的深度。 2.1 深度从0开始递增。如果世界包围盒Z轴不为0(或isCanvasInjectionIndex),则需独占一个批次,同时独占一个深度。即等于之前所有物体最大深度+1,后一个物体深度需要+1。 2.2 对一般物体的深度。会判断是否可跟之前的物件共享深度,走接下来的流程。 2.2.1 先按格子(默认大小是120,根据包围盒再计算)划分出多个格子。(只是为了加速求交)。 2.2.2 计算物体包围相交哪些格子,再跟格子中已有的物体进行包围盒相交判断。如果不相交则使用当前深度;如果相交且可合批,则使用相交物体中最大的深度;如果相交且不可合批,则使用相交物体中最大的深度+1。合批条件:无独占批次+材质相同+贴图相同+裁剪开关和裁剪矩形相同+贴图A8格式一致(kTexFormatAlpha8) 2.2.3 将该物体加入所有相交的格子中。若遇到独占深度的物体,则格子数据清空。即后续物件不跟之前的物件共享深度。 排序:按照深度->材质->贴图->层级顺序优先级排序。 合批:对排序后的列表,从头开始一个一个检测是否能与前面的物体合批。合批条件:无独占批次(只判断isCanvasInjectionIndex)+材质相同+贴图相同+裁剪开关和裁剪矩形相同+贴图A8格式一致(kTexFormatAlpha8),非SubBatch只判断前两个条件,一般情况下UI的材质都一样。
我在知乎的某个文章中找到的,希望回复!