我想确认以下内容,仅使用一个sprite-batch绘制其字体以及其他动画sprite可以吗?如果是这样,那么仅使用一个sprite-batch即可批处理多少个quad?这是DirectX API的问题,它可以解决该问题或GPU吗?

最佳答案

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

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

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

关于c++ - 雪碧批处理概念,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26110730/

10-14 09:08