• Direct3D 11のアルファブレンド設定

    2011年07月15日 22時43分
    前回の続き。

    ニーソ破れる問題がどうしてもわからず悩み続けました。
    悩みすぎて夢の中でもコードを書いている状態です。

    しかし、それ程苦しんだ甲斐があり、閃きが突然訪れました。




    「ぱんつのテクスチャ透明にすれば、ぱんつ脱げるんじゃね!?」




    はやる気持ちを抑え、ボクはテクスチャを編集しました。
    幸いテクスチャは解りやすく、容易くぱんつの部分を透明にすることに成功しました。

    圧倒的な達成感に包まれながらボクはプログラムでモデルを表示しました。


    しかし、待っていたのは思わぬ結果でした。
    なんの変化もありません。


    その後、アルファ値の設定を変えたりしてみて気づいたのですが、
    アルファブレンドの処理がされていないようです。

    そこで今回はアルファブレンドの設定方法です。

    ステータス設定はいつもの手順です。
    1. D3D11_BLEND_DESCにアルファブレンドの設定を入れる
    2. D3D11_BLEND_DESCをID3D11Device.CreateBlendStateに渡してID3D11BlendStateを生成
    3. ID3D11DeviceContext.OMSetBlendStateにID3D11BlendStateをセット
    4. ID3D11BlendStateは終了時にReleaseを忘れずに


    ちょっとはまった点。

    RenderTargetのSrcBlendとDestBlendはD3D11_BLEND_SRC_COLORとかを入れたくるのですが、
    通常はD3D11_BLEND_SRC_ALPHA等を入れるのが正解です。
    これらはRGBのブレンド設定ですが、ブレンドの係数自体はアルファ値を使うためです。


    アルファ値を設定して描画です。
    アルファ値設定済み


    体と足が表示されない!

    つまり、元々このモデルデータは体と足が透明になるのが正しいわけです。
    ということはこの状態で服も描画すれば正常な表示なる!


    アルファ値設定済み全部描画


    ならなかった。

    コメントを書く

    名前
    本文
    編集用パスワード
    管理者のみ閲覧