对unity中DrawCall的理解

1.什么是DrawCall,有什么方法可以减少DrawCall?

DrawCall的理解:DrawCall就是CPU对图形绘制接口的调用,CPU通过调用图形库(Directx/OpenGL)接口,命令GPU进行渲染操作

DrawCall过多会导致性能降低,但是其中的关键在与CPU,每一次绘制的时候,CPU都要调用DrawCall,而在调用DrawCall之前,

CPU还要做很多准备工作:检测渲染状态、提交渲染所需要的数据、提交渲染所需要的状态等等;而GPU本身就具有很强大的计算能力,可以很快就处理任务,当DrawCall过多,CPU就会有很多额外开销用于准备工作,CPU本身负载,而这时GPU可能

闲置。(类似于拷贝1000个总大小为1M的文件和单个大小为1M的文件,明显拷贝1000个文件要慢很多,道理类似)

减少DrawCall的方式:

什么是Batching:就是将多个绘制任务集中在在一起执行,减少CPU调用图形库的次数,减少DrawCall

(1)静态批处理(static Batching):只要这些物体不移动,并且拥有相同的材质,静态批处理就允许引擎对任意大小的几何物体进行批处理操作来降低描绘调用。

(2)动态批处理(Dynamic Batching):Unity3D的draw call动态批处理机制是引擎自动进行的,无需像静态批处理那样手动设置static,但是动态批处理有很多局限,例如不同的scale的物体、顶点过多的物体、不同材质的物体都会导致动态批处理失效。

(3)生成图集:unity引擎渲染图片是以图集为单位的,当很多图片都合并在一张图集上,则可以实现了批处理,减少大量drawcall的调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值