cocos Draw call的理解
Draw call比较直观的描述应该是: 在CPU不改变渲染数据的情况下,openGL的一次渲染。
opengGL的一次渲染:CPU调用图形绘制接口来使GPU执行渲染操作,渲染流程是CPU和GPU并行工作的过程。CPU和GPU之间通过一系列的缓冲区来联系,CPU将缓冲区的数据发送给GPU来让GPU执行渲染命令。
插一句:
大家如果对openGL的渲染流程感兴趣,可以参考https://blog.csdn.net/u013654125/article/details/79698469。
回到正题:
正因为CPU和GPU并行工作,所以会出现其中一方处理数据较慢,而另一方闲置的情况。而这种情况一般只会是CPU处理处理数据处理不过来,而GPU闲置。
来个栗子:
当你有A,B,C三个节点,其中A,B使用同一张贴图,C使用另一张贴图。
假设绘制顺序是:
A
C
B
这种情况的Draw call是:3。因为A绘制完和需要替换贴图,然后绘制B后再替换贴图,最后绘制C。
假设绘制顺序是:
A
B
C
那么可以做到A,B同时绘制,最后绘制C。
这时的Draw call是:2。
再详细点:
这样排就是8个Draw call。
这里如果我们把“闪”连续渲染,这样Draw call就是五个(ttf label不能连续合并)。
总之,Draw call的规则是这样的:
1.render command 相邻,大致可以理解为节点树中顺序相邻
2.texture 一致
3.blend function 一致
3.shader program 一致
所以当我们要渲染的节点很多,且Draw call也多的时候,CPU需要在每次渲染的时候来进行数据处理,这时GPU闲置。
我们要避免这样的情况,就可以根据上述情况来着手,尽量把相同的节点放在相邻的节点树中。
最后,使用图集减少Draw call是有一定前提条件的(像上述条件),图集并不能减少Draw call,材质从哪里来的和glDrawElements次数没关系。
真正减少Draw call是需要多个连续绘制的节点使用同样的贴图时,可以一次性批量绘制。
cocos Draw call的理解相关推荐
- 深入理解地址翻译 CSAPP
地址翻译, 用自己的话说一遍, 然后自己在draw.io画图理解. 术语 页表就是一个 页表条目(Page Table Entry PTE)的数组,每一项(每个PTE)是[有效位,物理地址]. 我们 ...
- 函数式编程语言python-用Python进行基础的函数式编程的教程
许多函数式文章讲述的是组合,流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式,非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...
- Android性能优化 - 内存优化
性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...
- python函数编程实战_(转)函数式编程实战教程(Python版)
许多函数式文章讲述的是组合,流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式,非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...
- Android开发经典笔试面试题汇总(持续更新中)
1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当.你的机器就会变得非常慢,那么线程销毁的方法是:(A) A. onDestroy() B. onClear() C. o ...
- Unity的DrawCall
文章目录[点击展开](?)[+] 图形引擎渲染画面的过程 可见性测试 准备好物体的数据 通知图形API开始绘制 什么是Draw Call Draw Call Batching 技术 Draw Call ...
- 3D美术人员Technical Artist(TA技术美术)的学习之旅(3)
最近感觉有点丧啊~= =.主要是看了群里各种大佬的说话,专业术语我都接不上话,深深的为自己的弱鸡表示了悲哀. 哈哈哈哈.好了,闲言少叙,书归正传.继续开始我们的成长之旅吧. 上文说过,我们主要参考的是 ...
- p5.js 光速入门中文教程
本文简介 点赞 + 关注 + 收藏 = 学会了 本文的目标是和各位工友一起有序的快速上手 p5.js ,会讲解 p5.js 的基础用法. 本文会涉及到的内容包括: 项目搭建 p5.js 基础2D图形 ...
- 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例
安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...
最新文章
- 无毛刺的时钟切换电路(Glitch-free clock switching circuit)设计(Verilog)
- 【Android 逆向】类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )
- Java 8 的 JVM 有多快?Fork-Join 性能基准测试
- LeetCode 100相同的树101对称二叉树
- html标题电脑快速输入,快速把纸上文字输入到电脑中的技巧
- SAP 解决长时间不操作掉线问题
- c语言程序不用编译即可被计算机识别运行,2011秋华农c语言试卷
- U-Boot-2009-03移植笔记(移植准备)
- 2020,分布式架构会给传统数据库运维带来哪些变化?
- 计算机科学 高中研究项目,高中信息科技教学中渗透计算机科学史的实践研究...
- ModuleNotFoundError: No module named ‘librosa‘
- 做数据分析已经会Excel了,还要学Python吗?
- zabbix3.4 监控mysql 数据库连接数
- Gartner公布2017年全球云存储魔力象限:阿里云跻身四强
- 【Sibelius】制谱软件 (西贝柳斯)入门笔记
- Web前端开发技术 HTML、CSS、JavaScript pdf
- 基于STM32f103的TM1640驱动程序(地址自动加1 和 固定地址)
- 模电_第八章_功率放大电路
- sscanf 实现_医保 | 好消息!门诊慢病实现山东省内联网结算啦~
- LIKE视频网站无法登录服务器,解析视频地址失败,更换服务器也不行