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

8

Was ich versuche, ist Alpha-Blending in XNA, um einen Teil einer gezeichneten Textur transparent zu machen. Zum Beispiel, ich räume den Bildschirm auf etwas Farbe, sagen wir Blue. 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 ganz schwarz am Rand ist. Was ich will, ist die rote Textur, die früher gezeichnet wurde, um an den gleichen Stellen wie die radiale Farbverlaufs-Textur transparent zu sein. Sie sollten also den blauen Hintergrund durch die rote Textur sehen können.

Ich dachte, das würde funktionieren.

%Vor%

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 willkommen.

    
DangerMouse 17.04.2010, 01:09
quelle

1 Antwort

6

Was Sie versuchen, ist die Alphakanal-Maskierung. Am einfachsten ist es, den Alphakanal mit der Content-Pipeline zu brennen. Aber wenn Sie es aus irgendeinem Grund zur Laufzeit tun möchten, verwenden Sie ein Render-Ziel (eine bessere und schnellere Lösung wäre das Schreiben eines Shaders).

Erstellen Sie zuerst ein RenderTarget2D zum Speichern und maskierten Zwischentext

%Vor%

Legen Sie das renderTarget und den Gerätezustand fest

%Vor%

Stellen Sie die Kanäle so ein, dass sie auf die Kanäle R, G, B schreiben und zeichnen Sie die erste Textur mit einem Sprite Batch

%Vor%

Stellen Sie Kanäle nur auf Alpha ein und zeichnen Sie die Alpha-Maske

%Vor%

Sie können nun das Renderziel in den Backbuffer zurückversetzen und Ihre Textur mit Alpha Blending zeichnen.

%Vor%

Vergessen Sie auch nicht, den Zustand wiederherzustellen:

%Vor%     
Pop Catalin 18.04.2010, 22:58
quelle

Tags und Links