位置: 编程技术 - 正文

Unity3d NGUI的drawcall,UISprite与UITexture

编辑:rootadmin

推荐整理分享Unity3d NGUI的drawcall,UISprite与UITexture,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像。

在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。这一过程是逐个物体进行的,对于每个物体,不只GPU的渲染,引擎重新设置材质/Shader也是一项非常耗时的操作。因此每帧的Draw Call次数是一项非常重要的性能指标,对于iOS来说应尽量控制在次以内,这个&#;可以在编辑器的Statistic窗口看到。

Unity内置了Draw Call Batching技术,从名字就可以看出,它的主要目标就是在一次Draw Call中批量处理多个物体。只要物体的变换和材质相同,GPU就可以按完全相同的方式进行处理,即可以把它们放在一个Draw Call中。Draw Call Batching技术的核心就是在可见性测试之后,检查所有要绘制的物体的材质,把相同材质的分为一组(一个Batch),然后把它们组合成一个物体(统一变换),这样就可以在一个Draw Call中处理多个物体了(实际上是组合后的一个物体)。

但Draw Call Batching存在一个缺陷,就是它需要把一个Batch中的所有物体组合到一起,相当于创建了一个与这些物体加起来一样大的物体,与此同时就需要分配相应大小的内存。这不仅会消耗更多内存,还需要消耗CPU时间。特别是对于移动的物体,每一帧都得重新进行组合,这就需要进行一些权衡,否则得不偿失。但对于静止不动的物体来说,只需要进行一次组合,之后就可以一直使用,效率要高得多。

Unity提供了Dynamic Batching和Static Batching两种方式。Dynamic Batching是完全自动进行的,不需要也无法进行任何干预,对于顶点数在以内的可移动物体,只要使用相同的材质,就会组成Batch。Static Batching则需要把静止的物体标记为Static,然后无论大小,都会组成Batch。如前文所说,Static Batching显然比Dynamic Batching要高效得多,于是,Static Batching功能是收费的……

要有效利用Draw Call Batching,首先是尽量减少场景中使用的材质数量,即尽量共享材质,对于仅纹理不同的材质可以把纹理组合到一张更大的纹理中(称为Texture Atlasing)。然后是把不会移动的物体标记为Static。此外还可以通过CombineChildren脚本(Standard Assets/Scripts/Unity Scripts/CombineChildren)手动把物体组合在一起,但这个脚本会影响可见性测试,因为组合在一起的物体始终会被看作一个物体,从而会增加GPU要处理的几何体数量,因此要小心使用。

对于复杂的静态场景,还可以考虑自行设计遮挡剔除算法,减少可见的物体数量同时也可以减少Draw Call。

总之,理解Draw Call和Draw Call Batching原理,根据场景特点设计相应的方案来尽量减少Draw Call次数才是王道,其它方面亦然。

根据雨松的一篇博文: 使用一个图集的话,就会产生一次drawcall调用,但是如果只是用图集中的一张图片时,整个图集就会被载入到内存中;而UITexture没有图集的概念,因此使用时内存占用低,但是会产生很多drawcall,一个UItexture就是一个drawcall

Unity3d NGUI的drawcall,UISprite与UITexture

一个DrawCall,表示U3D使用这个材质/纹理,来进行一次渲染,那么这次渲染假设有3个对象,那么当3个对象都使用这一个材质/纹理的时候,就会产生一次DrawCall。假设3个对象使用不同的材质/纹理,那么无疑会产生3个DrawCall。

例子:

A,B 使用材质 1,C 使用材质 2, 这时候会有几个 Draw Call?

有两种情况, 3 个 Draw Call :

A: 材质 1

B: 材质 2

C: 材质 1

第二种情况, 2 个 DrawCall

A: 材质 1

C: 材质 1

B: 材质 2

渲染顺序: Unity 默认会按照控件的 Depth 来渲染。从后往前渲染,当使用相同材质的控件会合并为一个 Draw Call 。如果和前一个材质不相同则会重新产生一个 Draw Call 。所以会有上面两种不同的结果,如果同一个界面有更多的空间存在时,这个问题会更明显。在 UI 制作的时候就需要特别注意这一点。

