我有以下代码:
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
循环的结果之上,覆盖结果中的布局。
这不是一个显示器,因为我可以按相反顺序绘制我的精灵,但我宁愿按照它们应该在屏幕上绘制的顺序保留它们。
答案 0 :(得分:4)
FrontToBack
和BackToFront
排序模式要求您在Draw()
次调用中指定精灵深度值;请参阅layerDepth
参数here。如果您想按照Draw()
来电的顺序绘制精灵,请使用SpriteSortMode.Deferred
或SpriteSortMode.Immediate
。