3

これは説明するのが非常に難しい問題です (私は Windows 8 の MonoGame を使用しています)。

.png などの半透明の「スプライト」画像を、画面ではなく透明な画像にレンダリングできるようにしたいのですが、これを数回実行して、実際にはさまざまな画像をブレンドして新しいスプライト画像を作成します。 ..次に、この新しいスプライト画像を、描画していない領域を透明のままにして画面にレンダリングできるようにしたいと考えています (つまり、主にエッジの周り)。

確かに、半透明の「スプライト」.png 画像を読み込んで、RenderTarget に「貼り付ける」ことができます。これを数回行うと、「スプライト」がうまくブレンドされます。次に、その合成イメージである RenderTarget を画面に「貼り付ける」(つまり、描画/レンダリングする) ことができます。

問題は、RenderTarget が画面に描画されると、その周りに固体ブロックが表示されることです。

おそらく、RenderTarget の各ピクセルのデフォルトのアルファ値はソリッドです。描画しないピクセルは、絵筆をつかんで紙ではなくガラスに描いたかのように、完全に透明のままにしたいと考えています。次に、そのガラスのシートを、たとえば、渦巻き模様のカーペットの上に置くと、塗料がない場所ならどこでも渦巻き模様のカーペットが見えます。しかし、それは私が見ているものではなく、「ガラスに描いた」のではなく「黒い紙に描いた」ように、ただ黒を見ているだけです.

画像を別の画像に直接レンダリングできる場合、問題はありません (これは可能ですか?): おそらく PhotoShop で「空の」.png 画像を作成します。つまり、何も描画せずに透明で保存します。有効にして、その上に画像をレンダリングして、結果を保存します。しかし、RenderTarget は既に不透明のようです。

上記が明確であることを願っています。Texture2D オブジェクトのアルファの操作に関する多くの回答を検索して見つけましたが、RenderTarget2D のアルファの操作については何も見つかりません。

助けてくれてありがとう!

4

1 に答える 1

2

私は最終的に解決策を見つけたので、他の人に役立つ場合に備えて、自分の質問に答えます。

とても簡単です。実際、RenderTarget2D は基本的に Texture2D であるため、透明にすることができます。次のようにクリアできます。

GraphicsDevice.Clear(Color.Transparent);

それは私を混乱させたものです。

于 2015-03-29T12:36:55.107 に答える