魔兽世界9.0插件推荐_魔兽世界9.1插件推荐

魔兽世界9.0插件推荐_魔兽世界9.1插件推荐上一篇博客主要是简单的介绍了下NGUI合并DrawCall的基本原理,就是将一个UIPanel里所有的UIWidget按照Depth的大小进行排序,然后遍历排序后的UIWidget列表,将Depth相邻的并且懂事引用同一个Atlas的UIWidget的几何数据存入到一个UIGeometry中然后统一由一个UIDrawCall来调用GPU绘制。那么知道了NGUIDrawCall的基本原理我

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

      上一篇博客主要是简单的介绍了下NGUI合并DrawCall的基本原理,就是将一个UIPanel里所有的UIWidget按照Depth的大小进行排序,然后遍历排序后的UIWidget列表,将Depth相邻的并且懂事引用同一个Atlas的UIWidget的几何数据存入到一个UIGeometry中然后统一由一个UIDrawCall来调用GPU绘制。

那么知道了NGUI DrawCall 的基本原理 我们就可以对游戏里的UI进行优化以达到减少DrawCall的目的,那么该如何优化呢?

     1、首先,我们的UI要分模块话,将只有该模块用到的图片尽量打包一个Atlas里,而一些其他模块都会用到的图片打包一个通用的Altas里,这样可减少Atlas的穿插应用,即减少了内存也方便管理,更主要的是这样我们更容易为后续减少DrawCall做准备。

      2、然后就是尽可能的将引用到同一个Atlas的UIWidget的Depth相邻,这样能让后续UIWidget排序时将引用同一个Atlas的UIWidget相邻。比如我在项目中会将引用到同一个Atlas的UISprite的Depth设置在一个范围里,字体的设置在另一个范围里,尽可能的让它们之间少参插。

OK,大概的优化思路就是这样,接下来让我们做个例子来看看实际的效果:

魔兽世界9.0插件推荐_魔兽世界9.1插件推荐

上面的图就是我创建了5个UISprite但是他们应用的都是同一个Atlas,这时当你的这个UIPanel里所有的UISprite引用的都是同一个Atlas并且没有其他UIWidget时,Depth就不用管了,从图可以看到5个UISprite只有一个DrawCall,那么如果有引用了两个Atlas,那么DrawCall会不会只有两个?答案是否定的,只能说DrawCall最少有两个。继续看例子:

魔兽世界9.0插件推荐_魔兽世界9.1插件推荐

从图里可以看到我引用了两个Atlas但是DrawCall却有5个,这是不是有点恐怖,你想想如果没个UIWidget都要一个DrawCall的话,那我们UI的DrawCall就会大的让你无法接受,要是这样的游戏装在手机上玩那你的手机都可以煎鸡蛋了,呵呵。。 这样肯定是不行的。那么我是怎么做才会有这么都的DrawCall的呢,其实就他们的Depth进行了参插,将第二个和第四个sprite1引用Atlas设成了Refractive Atlas。下面就用上面说的优化思来优化尽可能的优化到2DrawCall,我这里是很容易做到的,如果UI很复杂的话我们就尽力而为吧,好了,看结果:

魔兽世界9.0插件推荐_魔兽世界9.1插件推荐

哦啦,DrawCall真的减少了而且是减到最少了,我的做法就是把引用到Wooden Atlas的UIWidget的Depth设成相邻的0、1、2,而引用Refractive Atlas的UIWidget的Depth设成3和4了,这样就达到了上面的效果了。

哦啦,NGUI DrawCall的优化就写到这啦,写的很简单,如果大神有更好的建议或补充请指教!!!!!!



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193084.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据建设背景介绍

    大数据建设背景介绍随着移动互联网、物联网和云计算技术的迅速发展,开启了移动云时代的序幕,大数据(BigData)也越来越吸引人们的视线。正如1982年世界预测大师、未来学家约翰.奈斯比特(John.Naisbitt)在他的著作中所提到的:“我们现在大量生产信息,正如过去我们大量生产汽车一样”、“人类正被信息淹没,却饥渴知识”,等等诸的预言均在当下得到了充分的证实,这也恰恰说明,世界正处一个信息爆照的时代。Internet的出现缩短了人与人、人与世界之间的距离,整个世界连成一个“地球村”,人们通过网络无障碍交流交换信息和

    2022年5月30日
    47
  • IntelliJ IDEA中怎样使用JUnit4

    IntelliJ IDEA中怎样使用JUnit4

    2022年1月20日
    123
  • php递归算法经典实例_递归算法的步骤

    php递归算法经典实例_递归算法的步骤递归算法对于任何一个编程人员来说,应该都不陌生。因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂。对于PHP新手来说,递归算法的实现原理可能不容易理解。但是只要你了解掌握了这个算法原理,就可以灵活运用递归算法实现编程中的多种功能比如实现无限分类等。递归也是入门者最需要掌握的一个基础算法技巧。下面郑州网站建设公司燚轩科技就通过具体代码示例为大家介绍PHP递归算法…

    2022年8月11日
    5
  • 如何下载spring源码?「建议收藏」

    如何下载spring源码?「建议收藏」如何下载spring源码?1、打开浏览器输入网址:spring.io回车,进入如下界面,点击project->springframework2、根据序号,目前最新的稳定版本为:5.3.8,点击序号4旁边的“小猫”图标进入下载页面3、进入如下界面,但不是我们需要的,往下划拉,4、划拉到这里为止,并点击如图所示链接5、来到如下界面,继续往下划拉6、划拉到这里,我们就找到了下载源码的链接:https://repo.spring.io其实我们完全可以直接在浏览器中输入该链

    2022年8月12日
    5
  • 进程管理的模拟程序_实验一熟悉C语言的运行环境

    进程管理的模拟程序_实验一熟悉C语言的运行环境利用C语言模拟实现操作系统中的进程管理

    2025年10月23日
    3
  • XAMPP环境的搭建[通俗易懂]

    XAMPP环境的搭建[通俗易懂]XAMPP是一个强大的集成软件包(什么是集成软件包?就是多个软件打包一起安装了,比如office办公软件包括了word、Excel、PPT)XAMPP包括了Apache,MySQL,PHP,Perl

    2022年6月30日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号