2015-06-05 3 views
0

Я рисую все мои спрайты, используя немедленный режим.Xna Сброс эффекта Sprite по умолчанию

mSpriteBatch.Begin(SpriteSortMode.Immediate, null, SamplerState.LinearWrap, null, null); 
foreach(UIWidget widget in widgets) { 
    widget.Draw(mSpriteBatch); 
} 
mSpriteBatch.End(); 

В одном из спрайтов я применить пользовательский эффект:

 public override void Draw(SpriteBatch spriteBatch) { 

    effect.CurrentTechnique.Passes[0].Apply(); 
    spriteBatch.Draw(
     texture, 
     position, 
     source, 
     color, 
     rotation, 
     origin, 
     scale * Globals.ScreenScaleFactor, 
     SpriteEffects.None, 
     depth); 
} 

Благодаря к этому все спрайты, нарисованных после того, как этот эффект применяется. Как я могу «отказаться» от этого эффекта?

ответ

1

Вместо применения специального эффекта, принято передавать эффект при вызове SpriteBatch.Begin.

Это означает, что вы заканчиваете предыдущий mSpriteBatch и начинаете новый с настраиваемым эффектом и заканчиваете его, и начинаете новый, чтобы отменить собственный эффект. Это не должно вызывать каких-либо последствий для производительности, поскольку вы уже используете SpriteSortMode.Immediate, который отображает каждый UIWidget отдельно.

Вы также можете использовать отдельный SpriteBatch для пользовательского эффекта.

Смежные вопросы