栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

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

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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个物体的情况。
这种情况出现就说明该项目批处理做的稀烂,赶紧重新做批处理吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号