複数のレイヤを重ねるときは、少なくとも 1 回は「空の」画像または背景と組み合わせる必要があります。しかし、「空」に勝るものはありません。透明な黒または透明な白です。完全に透明であっても、通常は表示時に無視される色があります。
私は次のことを望みます:
Destination = Image1 + Image2
これを行うには、実際にこれを行います:
Clear(Destination, 0); // Clear it with transparent black
Blend Image1 over Destination
Blend Image2 over Destination
Destination は透明な黒ですが、黒が最終的な結果に影響することは避けたいと思います。透明な白で宛先をクリアすることはできますが、この例でのみ機能し、暗い画像でも同じ問題が発生します。
結果が次のようになる理由を理解しています: directx ブレンドフォーミュラは次のように設定されています:
BlendOp = Add;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
宛先のアルファ (DestAlpha) は、このフォーミュラではまったく考慮されていません。2 つの画像を別の場所にレンダリングする前にブレンドするという日常的な問題を実装するには、どうすればよいでしょうか?