半透明の画像を描画するときの仕様について質問です。
半透明の画像を描画するときに, アルファ値が正常 (思い通り) に反映される場合と
そうでない場合があります。
MakeScreen関数でグラフィックを作成し, そこに
LoadGraph関数で読み込んだ画像をDrawGraph関数で描画
もしくは,
LoadGraphScreen関数で画像を描画し,
その後, MakeScreen関数で作成したグラフィックをDX_SCREEN_BACK へと描画すると,
半透明部分の透明度が本来より高くなってしまっているように見えます。
(完全な不透明には変化が見られない)
LoadGraph関数で読み込んだ画像を直接DX_SCREEN_BACKに描画した場合だと,
(LoadGraphScreen関数も同様)
正常に描画されているように見えます。
真っ白 (R:255, G:255, B:255, A:255) から 透明 (R:255, G:255, B:255, A:0) の
グラデーション画像を描画してみたところ, このような結果となりました。
黒背景 (ClearDrawScreen関数を使用) と紫の四角形の上に描画しています。
ttp://s1.gazo.cc/up/146200.png
左が一度MakeScreen関数で作成したグラフィックを経由して描画したもので,
右が直接描画したものです。
なぜグラフィックを経由しただけでこのような違いが出てしまうのでしょうか?
経由する回数が増えるとさらに半透明部分の透明度が高くなってしまいます。
VisualC++用 3.14f
VisualC#用 3.14f
VisualC#用 3.14a
で試してみましたが, 全て同じ結果でした。
よろしくお願いします。