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. windows10上使用一个tomcat部署2个项目
  2. 原生html js css绘制折现图,HTML5教程 Chart.js自定义提示折线图
  3. linux系统巡检脚本
  4. (75)内核APC执行过程,分析 KiDeliverApc 函数
  5. 在数据库‘master’中拒绝CREATE DATABASE权限 的问题
  6. STM32的I2C特性及架构
  7. 《Python Cookbook 3rd》笔记(4.3):使用生成器创建新的迭代模式
  8. php发展历,PHP的发展历程
  9. 用户分析-RFM模型生命周期
  10. python是什么专业-Python是个什么鬼?为什么985学生都要学它?!
  11. 【转】 jquery遍历json数组方法
  12. truffle Migration是什么
  13. donet学习笔记10(c#基础)
  14. 新浪UC 单文件精简版
  15. 获取Google Advertising ID作为唯一识别码
  16. System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 1628
  17. 计算机编程学英语词汇,计算机编程 常用术语英语词汇大全
  18. matlab开环调速,直流电动机开环调速MATLAB系统仿真
  19. 小学英语词汇量测试软件好,Test Your Vocabulary:号称是最准的英语词汇量测试网站...
  20. js-如何获取class对象

热门文章

  1. 漫话电子配线架的定义
  2. java short float_java – 将float转换为short,具有最小的精度损失
  3. 数值计算方法——第一节方程的根的求解
  4. 牛客用友201803
  5. python数字图像处理笔记10 图像旋转
  6. Html 下拉框 复选
  7. 汽车诊断协议ISO15765
  8. 64位应用程序的开发
  9. ai怎么让图片任意变形_AI入门基础教程-图形绘制变形及路径查找器
  10. Windows下NTFS连接点管理工具-junction工具说明