Я пытаюсь реализовать эффект свечения на некоторых лазерах в игре, но сталкиваюсь с некоторыми проблемами. Сначала я применил блум ко всему, вот так:
protected override void Draw(GameTime gameTime)
{
batch.Begin(SpriteSortMode.Texture, BlendState.Additive);
bloom.BeginDraw();
stateManager.Draw(gameTime, batch);
batch.End();
base.Draw(gameTime);
}
Это работало нормально, но, конечно, выглядело ужасно, поэтому, чтобы разделить все это на два вызова отрисовки, один с блумом, а другой без него, я попробовал следующее:
protected override void Draw(GameTime gameTime)
{
bloom.BeginDraw();
GraphicsDevice.Clear(Color.Black);
batch.Begin(SpriteSortMode.Texture, BlendState.Additive);
stateManager.DrawBloomed(gameTime, batch);
batch.End();
base.Draw(gameTime);
batch.Begin(SpriteSortMode.Deferred, BlendState.Additive);
stateManager.Draw(gameTime, batch);
batch.End();
base.Draw(gameTime);
}
Однако теперь все совершенно черное. Может ли кто-нибудь указать мне правильное направление относительно того, почему это происходит и как я «действительно» должен подходить к этой проблеме?