0

私のアプリでステンシルを動作させようとしていました。スプライトを使用して、デバイスにコンテンツをレンダリングします。コンテンツは、映画、写真、またはテキストである可能性があります。

これらのスプライトを使用してステンシルバッファを設定できますか?これは、レンダリングされている他のスプライトをステンシルアウトするために後のパスで使用できますか?

StencilFunction = Compare.Never!を設定しても、スプライトをステンシルで印刷することはできません。私がしているかもしれない何か間違ったことはありますか?

MDXのステンシルに関連する投稿をチェックするのにほぼ1日を費やしましたが、それを機能させることができませんでした。

もう少し検索すると、ステンシルバッファに追加する形状のシルエットを描画する手法にたどり着きました。私の場合、これは本当に必要ですか?スプライトを使用し、それらをステンシルバッファーに追加して、他のスプライトをステンシルアウトしたいと思います。

編集:わかりました..それで私はそれを成し遂げる方法を考え出しました。この投稿を参照-http://www.gamedev.net/community/forums/viewreply.asp?ID= 1999276

しかし現在、スプライトはアルファ値を無視し、スプライトを不透明にしています。アルファブレンディングがfalseに設定されている場合に得られる効果と同様です。何か案は?

4

1 に答える 1

0

それで、私はついにそれを理解しました。これはすべて、スプライトとそのBegin()メソッドに関連しています。

Sprite.Begin()は、RenderStateを変更し、ステンシルを無効にします。SpriteFlags.DoNotModifyRenderStateフラグを設定することでこれを防ぐことができますが、スプライトが描画されるときのアルファブレンディングはサポートされません。

私が今やったことは、SpriteFlags.DoNotModifyRenderStateフラグを設定せずにSprite.Begin()を呼び出すことでした。また、Sprite.Draw()を呼び出す前に、デバイスでステンシルを有効にしました。

于 2010-09-17T12:26:15.627 に答える