unity 3分钟理解 批处理和drawcall有什么区别

3分钟理解 批处理和drawcall有什么区别?

本人技术有限,如有错误,请道友们留言讨论,切勿口吐芬芳。

正文---------------------------------------------

批处理和drawcall不同点是什么呢?要从基本的概念说起:

第一个概念:什么是drawcall?
你的游戏每渲染一个物体,cpu就要向gpu发送一次渲染命令,这个渲染命令名字叫drawcall。

普及一下,渲染命令有很多种,drawcall是其中一种(见下图):
在这里插入图片描述

第二个概念:什么是批处理?
批处理的概念:简单理解就是1个批处理多个物体。
批处理的目的:
批处理就是在1个drawcall内尽可能多的处理多个物体。

所以批处理只是处理问题的一种方式。

举例说明:
假设你的项目要渲染1000个物体,这时就需要cpu发送给gpu 1000次drawcall渲染命令。
每发一次渲染命令,cpu就需要花费很多的时间来做准备。发的渲染命令多了,cpu就要挨个给渲染命令做准备,大家就开始排队,一排队就要堵。所以大家平常说的drawcall多了就卡顿,其实是排队引起的。

聪明的你就想,排队会引起卡顿,那么就尽量就不排队,尽量在发每次drawcall前就多为几个物体完成准备工作,最好1次把这个1000个渲染命令全部准备完。这就是批处理的思想了。

所以我们的目标就是将 1次drawcall只能处理1个或者几个物体的情况,经过优化后变成,1次drawcall可以处理更多个的物体的情况。

总结一下:
1 批处理和drawcall不同点是:
大家会发现这个问题本身就是错误的。
强行说区别就是:
我们口头说的drawcall指的是优化前的drawcall,是1次drawcall只能处理1个或者几个物体的情况

我们口头说的批处理指的是优化后的drawcall,就是1次drawcall可以处理更多个物体的情况。

2 批处理和drawcall相同点是:
批处理的数量是和drawcall数量是一样的。
在这里插入图片描述

再说一点:
如果一个项目的批处理数量越多,就说明批处理数越接近drawcall数。当他们越接近相等时,也就是越接近1个drawcall处理1个物体的情况。
这种情况出现就说明该项目批处理做的稀烂,赶紧重新做批处理吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值