当前位置 博文首页 > as oo的博客:Drawcall简析

    as oo的博客:Drawcall简析

    作者:[db:作者] 时间:2021-07-11 16:09

    关于unity优化,DrawCall肯定占了比较重要的一部分,下面我们就简单了解一下什么是Drawcall。

    什么是DrawCall?

    在电脑运行层面理解:rawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。
    这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall而每个drawcall都需要很多准备工作,检测渲染状态、提交渲染数据、提交渲染状态。而GPU本身具有很强大的计算能力,可以很快就处理完渲染任务
    在unity运行层面:,每次CPU准备数据并通知GPU的过程就称之为一个DrawCall。
    具体过程就是:设置颜色–>绘图方式–>顶点坐标–>绘制–>结束,所以在绘制过程中,如果能在一次DrawCall完成所有绘制就会大大提高运行效率,进而达到优化的目的。

    DrawCall过多会怎样?

    如果Draw Call的数量太多,CPU就会把大量时间花费在提交Draw Call 上,造成CPU的过载。

    如何减少DrawCall?

    核心思想:还是运用批处理的方法吧,尽量把小的DrawCall合并到一个大的DrawCall中
    (1)避免使用大量很小的网格。当不可避免的需要使用很小的网格结构时,考虑是否可以合并它们。

    (2)避免使用过多的材质。尽量在不同的网格之间共用同一个材质。
    (3)合并本身有消耗,因此尽量在编辑器下进行合并。

    总结

    用了很长时间的drawcall也没有仔细分析过,今天又听到了有人聊关于drawcall的知识借此巩固一下,自己懒得码字观看借用了很多关于两位大神关于drawcall的分析,这里附上原文链接:
    原文链接:https://blog.csdn.net/yu1368072332/article/details/85676537
    原文链接:https://blog.csdn.net/srk19960903/article/details/73457321

    cs
    下一篇:没有了