在XNA中混合状态

时间:2015-01-15 08:58:56

标签: c# xna


我很难找到如何在XNA中做某事。 我有这样的事情:

public void Draw()
{
     spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend);
     DrawFirstObject();    // Depth = 0.5f
     spriteBatch.End();

     spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.Additive);
     DrawSecondObject();    // Depth = 0.2f
     spriteBatch.End();
}

基本上我需要有2个不同的spritebatch开始调用,一个使用AlphaBlend,另一个使用Additive BlendState。但问题是当我做这个时,第二个调用中的绘制对象总是被绘制在第一个调用的顶部而不是它们需要的位置。我无法重新格式化我的代码,因此第二个调用位于顶部,我需要保持深度顺序。如果您有任何建议,我将感激不尽。

1 个答案:

答案 0 :(得分:0)

当您在第一次Draw来电时使用透明图片时,理想情况下您应该使用SpriteSortMode.BackToFront

SpriteSortMode