1、NGUI图集的使用。

图集,直接关系到了drawcall的数量。最好就是自始至终都只使用同一个图集中的元素,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两部分的影响。

在制作图集时,可以分为两个制作方向。一是以NGUI自带的某一图集为基础,将自己需要使用的元素添加到该图集中。这样做的好处是可以在界面制作时使用NGUI提供的一些元素。

再一个方向就是制作一个全新的图集。这适合于对界面进行整体设计的情况,全部的界面元素都进行重新设计,然后制作成图集来使用。

另外,在使用NGUI自带的图集时,要注意在该图集的副本上进行新元素的添加、删除操作,避免对NGUI自身造成不必要的影响。

2、界面元素深度的设置与drawcall的控制。

在使用NGUI制作界面时,如果我们自始至终都使用唯一的图集,界面上的文字使用动态字体制作,

那么drawcall的消耗数量就只与Panel的划分以及同一个Panel下图集元素与字体元素的深度设置排列有关了。

我们知道,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的。所以我们只要把一个Panel下的drawcall计算方式搞明白,然后再对Panel的划分加以控制,就能都达到有效控制drawcall的目的了。

在同一个Panel之下,如果所有的界面元素都使用同一个图集来制作,而且没有动态字体的"干扰",那么该Panel消耗的drawcall数量就是1。这可以通过鼠标选中UIPanel的游戏对象来查看drawcall的使用情况

还是在同一个Panel之下,如果在图集使用过程中,还配合使用了动态字体,或是使用了不同的图集,那么该Panel下drawcall的计算就和其下元素的深度设置密切相关了。

一句话总结就是:为同一图集的元素设置一段独立的深度值区间,不同的图集元素或动态字体使用不同的深度值区间,尽量不要穿插。举例说明:

在同一个Panel之下,假设

深度值区间 (-200, -100),图集1元素使用;

深度值区间(-100, 0),图集2元素使用;

深度值区间(0, 100),图集3元素使用;

深度值区间(100, 200),图集4元素使用;

按照上述情况计算,该Panel的drawcall值为4。但是,如果我们在使用时,不同的图集或动态字体的深度值出现了穿插,那么drawcall会出现猛增的情况,因为这里的drawcall计算方式是在使用的整个深度区间上,每遇到一个不同的图集,drawcall就会加1,不论该图集之前是否使用过,与此没有关系,都会加1。这就要求我们,在不影响功能实现的前提之下,对界面元素的深度值进行合理的排布设置。

3、动态字体的使用。

就是把字体也融入到图集之中,就像NGUI使用的方式那样。那么drawcall的消耗数量就又能降低不少了,相当于从使用两个图集变成只使用一个图集。

NGUI 减少Draw Call相关推荐

  1. NGUI减少Drawcall

    1.NGUI图集的使用. 图集,直接关系到了drawcall的数量.最好就是自始至终都只使用同一个图集中的元素,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两 ...

  2. 【Unity】UIElements 渲染细节,比NGUI/UGUI/FairyGUI好在哪?

    为什么要关注 UIElements  ? 因为要有运行时版本了.  UIElements 在一开始推出的时候就在文档中提到将来会有运行时版本,但是具体什么时候没有说. Unity运行时UI解决方案 还 ...

  3. (转)Unity3D - 性能优化之Draw Call

    Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如 ...

  4. 深入浅出聊Unity3D优化:从Draw Calls到GC

     原文地址:http://www.gameres.com/663040.html 5 天前 上传 下载附件 (26.59 KB) GameRes游资网授权发布 文/陈嘉栋 0x00 前言 刚开始写 ...

  5. 转载-慕容小匹夫细说Unity3D(七)——从Draw Call到GC

    可以在这里读到这篇文章:<深入浅出聊优化:从Draw Calls到GC>http://www.cnblogs.com/murongxiaopifu/p/4284988.html 前言: 刚 ...

  6. 深入浅出聊Unity3D项目优化:从Draw Calls到GC (难度2 推荐5)

    原文出处: 慕容小匹夫的博客(@慕容小匹夫) 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实, ...

  7. 深入浅出聊优化:从Draw Calls到GC

    原文地址:http://www.cnblogs.com/murongxiaopifu/p/4284988.html 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解 ...

  8. cocos Draw call的理解

    Draw call比较直观的描述应该是: 在CPU不改变渲染数据的情况下,openGL的一次渲染. opengGL的一次渲染:CPU调用图形绘制接口来使GPU执行渲染操作,渲染流程是CPU和GPU并行 ...

  9. 浅析Draw Call

    Draw Call是CPU对GPU的一种命令,仅仅指向一个需要被渲染的图元列表,在OpenGL和DirectX中分别体现为glDrawElements和DrawIndexedPrimitive图像编程 ...

最新文章

  1. linux密码时效更改方法
  2. Java基础10:全面解读Java异常
  3. ubuntu 关闭qq打不开的终极方法
  4. mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据
  5. 《深入理解 Spring Cloud 与微服务构建》第八章 声明式调用 Feign
  6. mysqldump的一些用法
  7. 如何下载并使用别人写的库——jupyter notebook
  8. ado、odbc连接Postgre SQL
  9. [软件更新]卡巴斯基全功能安全软件2010简体中文版程序发布
  10. Flash 第八章 形状补间
  11. python解数独--世界最难数独2.3秒完成_【数独】世界最难数独90+毫秒解决。一个不错的算法...
  12. f分布表完整图a=0.01_QC七大手法(工具)完整版介绍
  13. 读《天才在左 疯子在右》有感
  14. 新手小白如何选择吉他,初学者的入门吉他推荐
  15. 十一.TensorFlow之可视化好帮手B
  16. boss2.0 java_bboss/bboss-core-entity at master · bbossgroups/bboss · GitHub
  17. java json parser_Java JSONParser.parse方法代碼示例
  18. expdp impdp
  19. win10 风格的 OA 管理系统 skyeye 更新,新增项目模块
  20. HDU 5066 Harry And Physical Teacher(数学)

热门文章

  1. 算法全覆盖,还能玩星际争霸,开源决策智能平台OpenDILab面世
  2. 推荐系统去偏(Debiased Recommendation)研究进展概述
  3. “让Keras更酷一些!”:层中层与mask
  4. “泡沫”之后,强化学习已应用到这些领域
  5. 西安科技大学计算机考研难度,西安科技大学考研难吗
  6. gitclone 一个tag的地址_一个无锁队列和FreeList实现
  7. python读取word指定内容_python解析html提取数据,并生成word文档实例解析
  8. 【JavaScript代码】使用JavaScript实现简单的区块链(签名+工作量证明机制)
  9. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
  10. rust go java 性能_Java,Go和Rust之间的比较 - Dexter