合并图片、EUI顺序、CacheAsBitmap对drawcall影响的测试
一 什么是DrawCall
Draw Call 理解和优化:
http://blog.csdn.net/sakyaer/article/details/44459881
draw call是openGL的描绘次数
一个简单的openGL的绘图次序是:设置颜色→绘图方式→顶点座标→绘制→结束。
每帧都会重复以上的步骤。这就是一次draw call如果有两个model,那么需要
设置颜色→绘图方式→顶点座标A→绘制→结束。
设置颜色→绘图方式→顶点座标B→绘制→结束。
两次draw calls;
也就是说在openGl绘制前,如果色彩通道(color filter),绘图方式(shader),顶点座标(model)不同的情况下draw calls就会增加。对openGl来说绘制参数(状态值)的变更要比绘制大量的顶点更耗费cpu。
二 Egret中减少DrawCall
1 使用6张单张图片和1个Label,drawcall数是6图片+1文本=7。


2 现在将6张图片合并成一张,drawcall数是1图片+1文本=2


3 现在只将两个按钮合并


drawcall数如下图,是10次。

如果图"朋友圈"和"微信"是同一张图drawcall算1次,那么应该是9次才对,为什么是10次?
因为当A和B是一张图,C是单张图。
如果渲染顺序是 A->B->C 则drawcall是2
但是渲染顺序A->C->B则drawcall是3
三 Egret中减少drawcall的合图做法
1 将同一场景或模块的图片合成一张,则可以大幅度减少drawcall数
2 合图可以使用texturemerger,手动合并。
也可以使用wing发布时的合并图选项,但是wing发布合图时根据资源组合并,所以你必须事先将同一场景或模块分好了资源组。 (测试wingIDE的合图有问题,不建议使用)
四 EUI中的排列顺序对DrawCall的影响
现在有ABCD四张图

当在EUI中由上到下是ABCD时,drawcall是2


当顺序是ACBD时,DrawCall是4


总结:EUI的渲染次序是从上到下的,将同一图片放在相邻的顺序上,可以减少drawcall数。
五、cacheAsBitmap缓存为位图对drawcall的影响

drawcall由4变成了2

总结:将静态图片放在一个group内,并使用cacheAsBitmap,可以减少drawcall
合并图片、EUI顺序、CacheAsBitmap对drawcall影响的测试的更多相关文章
- 减少HTTP请求之合并图片详解(大型网站优化技术)
原文:减少HTTP请求之合并图片详解(大型网站优化技术) 一.相关知识讲解 看过雅虎的前端优化35条建议,都知道优化前端是有多么重要.页面的加载速度直接影响到用户的体验.80%的终端用户响应时间都花在 ...
- 用DIV+CSS切割多背景合并图片 CSS Sprites 技术
很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...
- c# 根据窗口截图,合并图片
c# 根据窗口截图,合并图片 public class CaptureWindows { #region 类 /// <summary> /// Helper class containi ...
- C#放缩、截取、合并图片并生成高质量新图的类
原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...
- SQL Server中多表连接时驱动顺序对性能的影响
本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- C#一些常用的图片操作方法:生成文字图片 合并图片等
生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...
- where的顺序对运行的影响--无影响
2.表连接的时候,大表与小表的顺序是哪个在前.3.在多表连接时,是表与表先连接起来,再执行对单表的限制条件where条件:还是先执行单表的限制where条件,再进行表连接?4.多表连接时,如4个表,我 ...
- python合并图片
因项目需求需要将图片合并故写了一个python脚本,在这里放个笔记 #!/usr/bin/env python #coding=utf-8 import Image import os import ...
- .net core 图片合并,图片水印,等比例缩小,SixLabors.ImageSharp
需要引用 SixLabors.ImageSharp 和SixLabors.ImageSharp.Drawing 引用方法 NuGet包管理 添加程序包来源 https://www.myget.org/ ...
随机推荐
- CentOS 5.4 安装和卸载桌面
显示系统已经安装的组件,和可以安装的组件:#yum grouplist 如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装:#yum groupinstall "X Wind ...
- Maven的个性化定制
用Maven的小伙伴都知道,Maven的宗旨是约定优于配置(Convention Over Configuration). 在宗旨的前提下Maven也提供了个性化定制的Profile,让我们看看使用方 ...
- [c#]分析器错误消息: 发现不明白的匹配。
(1)同样的变量名称 protected System.Web.UI.WebControls.Label lbltitle; protected System.Web.UI.WebControls.L ...
- 总结iOS9中的新的方法
iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...
- Logstash日志字段拆分grok
参考和测试网站:http://grokdebug.herokuapp.com 例如:test-39.dev.abc-inc.com Mon Apr 24 13:53:58 CST 2017 2017- ...
- jquery 获取绑定事件
在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: 1 $.data(domObj,'events');//或者$('selector').data('events') 而从1. ...
- JAVA第一个窗体小程序
import java.awt.*;public class Day1015_Frame{ public static void main(String[] args) { ...
- dp之多重背包2191
水题........ #include<iostream> #include<stdio.h> #include<string.h> using namespace ...
- excel 笔记
1.复制公式到整列(至文件尾): 当你想复制公式到整列(至文件尾)可选中有公式的单元格,待出现黑色填充柄时,双击即可
- [C++]红色波浪线是什么意思
相关资料:https://zhidao.baidu.com/question/242005953.html 问题现象:在写C++代码时,写的注释都是红色波浪线. 问题原因:波浪线表示 词语拼写错误 字 ...