【U3D性能优化教程——CPU篇】之一:DrawCall概念&DC优化勘误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iceSony/article/details/83422965

本文由@唐三十胖子出品,转载请注明出处。  
文章链接:
https://blog.csdn.net/iceSony/article/details/83422965

这篇文章由唐三胖ヾ(•ω•`)o网络整理总结,针对DrawCall概念的系列优化教程。

通过这篇文章,你可以知道

1)DrawCall概念

2)DC优化勘误

DrawCall概念

Drawcall:CPU调用图形接口告知GPU开始图像渲染

游戏中数据处理是CPU干的,GPU主要处理的是渲染

那么问题来了GPU的渲染肯最消耗性能,但存在场景渲染简单,DC调用过多的情况导致FPS很低,所以就有了优化的必要。

事实上DC是分批次处理的,相同的材质的物体会同批次渲染,此时DC仅仅为1

而U3D的分批次处理有两种:动态和静态批处理,这一点我们在下一篇中详细展开。

DC优化勘误

测试用版本为5.6.5

首先我们针对网上各种情况

1.不同尺寸的勘误

  • 不要使用缩放。分别拥有缩放大小(1,1,1) 和(2,2,2)的两个物体将不会进行批处理。
  • 统一缩放的物体不会与非统一缩放的物体进行批处理。
  • 使用缩放尺度(1,1,1) 和 (1,2,1)的两个物体将不会进行批处理

事实上在5.6.5的版本中这三种都会进行批处理= .  =

2.不同材质顺序

接下来我们的3个对象使用2个材质,A和B使用材质1,C使用材质2,这时候来看,应该是有2个DrawCall,或者3个DrawCall。应该是2个DrawCall啊,为什么会有3个DrawCall???而且是有时候2个,有时候3个。我们按照上面的DrawCall分析流程来分析一下:

1.渲染A,使用材质1
2.渲染B,使用材质1
3.渲染C,使用材质2

在这种情况下是2个DrawCall,在下面这种情况下,则是3个DrawCall

1.渲染A,使用材质1
2.渲染C,使用材质2
3.渲染B,使用材质1

 

事实上在5.6.5的版本,这种情况无论怎么排列A,B,C或者调整A,B,C的远近(画面渲染物体由远到近),都是2个DrawCall

注:在之前的公司开发的时候,不同的图集的调用会显著增加DC数量,比如图片1来自图集1,图片2来自图集2,那么我们开发的时候就要尽量放到一个图集下。

总结:存在老版本的优化没做好的情况,能按批次来的咱们就按照批次来好了。

 

 

接下来的文章我们会从动态批处理&静态批处理的使用来进一步优化DC消耗。

猜你喜欢

转载自blog.csdn.net/iceSony/article/details/83422965