参考文章:
图形渲染及优化—Unity合批技术实践
图形渲染及优化—Batch

批是啥?
对某对象进行批量处理叫批处理

Batch是啥?
引擎每帧提交的Batch数量就是衡量渲染压力的指标
Batch就是调用一次API的绘制接口向GPU提交相同渲染状态的一定数量的三角形的行为
接口:OpenGL的glDrawArrays/glDrawElements
Batch等于一堆打包后的Draw call

什么叫合批:
以中性能优化的方式
将多次绘制请求,在允许的条件下进行合并处理,减少CPU对GPU绘制请求的次数

怎么开启?

1.静态合批(static batch)
将static的静态物体(永远不会移动、旋转和缩放) ,如果相同材质球,面数在xx之内。unity会自动合并成一个batch送往GPU处理
(64k顶点和64k索引)

使用静态合批需要额外的内存开销来存储合并后的几何数据。
如果一些物体共用了同样的几何数据,那么引擎会在编译以及运行状态对每个物体创建一个几何数据备份

如果static物体过大,应该注意内存开销

原理:
1.自动提取这些静态模型的 VertexBuffer和IndexBuffer
2.根据其在场景中的位置等最终状态信息,将这些模型的顶点数据变换到世界空间下
3.重新构建大的VertexBuffer和IndexBuffer
4.记录每一个子模型的IndexBuffer数据在构建大的IndexBuffer的起始以及结束位置

2.动态合批(dynmaic batch)
如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行处理(动态批处理是自动完成的)

注意:
1.动态批处理物体需要在每个顶点上进行一定开销,动态批处理仅支持小于900顶点的网格物体(不知道现在啥样了)
2.如果着色器使用顶点位置,法线和UV值三种属性,只能批处理300顶点以下的物体;如果着色器需要使用顶点位置,法线,UV0,UV1和切向量,只能批处理180顶点以下的物体
3.不能使用缩放尺度(scale),缩放不同的物体不能进行批处理;统一缩放尺度的物体不会与非统一缩放尺度的物体进行批处理,eg:(1,1,1)和(1,2,1)不会批处理,(1,2,1)和(1,3,1)可以进行批处理
4.使用不同材质的实例化物体将会导致批处理失败


主要区别:
1.静态的不会再改了,动态的改了也能和
2.动态的比较费,只能和小的
3.本质上静态合批是用内存给GPU降低压力,动态合批是拿CPU给GPU降低压力

动态合批和静态合批的区别相关推荐

  1. Jsp中的动态INCLUDE和静态INCLUDE的区别?

    其实就是动态包含和静态包含的区别: 1. 两者格式不同,静态包含:<%@ include file="文件" %>,而动态包含 < jsp : include p ...

  2. asp.net之动态页面和静态页面的区别

    asp.net之动态页面和静态页面的区别 当我开始接触web开发的时候,首先学到的是html.css.js这一类网页语言,通过布局可以搭建出一个静态网站,效果也跟我们上网时经常看到的一些网站一样了.于 ...

  3. JSP中动态includ与静态includ的区别

    JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" ...

  4. jsp中动态include与静态include的区别

    JSP中动态INCLUDE与静态INCLUDE的区别 动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" f ...

  5. 学习逆向知识之用于游戏外挂的实现.第二讲,快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别...

    通过游戏外挂,学习逆向技术之快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别 一丶静态基址. 动态基址. 基址的区别 通过上一讲超级马里奥的游戏外挂技术制作.我们学习到了静态基址.以及观看内 ...

  6. 广播动态注册和静态注册的区别

    动态注册和静态注册的区别: 动态注册的广播接收器可以自由的控制注册和取消,有很大的灵活性.但是只能在程序启动之后才能收到广播,此外,不知道你注意到了没,广播接收器的注销是在onDestroy()方法中 ...

  7. 【网站建设大全】网站建设动态网站和静态网站的区别

    文章目录 前言 一.从功能方面来说 二.从对数据的利用上说 总结 前言 网站建设公司提供的网站建设服务是做的网站分为动态网站和静态网站两类.那么动态网站和静态网站之间有什么区别呢? 一.从功能方面来说 ...

  8. 老卫带你学---动态语言和静态语言的区别

    老卫带你学-动态语言和静态语言的区别 1.基本概念 静态语言(强类型语言) 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型. 例如:C++.Java ...

  9. 动态欧拉角与静态欧拉角的区别

    看了网上好多的讲解,讲的都不是特别清晰,让人有一种很懵懵的感觉,感觉懂了,又貌似没懂的奇怪感觉,读了那么多的水文,大多都是内容差不多,好多文章之中错误百出,都是稍微提了一点,没有详细对比二者的区别,很 ...

最新文章

  1. 不使用乘法、除法或mod,实现两数相除
  2. 写一个函数,要求输入一个字符串和一个字符长度,根据字符长度对该字符串进行分隔
  3. innerHTML的确是好东西
  4. 广播,实现强制下线功能(项目文件已上传GitHub)
  5. numpy中reshape方法详解
  6. Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)...
  7. react脚手架快速创建react项目
  8. HTTP知识普及系列:HTTP返回状态码
  9. Promise的deferred对象详解
  10. bzoj 1636 bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队(RMQ)
  11. (1)非对称加密——RSA——史上最通俗的小白可看懂!
  12. Android UI学习之TextView
  13. Java数据结构:双向链表Double Linked List基础笔记
  14. C64x EDMA Architecture
  15. idea项目误删恢复
  16. vue+mapbox实现聚合以及自定义图片图层、元素激活、显示popup、自定义marker
  17. ubuntu命令行查看dns_linux命令,查看dns服务器的状态,查看dhcp服务器的状态
  18. android RemoteViews用法
  19. centos 7.6 ——远程访问及控制——(ssh密钥登录、ssh客户端、TCP Wrappers)
  20. 通过 Hostapd 进行 WIFI 热点共享上网

热门文章

  1. idea中git版本回退
  2. 1-fastfds 环境搭建
  3. 电磁兼容(EMC)的标准与测试内容(三)
  4. 照片文件损坏能修复吗?
  5. php商品在最少购买,ecshop每个商品添加最少购买量最小订购量
  6. psycopg2连接PostgreSQL下的不同模式(SCHEMA)
  7. 中国铁路 12306 网站的高并发架构带来的思考?研究分析后,果然超牛逼…
  8. hbase bulkload java,HBase Bulkload 失败问题处理以及改进
  9. 学生管理系统(总结)
  10. ioredis pipeline用法