unity 动态创建摄像机 摄像机本身的depth越大,则它所渲染的东西越靠顶publicGameObjectCameraObj;publicconstintCAM_DEPTH=2;publicconstintCAM_LAYER=5;publicvoidCreateCamere(){CameraObj=newGameObject(myCamera

[Unity3D]降低向Shader中传值的开销 摘要Unity3D中提供了很多API用于向shader传值,这篇文章对比测试了两类不同的使用方法的性能。正文Unity3D中,通过C#代码向shader传值有两种方式。一种是

Unity3d读取CSV中的文本到Rich Text中换行符不识别的问题 项目中要用到符文本做一些信息显示,需要有颜色、字体样式、换行之类,Unity的RichText就可以用来做这类需求。关于RichText的使用:

标签: Unity3d NGUI的drawcall,UISprite与UITexture

本文链接地址:https://www.jiuchutong.com/biancheng/369319.html 转载请保留说明!

上一篇:Unity3D摄像机跟随人物(unity3d摄像头)

下一篇:unity 动态创建摄像机(unity怎么创建摄像机)

  • 职工薪酬纳税调减的情况
  • 公司章程在工商局
  • 固定资产的入账
  • 出口赠送客户怎么处理
  • 咨询公司小规模纳税人怎么界定
  • 手续费和利息属于哪一科目
  • 房地产开发的会计处理
  • 员工报销款可以公转私吗
  • 购进原材料发生非正常损失,账面成本10万元 该原材料
  • 小规模纳税人所得税税率
  • 收到公众号申请的小额打款认证怎么入账?
  • 利息及债券溢价摊销表
  • 产品成本计算的公式
  • 员工证书补贴标准
  • 计提附加税的会计处理
  • 四点帮你避开虚开发票
  • 物业管理的差额怎么算
  • 开票人为什么不能改
  • 财政票据税务局能查到吗
  • 小规模纳税人缴纳增值税怎么做账
  • 两个单位的社保合并怎么办理手续
  • 调整以前年度应付工资怎么调
  • 苹果电脑重新安装系统磁盘锁了怎么办
  • 行纪人的权利
  • 重复确认收入是什么意思
  • 房地产企业哪些成本上升了
  • 最早遥控器是谁发明的
  • 什么是增值税差额征税政策的小规模纳税人
  • vue跳转到外部链接且带上参数
  • 违约金税目
  • 个人以不动产投资入股土地增值税
  • 预收物业费纳税义务发生时间
  • C语言中如何计算除法
  • python复制文件的代码
  • 查财务报表的网站有哪些
  • 本月发生的费用,下月取得发票,怎么做账
  • 企业基金分红具体流程
  • sql批量替换日期中的月份
  • 营业收入净额是利润表的哪个数
  • 月底留抵税额需要结转吗
  • 预提费用在资产负债表中如何列示
  • 年底计提坏账收回一部分怎么处理
  • 小微企业的认定标准企业所得税
  • 社保怎么交最划算
  • 个人缴纳职业年金的比例为本人缴费工资的多少
  • 善意取得虚开增值税专用发票处理
  • 销售产品结转成本
  • 利润总额包括什么项目
  • 政府会计工资代扣工会会费
  • 研发加计扣除抵减税额怎么算
  • 去年多摊销了怎么办
  • 房地产开发成本费用明细表
  • 营业收入净额怎么算出来
  • 代理记账公司能赚钱吗
  • 使用sql查询
  • mysql5.7.17安装
  • xp ie浏览器无法显示网页
  • 重装系统后没声音怎么解决win7
  • movie是什么文件
  • 如何查看windows使用痕迹
  • android内存工具
  • 在微信支付宝借贷会影响征信吗
  • 下列关于android的说法中,错误的是
  • angular form表单
  • python,for循环
  • shell脚本监听端口
  • 怎样用python
  • &&在js中
  • javascript简单
  • javascript的
  • 浏览器判断手机品牌
  • python的例子
  • 国家税务局吉林省税务局官网app
  • 怎么知道税控盘有没有注销
  • 电子税务局校验码
  • 在网上如何查询车辆违章
  • 房产税的计税依据及税率
  • 空置房物业收费标准
  • 我国国家治理体系是一整套什么的国家制度
  • 小规模纳税人租赁房屋税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设