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