ニーソ破れる問題がどうしてもわからず悩み続けました。
悩みすぎて夢の中でもコードを書いている状態です。
しかし、それ程苦しんだ甲斐があり、閃きが突然訪れました。
「ぱんつのテクスチャ透明にすれば、ぱんつ脱げるんじゃね!?」
はやる気持ちを抑え、ボクはテクスチャを編集しました。
幸いテクスチャは解りやすく、容易くぱんつの部分を透明にすることに成功しました。
圧倒的な達成感に包まれながらボクはプログラムでモデルを表示しました。
しかし、待っていたのは思わぬ結果でした。
なんの変化もありません。
その後、アルファ値の設定を変えたりしてみて気づいたのですが、
アルファブレンドの処理がされていないようです。
そこで今回はアルファブレンドの設定方法です。
ステータス設定はいつもの手順です。
- D3D11_BLEND_DESCにアルファブレンドの設定を入れる
- D3D11_BLEND_DESCをID3D11Device.CreateBlendStateに渡してID3D11BlendStateを生成
- ID3D11DeviceContext.OMSetBlendStateにID3D11BlendStateをセット
- ID3D11BlendStateは終了時にReleaseを忘れずに
ちょっとはまった点。
RenderTargetのSrcBlendとDestBlendはD3D11_BLEND_SRC_COLORとかを入れたくるのですが、
通常はD3D11_BLEND_SRC_ALPHA等を入れるのが正解です。
これらはRGBのブレンド設定ですが、ブレンドの係数自体はアルファ値を使うためです。
アルファ値を設定して描画です。
体と足が表示されない!
つまり、元々このモデルデータは体と足が透明になるのが正しいわけです。
ということはこの状態で服も描画すれば正常な表示なる!
ならなかった。