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

 

posted @ 2017-12-11 17:46  不三周助  阅读(1134)  评论(0)    收藏  举报