XNA Alpha Blending, um einen Teil einer Textur transparent zu machen

Ich versuche, Alpha-Blending in XNA zu verwenden, um einen Teil einer gezeichneten Textur transparent zu machen. Zum Beispiel lösche ich den Bildschirm auf eine Farbe, sagen wir Blau. Dann zeichne ich eine Textur, die rot ist. Schließlich zeichne ich eine Textur, die nur ein radialer Verlauf von vollständig transparent in der Mitte bis vollständig schwarz am Rand ist. Ich möchte, dass die zuvor gezeichnete rote Textur an den gleichen Stellen transparent ist wie die radiale Verlaufsstruktur. Sie sollten also in der Lage sein, den blauen Hintergrund durch die rote Textur zu erkennen.

Ich dachte, dass dies funktionieren würde.

GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin(SpriteBlendMode.None);
spriteBatch.Draw(bg, new Vector2(0, 0), Color.White);
spriteBatch.End();

spriteBatch.Begin(SpriteBlendMode.None);

GraphicsDevice.RenderState.AlphaBlendEnable = true;
GraphicsDevice.RenderState.AlphaSourceBlend = Blend.One;
GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.Zero;
GraphicsDevice.RenderState.SourceBlend = Blend.Zero;
GraphicsDevice.RenderState.DestinationBlend = Blend.One;
GraphicsDevice.RenderState.BlendFunction = BlendFunction.Add;

spriteBatch.Draw(circle, new Vector2(0, 0), Color.White);
spriteBatch.End();

GraphicsDevice.RenderState.AlphaBlendEnable = false;

Aber es scheint nur alle meine RenderState-Einstellungen zu ignorieren. Ich habe auch versucht, den SpriteBlendMode auf AlphaBlend zu setzen. Es mischt die Texturen, aber das ist nicht der Effekt, den ich will.

Jede Hilfe wäre dankbar.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage