Answers:
从技术上讲,“批处理”将多个操作及其数据放入一个数据结构中,因此所有这些操作都可以一次执行,而不必单独执行。
现代GPU的最大瓶颈不是其工作能力,而是在CPU和GPU上运行的游戏之间的通信。发送到GPU的每个数据包都有开销,但是小包的开销和大包的开销一样大,因此,当您发送一个大包而不是一百个小包时,这是一个很大的收益。这就是批处理。从所有较小的包装中制成一个大包装。
批处理对于Sprite尤其有用,因为每个Sprite的数据量非常少。四个顶点和四个tex坐标。因此,小包装的制造费用成比例地增加。
精灵批处理是通过一次绘制调用将多个精灵提交给GPU的方法。
其他答案都没有指出这样做的真正意义:最小化状态更改和GPU命令提交。如果您绘制了100个精灵,每个精灵都有自己的纹理,则硬件一次只能处理一个精灵。数十个甚至数千个着色器核心最终几乎没有被利用,GPU为配置纹理切换花费了太多时间来配置其渲染状态。
如果将所有精灵图像放入地图集中,则可以最大程度地减少绘制所需的状态变化。驱动程序甚至可以自动将子图形绘制请求合并为一个批处理,以便可以充分利用硬件,但这不能保证或不可能。
如果使用子画面图集,然后创建一个包含所有子画面四边形的单个VBO,并使用该数据进行单个绘制请求,则可以确保硬件得到充分利用,并且所有子画面都可以并行渲染。
然后,精灵批处理就是这样做的:使用一个图集将尽可能多的精灵放入一个VBO中,该图集通过一次绘制调用提交给GPU,从而最大限度地利用了GPU。
还有其他方法可以进行精灵批处理(例如硬件实例化,使用几何着色器等),以及这样做的其他好处,但是要点是批处理意味着每个绘制调用都绘制多个对象。