DrawCall
1、基础定义:
Unity 3d 引擎准备数据并通知GPU的过程为一次Draw Call,这一过程是逐个物体进行的。
DrawCall 就是一个命令,从CPU 发起,GPU 接收,这个命令指向一个需要被渲染的图元列表,告诉GPU 开始进行一个渲染过程。
例如渲染模型A、 B、C就是DrawCall
2、Draw Call 数量影响帧率
因为每次调用Draw Call 前,CPU 需要给GPU 发送很多内容:数据、状态、命令,需要做很多工作,检查渲染状态,一般CPU的渲染速度往往快于CPU 提交命令的速度。如果Draw Call 太多,CPU 就会把大量的时间花在提交DrawCall 上,造成CPU 过载,GPU 空闲。
3、减少Draw Call
批处理(Batching)
即把很多小的DrawCall 合并成一个大的DrawCall,因为合并也是需要时间,更适合静态的物体。对于动态物体进行批处理,则会把每一帧都要重新合并再发送,对空间时间读会影响。
批处理合并的网格需要使用同一种渲染状态。
4、开发中注意事项:
4.1 避免使用过多的材质球
4.2避免使用大量的很小的网格,可以考虑网格合并。