何时在XNA中使用多个精灵批次?

时间:2009-06-02 20:20:47

标签: xna

在XNA中,何时使用多个spritebatch呈现游戏内容是否合适?到目前为止,我从未使用过多个,并且从未注意到这种方法有任何缺点。

在什么情况下建议使用多个spritebatches甚至是必要的?

3 个答案:

答案 0 :(得分:7)

极少数情况下需要使用多个SpriteBatches。我看到的一个例子是你想要将不同的后处理/渲染应用于不同的精灵集合的情况,这需要为每个集合单独的SpriteBatch。

通常认为最好只使用一个批次,因为在一个批次中绘制尽可能多的东西比在多个批次中分散工作要高得多。此外,由于您只能在单个SpriteBatch中控制排序顺序,因此可能会更难(或不可能)控制来自不同批次的精灵之间的深度。

简而言之:在某些情况下你可能想要这样做,但它并不常见,一般来说你应该坚持使用一个SpriteBatch,除非你知道你不能在不使用多个的情况下完成您想要的任务。

答案 1 :(得分:2)

Here是一个很好的例子,说明何时使用超过1个SpriteBatch(Shawn的博客 - 像往常一样 - 最权威的来源)。

  

在调用End方法之前,SpriteBatch实际上不会进行任何绘制。这意味着您可以使用不同的设置开始多个重叠批次,使用批处理实例的任意组合以任何顺序绘制精灵,并控制每个批次的整个内容通过最终调用的顺序绘制的顺序。

请注意,此示例是关于针对具有Alpha混合的场景优化性能以及按深度排序的精灵。当(或者更确切地说, if )遇到性能问题时,使用多个SpriteBatches可能会有所收获。在那之前,你最好还是保持简单。

答案 2 :(得分:0)

在DrawableGameComponents的情况下,每个DrawableGameComponent都有一个SpriteBatch,而不是试图传递它,这也可能更容易。