【发布时间】:2014-09-30 09:04:20
【问题描述】:
我想确认以下几点,只使用一个精灵批次并绘制字体和其他动画精灵可以吗?如果这是真的,只使用一个 sprite-batch 可以批处理多少个四边形?这是 DirectX API 的问题,它负责处理这个问题还是 GPU ?
【问题讨论】:
标签: c++ directx-11
我想确认以下几点,只使用一个精灵批次并绘制字体和其他动画精灵可以吗?如果这是真的,只使用一个 sprite-batch 可以批处理多少个四边形?这是 DirectX API 的问题,它负责处理这个问题还是 GPU ?
【问题讨论】:
标签: c++ directx-11
是的,可以将一个精灵批处理对象用于字体和其他精灵。事实上,这样可能更好。
可以批处理的精灵数量取决于实现。如果您在 DirectXTK 中使用SpriteBatch 类,那么它会在您向其中添加精灵时使用一个不断增长的数组,因此您可以为其提供的精灵数量没有真正的限制(内存除外)。它在内部创建了一个顶点缓冲区,可以处理 2048 个精灵或 2048*4 个顶点。这不会限制您可以发送到SpriteBatch 的精灵数量。这只是意味着,例如,如果您将 3000 个精灵排队,则需要进行至少两次绘制调用来渲染所有内容(如果您使用多个纹理,则需要更多)。
因此,一次调用中可以绘制的精灵数量取决于实现创建的顶点缓冲区的大小。顶点缓冲区的最大大小最终取决于可用内存的大小。
【讨论】: