之前见别人的文章总是说,在Hierachy下,相同图集的图片要连续排列,这样Unity会对相同图集的图片进行合批,从而减少draw call。今天做了简单的试验发现情况并不是这么简单的。

第一种情况:

如上图所示,在Hierachy下图片层级从低到高分别是(p,+,+),得到draw call为2。

第二张情况:

如上图所示,在Hierachy下图片层级从低到高分别是(+,p,p),得到draw call为3。

第三种情况:

如上图所示,在Hierachy下图片层级从低到高还是(+,p,p),只不过我把p的图片由瓶子换成了一个鸡蛋,其实就是换了一个图集,得到draw call为2。

目前总结来的结论应该是这样的,如下图所示,A,B两张图应该是先渲染的,因为它们分别处于更远的depth,C是后渲染的,因为它处于更近的depth。但是A和B谁先渲染决定与它们使用的图集,这个优先级在我刚刚举的三个例子中应该是 瓶子图集 > 加号图集 > 鸡蛋图集。所以在下图中 A和B应该是先渲染A,所以渲染顺序是 A(瓶子) - B(加号) - C(瓶子),无法合批,一共三次draw call。但是如果把瓶子换成鸡蛋,那么A和B应该是先渲染B,所以渲染顺序是 B(加号) - A(鸡蛋) - C(鸡蛋),后两次鸡蛋可以合批,一共两次draw call。

但是在上图的情况下,我们稍稍改变B的pos.z(无论正负),会发现draw call会由3降到2,如下图。通过分析FrameDebug下的Draw Mesh发现,渲染顺序变成了B(加号) - A(瓶子) - C(瓶子),后两次瓶子可以合批,一共两次draw call。

我们再做一次试验,在加号的下面再放一张瓶子的图片,在所有图片z都是0的情况下有三次draw call,三次渲染结果如下:

如果改变加号图片的z,还是三次draw call,但是三次渲染的结果发生了变化,如下图:

结合上面两个例子可以粗略总结出,如果改变一个图片的z,它比所有Hierachy里在他下层的图片渲染顺序高,哪怕它的图集渲染优先级要低于其他图片的图集,但是如果遇到相互重叠图片,会由Hierachy下的顺序决定渲染顺序。

最后总结一下规律,如果相互重叠的图片,会由Hierachy下的顺序决定渲染顺序(不管任意图片的z)。不相互重叠的图片会由depth决定渲染顺序,同depth下的图片遵循一个默认的图集渲染的优先级决定渲染顺序(至于什么决定了不同图集的渲染优先级还不知道)。如果一个图片的z发生了改变,它会比所有Hierachy里在他下层的图片渲染顺序高(忽视depth和图集的渲染优先级)。只要是连续渲染顺序的同图集图片就会进行合批。

java 图片层级_UGUI图片层级和渲染顺序的奇怪关系相关推荐

  1. Java实现批量压缩图片 裁剪压缩多种尺寸缩略图 一键批量上传图片

    10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码) 背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关 ...

  2. java ofd文件转换图片

    是根据开源项目写的: https://gitee.com/ofdrw/ofdrw?_from=gitee_search 该ofdrw工具可以转换pdf.图片等,本文章主要介绍ofd文件使用ofdrw转 ...

  3. java中怎么合成图片_Java 实现图片合成

    图片合成 利用Java的绘图方法,实现图片合成 在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的图片 I. 设计思路 首先解析一下我们的目标实现图片合成,那么这些合成的基 ...

  4. java 图片处理 图片缩略图,java怎么生成图片缩略图,缩小图片,高清图片缩小

    java如何生成图片缩略图,缩小图片,高清图片缩小 可以把图片缩小到理想的倍数,也可以根据自己的需要来具体规定图片转化后的大小 对于类型为jpg的图片来说,只需要三个参数就能转化得到自己想要的图片 参 ...

  5. java BASE64流 输出图片。

    java BASE64流 输出图片. 亲测3个请求都可用,没有测试性能问题.仅供参考 BASE64Decoder Eclipsse 类可能引用不了解决方案链接:http://blog.csdn.net ...

  6. JAVA 通过url下载图片保存到本地(亲测)

    //java 通过url下载图片保存到本地    public static void download(String urlString, int i) throws Exception {     ...

  7. java 设置panel背景图片_jpanel设置背景图片的二个小例子

    import java.awt.*; import javax.swing.*; public class Demo extends JFrame { public Demo() { super(&q ...

  8. java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...

    java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223  答案:4  mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...

  9. java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量

    转载自  java 程序实现对图片的压缩生成缩略图并可设定长宽.尺寸压缩率.图片质量 之前是在另一位高手的上传内容中学习到的,并将其代码根据我的需求进行了修改,参考位置:http://jiangpin ...

最新文章

  1. dos中for in后面执行多个命令的方法
  2. Spark查找某个IP的归属地,二分算法,try{}catch{}的使用,将结果存MySQL数据库
  3. SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
  4. 去贵阳参观大数据到哪参观_您必须参观的四个世界
  5. vs2012新建项目产生的问题
  6. UI设计灵感|不同形式的图标设计
  7. 运行tuxedo自带例子simpapp,测试tuxedo安装
  8. HTML之我的个人主页
  9. 均值(average)与期望(mean)
  10. 大数据整合方案架构总结
  11. (MATLAB)大家来找茬-简易的彩色图像找不同
  12. 刨根究底字符编码之三——字符编码的由来
  13. 一个遮罩层怎么遮罩两个图层_巧妙运用图层做遮罩动画
  14. Symbol - 听说用了这个方法就能创建出相同的Symbol值
  15. sqlserver2012用ip远程连接设置
  16. NOI2018 游记
  17. 12月世界燕窝滋补品展|上海燕博会|冻干(即食)燕窝展谈食用燕窝
  18. MoSCow 和Kano
  19. Datatables实现表格行内编辑功能
  20. 高防CDN和高防IP防护的不同之处

热门文章

  1. 【Transformer】浅谈 Transformer-based 模型中的位置表示
  2. ZooKeeper的实践(一):ZooKeeper仲裁机制
  3. 如何用java编写一个简单的多人PK游戏
  4. 说说摩拜单车的骑后感
  5. 用winpcap发包
  6. EasyExcel快速入门(详解)
  7. linux中用rm删除的文件如何恢复
  8. 谷歌Waymo计划:大逆转!百度还在为“阿波罗”计划窃喜,却被谷歌一剑封喉
  9. 4.CSS 背景属性
  10. 曙光服务器质量_中科曙光,这一年很受伤