先直接说一句结论:
- 一个材质,很多物体 →可以有 1 个 DrawCall(在理想情况下)。
- 两个材质,很多物体 →至少 2 个 DrawCall,不可能压成 1 个。
为什么?
因为对 GPU 来说:
“同一批东西必须用完全一样的画法(材质/Shader/贴图/渲染状态),
才能一次性画完。
一旦画法不一样,就得分两批画,也就是多个 DrawCall。”
下面用大白话,好好把这事儿讲清楚。
标题可以理解为:
图形渲染中一个材质和两个材质分别是多少 DrawCall?
为什么不能全挤进一个 DrawCall?
——一次性打通你对 DrawCall 的认知。
一、先搞清楚:啥叫 DrawCall?
不讲教科书版,换个接地气的说法:
你可以把 GPU 想象成一个画画工人,
CPU 是旁边指挥的领班。
- 一次 DrawCall = 领班对工人说的一句清晰指令:
“用这套画笔(Shader)和这桶颜料(材质),
把这堆模型画到这块画布(屏幕/RT)上。”
所以,一个 DrawCall 其实包含了几件事: