私はいくつかのブレンド モードを使用する必要があるTerraria ( C#で記述され、 XNAを使用) 用の何らかの mod に取り組んでいます。加算ブレンディングを機能させるのに問題はありませんでしたが、減算ブレンディングはいくつかの問題を引き起こします。
減算ブレンディングで何とか表示できたのですが、どうしても標準モードに戻したくありません。SpriteBatch.EndとBeginはまったく役に立ちません。
これは私のカスタムBlendStateです:
public readonly static BlendState
bsSubtract = new BlendState{
ColorSourceBlend = Blend.SourceAlpha,
ColorDestinationBlend = Blend.One,
ColorBlendFunction = BlendFunction.ReverseSubtract,
AlphaSourceBlend = Blend.SourceAlpha,
AlphaDestinationBlend = Blend.One,
AlphaBlendFunction = BlendFunction.ReverseSubtract
},
描画コード:
sb.End();
sb.Begin(SpriteSortMode.Immediate,bsSubtract);
(...drawing drawing blah...)
sb.End();
sb.Begin(SpriteSortMode.Immediate,BlendState.Additive);
問題は、このコードの後に描画されるものはすべて、まだいくつかの古いオプション (半透明、当たり障りのないもの) を使用しているように見えることです。私は何を間違っていますか?
ブレンド状態を元に戻す前に sb.End ()とsb.Begin( )だけを呼び出してみたり、 BlendFunctionsをAddに設定しただけで、標準の加算的な状態である別のカスタム ブレンド状態を使用してみましたが、役に立ちませんでした。
編集:任意のカスタム BlendState を設定すると、それが可能になるようです...
EDIT2: 問題は、図面を 3 つの別々の場所に分割したことのようです。1 つはアイテム スロット用、もう 1 つはタイル用、もう 1 つは一般的な世界用です。そして、これらの(アイテム)の1つで、使用する前にSpriteBatchを設定し、後でリセットするのを忘れていました。コードを見るのにもっと時間を費やすべきでした。それでも、助けてくれてありがとう!
(まだ質問を閉じることはできません。StackOverflow で許可されたら閉じます)