zoukankan      html  css  js  c++  java
  • [Unity优化]-DrawCall

    文章连接:   http://gad.qq.com/article/detail/26927

    在Unity中,Batch(批处理)一般是指进过打包之后的Draw call

    绘制100万个物体,每个物体10个三角形   与  绘制10个物体,每个物体100万个三角形,那个效率更快;后者更快

    每一次Btach都是CPU准备渲染数据,向GPU提供渲染数据,这个过程比较消耗性能,当这个Batch达到一定量,CPU负荷则会大大增加,达到瓶颈。(好的CPU的Batch瓶颈可能是200,差的CPU可能是130)

    总结:每一次Batch的提交就是一次Draw call的调用, 

              Draw call消耗性能的原因:每调用一次API:Application->Runtime->Driver->VideoCard(GPU处理),其中每一步都会有一定的耗时

              其中最大的耗时在Runtime发送渲染命令给Driver,如果每一个调用API都让Runtime发送命令给Driver,那样开销太大,所有在Runtime中有一个Command Buffer的东西,这个东西会缓存Runtime的命令,在适当时机一次发给Driver,这样避免了每次的调用;

     综合所有:Draw call消耗的2个主要原因:1:把Draw call及渲染状态切换的API调用转换成设备无关命令的消耗时间(其中还包括命令检查等操作)

                                                                       2:刷新Command Buffer导致CPU由用户模式切换到内核模式带来的消耗(这两个模式请百度)

                                                                       第1点的消耗并不大,关键的消耗在第2点,所以我们希望Command尽可能的缓存多的命令,一次提交给Driver

    最后:优化:1:目标平台的CPU性能 2:Batch提交操作所能够占用的CPU性能百分比(为其他CPU任务留出资源)

                          解决渲染问题的办法 1是合并批次减少DC,2是对Driver进行优化(有DX,OpenGL优化) 对于开发人员来说,减少DC还是很重要的

               

              

  • 相关阅读:
    基于CentOS7配置ArcGIS enterprise
    ArcGIS pro 发布地图服务(一)动态地图服务
    ArcGIS操作技巧——怎样把地图放到PPT中,并且进行编辑?
    ArcGIS Earth1.9最新版安装和使用教程
    ArcGIS pro2.3中添加天地图底图
    excle函数
    网闸和防火墙
    NoSQL——not onlySQL不仅仅是SQL
    leaflet学习一 入门
    openlayer3 基础学习一创建&显示地图
  • 原文地址:https://www.cnblogs.com/cocotang/p/7927978.html
Copyright © 2011-2022 走看看