性能优化

  • 为什么合批能提升性能?
  • 如果查看系统的DrawCall?
  • 合批常用的技术原理和缺点
  • 3D优化DrawCall注意点
  • 2DGUI优化DrawCall注意点

为什么合批能提升性能?

  • 游戏引擎绘制一个游戏页面,首先需要遍历此页面中的所有需要绘制的物体,然后把这些物体提交给GPU来进行绘制。大体流程如下
  1. CPU 准备绘制所需要的数据:位置、尺寸、纹理等等
  2. CPU下达绘制命令(draw cmd)
  3. GPU 渲染物体,显示出来
  • 如果页面中有100个物体需要提交给GPU进行绘制,如果一个一个的提交,则需要执行100次绘制过程。1和2 会多次频繁调用,且、1和2开销也是比较大的,3会不饱和:类似一车次高铁只乘坐一位乘客。
  • 合批:把游戏中场景中的多个物体合并到一起,一次性传递给GPU进行渲染。如果我们把100个物体合并成一个批次,只需要执行一个1和2。虽然和增大3的开销,但是GPU的性能比较的强,综合下来,可以大大的提高渲染性能。

如果查看系统的DrawCall?

通过CocosCreator 的show fps 即可查看Draw call次数。
在优化之前需要先清楚DrawCall次数的分布情况。

  • label +1
  • button +1。相邻button节点不增加
  • sprite +1。相邻sprite节点不增加,sprite默认开启了packable。
  • button和sprite 如果被label间隔开来,都会增加。label打断合批。
    - 最直接的查看某个节点占用的dc次数,直接显隐目标节点,对比前后两次dc变化即可。

合批常用的技术原理和缺点

  • 静态合批

    • 引擎将静态(不能移动)的可以合批(具有相同材质)的物体通过预先计算,生成一个包含这些小物体的大物体,然后把这些大物体一次性传递给GPU 进行绘制。 相当于多个小物体一次性进行绘制。
    • 优先:提升渲染效率
    • 缺点:预先计算,增加启动时长。计算出新的大物体,可能会因为模型顶点增加,增大内存的开销。
  • 动态合批
    • 绘制的时候,CPU计算出这些相同材质物体的每个顶点*世界矩阵=>世界坐标,加上材质,提交给GPU。
    • 优点:能合批,提高渲染效率。
    • 缺点:实时占用CPU,增大了CPU的开销。因此进行动态合批的物体,顶点数目不能过多。当增加的CPU开销 > 合批带来渲染提升 =>导致性能不增反降。
  • GPU Instancing 合批
    • 同一个物体的N个实例的情况,我们提交一个物体的Mesh给GPU绘制出来N个实例。这N个实例可以拥有不同的位置、旋转、缩放等等。

3D优化DrawCall注意点

2DGUI优化DrawCall注意点

CocosCreator游戏性能优化相关推荐

  1. 游戏开发43课 移动游戏性能优化1

    1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章. 涉及到具体优化技巧时,博主会尽量阐述原理和依据,让读者知其然也知其所以然.要完全读懂这 ...

  2. 极光会客厅:大型H5游戏如何登陆微信小游戏及游戏性能优化分享

    上周末,由极光网络主办的首期"极光会客厅"正式开门迎客.在本次的"2D小游戏开发实战技术沙龙"上,极光网络客户端主程陈策以及极光网络项目总监陈源向一众与会者分享 ...

  3. 白鹭引擎王泽:重度H5游戏性能优化技巧

    9月15日,无惧17级台风"山竹",320名开发者齐聚广州贝塔空间共同探讨"怎样做一款赚钱的小游戏".针对众多开发者关心的重度H5游戏性能优化技巧,我们整理了现 ...

  4. 白鹭引擎王泽:重度H5游戏性能优化技巧标题的文章

    我们的引擎架构师做某一沙龙活动的演讲速记,纯纯的干货,分享给大家. 王泽:各位开发者下午好!我叫王泽,是白鹭引擎的首席架构师. 今天给大家分享的题目是<重度H5游戏性能优化技巧>.之所以决 ...

  5. 【Egret优化分享】白鹭引擎王泽:重度H5游戏性能优化技巧

    本文转自:https://mp.weixin.qq.com/s/GIzXA51D7_hMqajCRuJE2g 9月15日,无惧17级台风"山竹",320名开发者齐聚广州贝塔空间共同 ...

  6. 移动游戏性能优化通用技法

    1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章. 涉及到具体优化技巧时,我会尽量阐述原理和依据,让读者知其然也知其所以然. 要完全读懂这 ...

  7. Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  8. Unity移动端游戏性能优化简谱之 常见游戏内存控制

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  9. 原生canvas游戏性能优化

    微信小游戏在 17 年末推出,再次带火了 H5 小游戏的开发,本公众号准备一些 H5 游戏开发的文章,奉献给读者,想做小游戏的可以练练手,没时间做的可以学习下游戏常用的一些方法和概念. 本文来自 li ...

最新文章

  1. 整理收集49条JQuery代码小结
  2. 网络爬虫-自动推送小说最新章节的小应用--懒惰的追小说者
  3. C#定时清理内存,net网页端可以尝试使用
  4. 评分卡模型剖析之一(woe、IV、ROC、信息熵)
  5. 外挂学习之路(2)--- 老生常谈“基地址”
  6. SAP Fiori Launchpad tile跳转目标的解析逻辑
  7. 应用在核电站DCS系统的代码自动生成工具ModelCoder
  8. oracle11g的adg需要付费嘛,Oracle11g ADG 搭建
  9. [转载]MySQL的Galera Cluster配置说明
  10. 更换主板后 Win10 账户密钥集不存在 0x80090016问题解决
  11. Unity的AudioMixer真香?
  12. IRC下载TLF0day资源
  13. luogu 2411 白银莲花池 luogu 1606 Lilypad Pond
  14. android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
  15. 基于webassembly的前端视频编辑器(未写完)
  16. Redis的maven依赖
  17. js实现520倒计时
  18. 沃弗永磁:从结构角度来对分析为什么限矩型永磁偶合器替代限矩型液力偶合器已经成为趋势
  19. 『转』卡巴斯基2014 安装使用小技巧
  20. gcc 指定内存地址

热门文章

  1. ansys中导入自定义本构模型的算例
  2. 基于均一化方法的Trip钢本构模型在Abaqus中umat子程序的实现
  3. “GANs 之父”Goodfellow亲身传授:深度学习未来的8大方向和入门AI必备的三大技能
  4. 条码打印软件之优化导入PDF文档的清晰度
  5. C# 开发企业订货系统构架,手机版本订货/订单系统
  6. 无参考图像的清晰度评价方法
  7. Ubuntu/CentOS配置主机名IP映射关系
  8. 使用DAC来替代555时基电路
  9. 一个小小的里程碑!啥也不说了,签名书奉上!
  10. MATLAB工程仿真基础