在实际项目开发中,提起unity优化,肯定是有DrawCall的相关内容的,下面就讲解一下什么是DrawCall以及如何对DrawCall进行优化操作。
一、什么是DrawCall?
在unity中,每次CPU准备数据并通知GPU的过程就称之为一个DrawCall。
具体过程就是:设置颜色-->绘图方式-->顶点坐标-->绘制-->结束,所以在绘制过程中,如果能在一次DrawCall完成所有绘制就会大大提高运行效率,进而达到优化的目的。
二、DrawCall为什么会影响游戏运行效率?
说道为什么会影响效率,就首先要了解一下他的工作原理:为了CPU和GPU可以进行并行工作,就需要一个命令缓冲区,就是由CPU向其中添加命令,然后又GPU从中读取命令,这样就实现了通过CPU准备数据,通知GPU进行渲染。
在每次调用DrawCall之前,CPU需要向GPU发送很多内容,主要是包括数据,渲染状态(就是设置对象需要的材质纹理等),命令等。CPU进行的操作具体就是:
- 准备渲染对象,然后将渲染对象从硬盘加载到内存,然后从内存加载到显存,进而方便GPU高速处理
- 设置每个对象的渲染状态,也就是设置对象的材质、纹理、着色器等
- 输出渲染图元,然后向GPU发送DrawCall命令,并将渲染图元传递给GPU
所以如果DrawCall数量过多就会导致CPU进行大量计算,进而导致