Sprite Batch concept

Sprite Batch concept

本文关键字:concept Batch Sprite      更新时间:2023-10-16

我想确认以下内容,只使用一个精灵批次并绘制字体和其他动画精灵可以吗?如果这是真的,那么只使用一个sprite批处理就可以批处理多少个四边形?这是DirectX API的问题吗?它会处理这个问题还是GPU?

是的,可以为字体和其他精灵使用一个精灵批处理对象。事实上,这样可能更好。

可以批处理的精灵数量取决于实现。如果您在DirectXTK中使用SpriteBatch类,则在向其添加精灵时,它会使用一个不断增长的数组,因此您可以给它的精灵数量没有实际限制(内存除外)。在内部,它创建了一个顶点缓冲区,可以处理2048个精灵或2048*4个顶点。这不会限制可以发送到SpriteBatch的精灵数量。这只是意味着,例如,如果你排队3000个精灵,它将需要至少进行两次绘制调用来渲染所有内容(如果你使用多个纹理,则需要更多)。

因此,一次调用中可以绘制的精灵数量取决于实现创建的顶点缓冲区的大小。顶点缓冲区的最大大小最终取决于可用内存的大小。