Frage

Irgendeine Idee, wie man es macht? Ich zeichne ein Rechteck, das ein Halbtransparentenfenster sein soll. Ich habe es geschafft, die Transparenz zu machen, indem ich eine Halbtransparent-Textur gezogen habe, aber ich möchte auch das verwischen, was unter dem Fenster liegt.

Normalerweise (z. B. mit GDI) würde ich eine Bitmap des Bereichs erstellen, ihn verwischen und als Hintergrund meines Fensters malen. Mit Direct3D weiß ich nicht einmal, wie ich den Bereich mit dem bekommen kann, was bereits darauf gerendert wird. Oder sogar es kann einen anderen Ansatz geben, kann es nicht. Bitte helfen Sie.

War es hilfreich?

Lösung

Der D3D -Weg besteht darin, einen Pixel -Shader zu verwenden, um den Bereich unter Ihrem Rekt zu "verwischen".

Dies Link zeigt, wie Sie einen Pixel -Shader in C#verwenden.
Und das Link hat einen Guassian Blur Pixel Shader.

Andere Tipps

Es erfordert, dass Ihr Backbuffer als Textur ist. Sie können dann das Ganze einer neuen Textur übertragen und den relevanten Teil verwischen, bevor Sie Ihr Semi-Transfenster über die neue Textur legen.

Bearbeiten: Afaik Sie können die Draw -Funktion in einem Shader nicht verwenden. Sie müssen Ihren eigenen Sprite -Renderer schreiben. Das Start und Zeichnen richten Sie eine ganze Ladung von Zuständen ein, die Ihre Verwendung eines Scheitelpunkt -Shaders brechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top