"Batch,Batch,Batch":What does it really mean?

本文探讨了在游戏开发中批处理(Batching)的概念,它如何通过组合相似的绘制调用(draw calls)来提升性能。作者解释了批处理在减少draw calls数量中的作用,这对于优化资源密集型的3D场景至关重要。
摘要由CSDN通过智能技术生成

作者:i_dovelemon

日期:2016 / 06 / 18

来源:CSDN

主题:batch, drawl call, performance



引言



        最近,有个问题为什么在3D图形编程中,总是以draw call的数量来估测性能,draw call到底做了什么?它与GPU,CPU到底是什么关系?带着这个疑问,上网搜索了下相关的文章,发现在 Stackoverflow上有关于这个的讨论。在详细阅读了他们的讨论之后,发现有人给出了Nvidia的一篇文章“"Batch,Batch,Batch":What does it really mean?”。本篇文章将主要记录一些对该篇文章的理解。正如作者提出的那样,这篇文章很老,是否与现在的实际情况有出入,不得而知,但是整体上能够给我一个对draw call的初步了解。好了,废话不多说,开始正文吧!!!


Let's go



图1


图2

        开篇,文章中就提出了Batch是什么,每当我们在API中调用DrawPrimitive之类的函数的时候,实际上就是向GPU提交三角形(一般来说)数据,一个Batch,具有同样的渲染状态,同样的纹理,同样的Transform。


图3

        这里,他提出了一个问题,游戏绘制1百万个物体,而每一个物体具有10个三角形的性能和绘制10个物体,每一个物体具有1百万个三角形,哪个性能好,哪个速度更快?从书上或者其他途径,我们都了解后面一种实际上效率高。但是高的原因是什么,文中提出了一些常见的错误猜测:

        (1)在GPU上进行状态切换不够快(错)
        (2)在GPU上组织建立三角形很占用资源(错)
        (3)内核中传输数据很慢(错)

        看完这个之后,我就知道以前我的理解原来是错误的。除了上面的错误猜测之外,还提出了疑问“未来的GPU能够解决在两种绘制情况下都同样高效绘制的问题吗?”


图4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值