Unity优化DrawCall的新发现

       今天面试的时候,和面试官讨论关于降低Draw Call方面的技术,个人所知道的关于降低DrawCall的方法大概都在下面这篇文章中。

https://blog.csdn.net/zhongdong00/article/details/80590396

      自己说完后,面试官又问到还有其他注意的吗?从个人角度来讲,我并不知道其他的注意事项,但是本着好学的态度,就请教了一下,面试官给出的结论是批量上产Prefab的顺序也会影响到DrawCall的动态批处理,因此晚上回来做了下实验。

      结果如下:

     首先,我创建了几个基本的Prefab,Capsule(胶囊体),Cube(立方体),Cylinder(圆柱体),Sphere(球体)。

经过测试得到如下结论:

1、无论采用何种加载顺序,Capsule,Sphere都无法动态批处理,原因在上面链接文章中可以找到,因为这两个Prefab的顶点数量大于300,因此Unity无法批处理。

Unity优化DrawCall的新发现_第1张图片

2、若连续加载两个都可以被批量处理的Prefab时,无论采用哪种加载方式都会被动态批处理

Unity优化DrawCall的新发现_第2张图片

3、如果同时加载一个可以被批处理的Prefab,一个不可以被批处理的Prefab时,加载顺序的不同会影响DrawCall

在一个循环里同时加载两个Prefab,这里可以看到Cube并没有被动态批处理掉

Unity优化DrawCall的新发现_第3张图片

在两个循环里分别加载对应的Prefab

Unity优化DrawCall的新发现_第4张图片

这里可以看到Cube(立方体)被程序自动动态批处理了

你可能感兴趣的:(Unity3d)