2009-06-02 35 views
10

在XNA中,什麼時候適合使用多個spritebatch呈現您的遊戲內容?到目前爲止,我從來沒有使用過多個,並且從未注意到這種方法的缺點。何時在XNA中使用多個sprite批處理?

在什麼情況下會推薦使用多個spritebatches,甚至是必要的?

回答

7

很少有使用多個SpriteBatches的情況。我看到的很多例子是你想要對不同的精靈集合應用不同的後期處理/渲染選項,這需要爲每個集合分開一個獨立的SpriteBatch。

如果可能的話,僅使用一個批次通常被認爲是良好的做法,因爲在一個批次中繪製儘可能多的東西比在多個批次上分散工作的性能高得多。此外,由於您只能控制單個SpriteBatch中的排序順序,因此可能會更難(或不可能)控制來自不同批次的精靈之間的深度。

簡而言之:有中,您可能想這樣做可能的情況下,但它不是一個普遍的現象,一般你應該堅持使用一個SpriteBatch除非你知道,你不能完成你想要的不用多於一個。

+0

標準用例可能希望使用不同的TextureAddressMode,如Wrap – markmnl 2012-08-12 02:20:26

0

如果DrawableGameComponents每個DrawableGameComponent都有一個SpriteBatch,而不是嘗試傳遞它,那麼它也可能更容易。

2

Here是何時使用多於1個SpriteBatch的一個很好的例子(Shawn的博客是 - 像往常一樣 - 權威來源)。

在您調用End方法之前,SpriteBatch實際上並不執行任何繪圖。這意味着您可以開始多個具有不同設置的重疊批次,可以使用批次實例的任意組合以任意順序繪製精靈,並根據End Call的順序控制每個批次的整個內容的繪製順序。

注意,這個例子是關於優化性能與alpha混合,並通過深度排序精靈的場景。當(或者說,如果)遇到性能問題,使用多個SpriteBatches可能會有所收穫。在此之前,你可能會更簡單。