为什么这段代码以相反的顺序绘制精灵?

时间:2012-01-04 22:41:56

标签: c# windows-phone-7 xna sprite

我有以下代码:

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 个答案:

答案 0 :(得分:4)

FrontToBackBackToFront排序模式要求您在Draw()次调用中指定精灵深度值;请参阅layerDepth参数here。如果您想按照Draw()来电的顺序绘制精灵,请使用SpriteSortMode.DeferredSpriteSortMode.Immediate