对DrawCall的理解
来源:互联网 发布:淘宝价格管控 编辑:程序博客网 时间:2024/06/05 20:13
drawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。
这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall而每个drawcall都需要很多准备工作,检测渲染状态、提交渲染数据、提交渲染状态。而GPU本身具有很强大的计算能力,可以很快就处理完渲染任务。
当DrawCall过多,CPU就会很多额外开销用于准备工作,CPU本身负载,而这时GPU可能闲置了。
解决DrawCall:过多的DrawCall会造成CPU的性能瓶颈:大量时间消耗在DrawCall准备工作上。很显然的一个优化方向就是:尽量把小的DrawCall合并到一个大的DrawCall中,这就是批处理的思想。下面是一些具体实施方案:
- 合并的网格会在一次渲染任务中进行绘制,他们的渲染数据,渲染状态和shader都是一样的,因此合并的条件至少是:同材质、同贴图、同shader。最好网格顶点格式也一致。
- 尽量避免使用大量小的网格,当确实需要时,进行合并。
- 避免使用过多的材质,尽量共享材质。
- 合并本身有消耗,因此尽量在编辑器下进行合并
- 确实需要在运行时合并的,将静态的物体和动态的物体分开合并:静态的合并一次就可以,动态的只要有物体发生变换就要重新合并。
阅读全文
0 0
- 对DrawCall的理解
- 【NGUI源码剖析】深入理解NGUI的drawcall
- DrawCall的简单介绍
- Unity的DrawCall
- DrawCall的介绍
- UNITY的drawcall计算
- NGUI诡异的drawCall
- DrawCall
- DrawCall
- NGUI减少drawcall 的总结
- 源码分析NGUI的DrawCall合并原理
- 源码分析NGUI的DrawCall合并原理
- Unity3d NGUI的drawcall,UISprite与UITexture
- DrawCall的优化以及一些相关测试
- 批渲染batches与DrawCall的关系
- 手机能承受的drawcall 怎么算?
- Unity UGUI的DrawCall优化(一)
- 文字(TTF)渲染的drawcall问题
- Qt加载高德在线地图
- 如何快速搭建一个maven
- UICollectionViewController与引导页
- 一个优秀的Unity3d开发者必备的几种设计模式
- Android 打印当前进程的所有线程信息
- 对DrawCall的理解
- Linux解压.tar.xz
- N的阶乘末尾有多少个零
- 利用vlc插件将IP摄像头嵌入网页和网页播放RTSP流
- 2017Android面试题(临时版一)
- sql server2012基本语句
- 安装了一个jdk(或者jre),但是没有配置环境变量,即找到了jdk(jre)的安装文件夹,我怎么查看其的版本?
- POJ1664-放苹果
- Android_adb shell am/pm使用