2012-01-04 4 views
0

私は、次のコードを持っている:このコードは逆の順序でスプライトを描画するのはなぜですか?

spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, cam.TransformMatrix); 
spriteBatch.Draw(_comicBackground, workspace, Color.AliceBlue); 
foreach (LayoutField lf in comicStrip.LayoutFields) 
{ 
    spriteBatch.Draw(_layoutFieldBackground, new Rectangle(lf.PosX, lf.PosY, lf.Width, lf.Height), Color.White); 
} 
spriteBatch.End(); 

関係なくSpriteSortMode(FrontToBack | BackToFront)の背景は、常に結果に自分のレイアウトをカバーし、foreachループの結果の上位に表示されています。

私はスプライトを逆順で描画できるので、ショーストッパーではありませんが、画面上に描画する順番にそれらを保持したいと考えています。

+1

'SpriteSortMode'を' Deffered'に設定するとどうなりますか? – keyboardP

+0

申し訳ありませんが、昨日の時間がありませんでした。 「Deffered」モードが機能しました。ありがとうございます – LukeP

答えて

4

FrontToBackBackToFrontのソートモードでは、Draw()コールでスプライトの奥行き値を指定する必要があります。 layerDepthパラメータhereを参照してください。 Draw()の呼び出し順にスプライトを描画する場合は、SpriteSortMode.DeferredまたはSpriteSortMode.Immediateを使用します。

+0

うーん、それは素晴らしい仕事です。本当にありがとう! – LukeP

関連する問題