Unity DrawCall
DrawCall:CPU命令GPU去绘制(CPU调用底层图形接口)。(影响的是CPU的效率)
一 减少DrawCall:
批处理:对于使用同一材质的物体,他们的不同仅仅在于顶点数据的差别,我们可以把这些顶点数据合并打包在一起。再一起发送给GPU,就可以完成一次批处理。
为何两个使用批处理的材质不能降低drawcall?
两个物体的网格模型需要相同的材质,在于其纹理是相同的才可以实现同时渲染。 因此保证材质相同,是为了保证被渲染的纹理相同。
1)动态批处理: 每一帧可以进行批处理的模型网格进行合并,再把合并模型数据传递给GPU,然后使用同一材质对其进行渲染。
优点: Unity会自动完成,不需要我们进行任何操作,物体是可以移动的。
缺点:有很多其他限制条件,顶点属性小于900,多pass的shader会中断批处理。
2)静态批处理: 只在运行阶段,把需要进行静态批处理的模型合并到一个新的网格中,这意味着这些模型数据在运行时不能被移动。
物体不可以移动,但是限制条件少。
优点:因为只需要进行一次合并操作,因此比动态批处理更加高效。
使用:只要保证场景中为静态物体,不移动,不能旋转,不能缩放,使用在inspector面板中勾选static.
注:Batches 为drawcalls数量 Saved by batching为优化的batches数量。
减少材质数量,尽量共享材质。(对于仅纹理不同的材质可以把纹理组合到一张更大的纹理中,即“图集”)
把不会移动的物体标记为static。
二 影响DrawCall数量
1)shader中pass数量越多,越大
参考:http://blog.csdn.net/swj524152416/article/details/52911791
http://www.cnblogs.com/murongxiaopifu/p/4284988.html#wuli

浙公网安备 33010602011771号