面试

Shader 学习之路-DrawCall(五)

2019-04-21  本文已影响0人  AnimeKing

DrawCall

1、基础定义:

Unity 3d 引擎准备数据并通知GPU的过程为一次Draw Call,这一过程是逐个物体进行的。

DrawCall 就是一个命令,从CPU 发起,GPU 接收,这个命令指向一个需要被渲染的图元列表,告诉GPU 开始进行一个渲染过程。

例如渲染模型A、 B、C就是DrawCall

2、Draw Call 数量影响帧率

因为每次调用Draw Call 前,CPU 需要给GPU 发送很多内容:数据、状态、命令,需要做很多工作,检查渲染状态,一般CPU的渲染速度往往快于CPU 提交命令的速度。如果Draw Call 太多,CPU 就会把大量的时间花在提交DrawCall 上,造成CPU 过载,GPU 空闲。

3、减少Draw Call

批处理(Batching)

即把很多小的DrawCall 合并成一个大的DrawCall,因为合并也是需要时间,更适合静态的物体。对于动态物体进行批处理,则会把每一帧都要重新合并再发送,对空间时间读会影响。

批处理合并的网格需要使用同一种渲染状态。

4、开发中注意事项:

4.1 避免使用过多的材质球

4.2避免使用大量的很小的网格,可以考虑网格合并。

上一篇 下一篇

猜你喜欢

热点阅读