« GeoGebra 数学アプリ | トップページ | Effekseerの歪み結果が以前と異なる »

Direct3D 11にしたことで出てきた問題1

Direct3D 9と11で同じマップでスクリーンショットを撮ったところ
下図のように結果が異なった。

Direct3D 9の場合
Screenshot0825dx9_20190630231201

Direct3D 11の場合
Screenshot0827dx11_20190630231301

下記の記事によると、
この違いはDirect3D 11を使った場合に発生する問題のようだ。

SaveDrawScreenToPNG関数について
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4079

下図は、Direct3D 11の画像をPhotoshopで拡大したもの。

Dx111

背景の白くなっているところを見ると、透過していることが分かる。

DXライブラリでは
DirectX11 を使用する環境では裏画面はアルファチャンネル付きの画像となっている。
アルファチャンネル付きの画像に対して
半透明のものを通常のアルファブレンドで描画すると計算上意図した結果が得られない。

試練の洞窟の画像は、png形式でアルファチャンネル付きの画像である。

マップ背景のレイヤー1の最初(最奥)に描画する画像で
今回のように「透過色として指定した色が使われている」画像を
DrawGraph系の関数の引数:transFlag = TRUEで透過すると
裏画面自体がアルファチャンネル付きの画像となっているため
そのまま透過してしまう。

このため、
「マップ背景のレイヤー1の最初(最奥)に描画する画像は透過しない」
ようにする。

なお、上図のミクのステータス部分のアルファブレンドの結果が異なるのは、
「通常のアルファブレンドで描画すると計算上意図した結果が得られない」
という方で

そっちは乗算済みアルファを使うことで解決するらしい。

<乗算済みアルファのすすめ>
https://dxlib.xsrv.jp/lecture/PremulAlpha/PremulAlpha.html

乗算済みアルファについての記事は、また後日

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

|

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。URLも記入すれば、URLのみが公開されます。メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

メールアドレスは書きたくないって人は、掲示板に書き込むって方法もあります。掲示板はメールアドレスなしでもOKです!

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。