Shader 学习之路-DrawCall(五)

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避免使用大量的很小的网格,可以考虑网格合并。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容