2013-04-09 57 views
0

四處張望,找不到任何人有這個問題,誰得到了答案,所以我在這裏發佈它!在XNA 4.0中一起使用PrimitiveBatch和SpriteBatch

反正有沒有在使用2D相機時在xna中一起使用primitiveBatch和spriteBatch?有沒有一種方法可以應用primitiveBatch上spriteBatch的投影?

回答

1

那麼一個2D攝像頭只是一個矩陣,幸運的是,spritbatch的Begin方法有一個2d變換參數。

public void Begin (
    SpriteSortMode sortMode, 
    BlendState blendState, 
    SamplerState samplerState, 
    DepthStencilState depthStencilState, 
    RasterizerState rasterizerState, 
    Effect effect, 
    Matrix transformMatrix 
) 

看看底部,最後一個參數。

這意味着在這個和spritebatch的結束方法之間的所有後續繪製調用都會將這個轉換矩陣應用於它。

如果我們想將繪畫進一步抽象化,我們可以創建自己的相機類,它將包含一個屬性,可能會返回相機當前狀態的正確矩陣。

快速谷歌搜索給了我這個教程,它似乎很好地展示瞭如何抽象矩陣的使用,而只是使用位置,比例和旋轉。 http://adambruenderman.wordpress.com/2011/04/05/create-a-2d-camera-in-xna-gs-4-0/

欲瞭解更多信息看 http://msdn.microsoft.com/en-us/library/ff433701.aspx

+0

我可以從相機目前看來,這是我使用的一個通入spriteBatch,現在我一直在試圖通過同進primitiveBatch類。 primitiveBatch使用BasicEffect繪製,因此我將basicEffect.View設置爲與傳遞給spriteBatch的同一個矩陣,但結果是primitiveBatch的繪圖在移動時跟隨相機,而spriteBatch沒有,我不想任何跟隨相機,我做錯了什麼? – Enum 2013-04-15 08:36:11

+0

nwm,現在解決了,我把錯誤的視圖傳入了primitiveBatch :) – Enum 2013-04-15 08:53:44