2014-09-30 64 views
0

我想确认以下内容,使用一个精灵批处理并绘制字体和其他动画精灵是否正常?如果这是真的,那么可以使用一个精灵批处理批量处理多少个四边形?是DirectX API的一个问题,它会照顾那个GPU或GPU?雪碧批量概念

回答

1

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

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

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

+1

注意可以在[CodePlex](http://go.microsoft.com/fwlink/?LinkId=248929)上找到_DirectX Tool Kit_以及[SpriteBatch]的文档(https://directxtk.codeplex.com/ wikipage?title = SpriteBatch&referTitle = DirectXTK)和[SpriteFont](https://directxtk.codeplex.com/wikipage?title=SpriteFont&referringTitle=DirectXTK)。 – 2014-09-30 05:58:38