渲染需要的数据从硬盘到内存,再到显存存储准备完成之后,CPU发起draw call通知GPU开始渲染。实际上每一帧都会渲染的,所以都会draw call的。如果你需要,其实也可以打开window - Frame Debugger来看draw的调用。例如:
所以unity的统计界面有了setpass call,其意思大致是场景需要切换处理的pass数,因为渲染的对象是通过材质介以材质所含的shader中的各个pass最终得以显示的,这个指标对衡量性能来说比“draw call"相对准确一点。
@鑫大,也就是说,如果不切换Render State的Draw Call就不怎么耗时了?
U3D本身的办法是使用Static Batching 与 Dynamic Batching。功能描述如下: Static Batching 是将标明为 Static 的静态物件,如果在使用相同材质球的条件下,Unity 会自动帮你把这两个物件合并成一个 Batch,送往 GPU 来处理
就个人所知,之前很长一段时间内,不少开发者误以draw call为unity效率的直接衡量指标;unity官方也注意到了这点,draw call这个说法比较有误导性;实际上draw call本身的call过程消耗比较低,消耗高的是draw call对象集合的改变过程和集合中各个对象的处理过程,比如dynamic batch和static batch相同draw ...
@鑫大,也就是说,如果不切换Render State的Draw Call就不怎么耗时了?