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的理解相关推荐

  1. 深入理解地址翻译 CSAPP

    地址翻译, 用自己的话说一遍, 然后自己在draw.io画图理解. 术语 页表就是一个 页表条目(Page Table Entry  PTE)的数组,每一项(每个PTE)是[有效位,物理地址]. 我们 ...

  2. 函数式编程语言python-用Python进行基础的函数式编程的教程

    许多函数式文章讲述的是组合,流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式,非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...

  3. Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...

  4. python函数编程实战_(转)函数式编程实战教程(Python版)

    许多函数式文章讲述的是组合,流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式,非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...

  5. Android开发经典笔试面试题汇总(持续更新中)

    1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当.你的机器就会变得非常慢,那么线程销毁的方法是:(A) A. onDestroy() B. onClear() C. o ...

  6. Unity的DrawCall

    文章目录[点击展开](?)[+] 图形引擎渲染画面的过程 可见性测试 准备好物体的数据 通知图形API开始绘制 什么是Draw Call Draw Call Batching 技术 Draw Call ...

  7. 3D美术人员Technical Artist(TA技术美术)的学习之旅(3)

    最近感觉有点丧啊~= =.主要是看了群里各种大佬的说话,专业术语我都接不上话,深深的为自己的弱鸡表示了悲哀. 哈哈哈哈.好了,闲言少叙,书归正传.继续开始我们的成长之旅吧. 上文说过,我们主要参考的是 ...

  8. p5.js 光速入门中文教程

    本文简介 点赞 + 关注 + 收藏 = 学会了 本文的目标是和各位工友一起有序的快速上手 p5.js ,会讲解 p5.js 的基础用法. 本文会涉及到的内容包括: 项目搭建 p5.js 基础2D图形 ...

  9. 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例

    安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...

最新文章

  1. 无毛刺的时钟切换电路(Glitch-free clock switching circuit)设计(Verilog)
  2. 【Android 逆向】类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )
  3. Java 8 的 JVM 有多快?Fork-Join 性能基准测试
  4. LeetCode 100相同的树101对称二叉树
  5. html标题电脑快速输入,快速把纸上文字输入到电脑中的技巧
  6. SAP 解决长时间不操作掉线问题
  7. c语言程序不用编译即可被计算机识别运行,2011秋华农c语言试卷
  8. U-Boot-2009-03移植笔记(移植准备)
  9. 2020,分布式架构会给传统数据库运维带来哪些变化?
  10. 计算机科学 高中研究项目,高中信息科技教学中渗透计算机科学史的实践研究...
  11. ModuleNotFoundError: No module named ‘librosa‘
  12. 做数据分析已经会Excel了,还要学Python吗?
  13. zabbix3.4 监控mysql 数据库连接数
  14. Gartner公布2017年全球云存储魔力象限:阿里云跻身四强
  15. 【Sibelius】制谱软件 (西贝柳斯)入门笔记
  16. Web前端开发技术 HTML、CSS、JavaScript pdf
  17. 基于STM32f103的TM1640驱动程序(地址自动加1 和 固定地址)
  18. 模电_第八章_功率放大电路
  19. sscanf 实现_医保 | 好消息!门诊慢病实现山东省内联网结算啦~
  20. LIKE视频网站无法登录服务器,解析视频地址失败,更换服务器也不行

热门文章

  1. 经历不可抗力是一种什么体验
  2. (附源码)计算机毕业设计SSM建筑工地环保监控系统研究
  3. 如何在SOLIDWORKS工程图中,快速进行尺寸标注?
  4. CSRF漏洞检测与发现
  5. 网易互娱游戏研发面经及答案:C++基础
  6. 计算机管理文件和文件夹的实验结果及分析,大学计算机实验报告1
  7. 【java面试】6万字最全Java知识体系梳理,还在找面试题?看这篇就够啦
  8. Cisco AIR-LAP1131AG-C-K9刷胖AP
  9. 利用程序计算2+22+222+2222+22222的和
  10. 微信分销系统商城营销5大重点