006.テクスチャ付き四角形のフェード処理(Dx12版)
このサンプルは
SimplSample006というディレクトリに含まれます。
BaseCrossDx12.slnというソリューションを開くと
Dx12版が起動します。
実行結果は以下のような画面が出ます。
図0006a
動画は以下になります。
【共通解説】
Dx12、Dx11両方に共通なのは
シェーダーです。
DxSharedプロジェクト内に
シェーダファイルというフィルタがあり、そこに記述されてます。
今回使用するシェーダは
頂点シェーダとピクセルシェーダです。
VertexPositionTexture型の頂点を持ち、
コンスタントバッファからの入力で、位置を変更させています。
またテクスチャも描画します。
今項のサンプルは前項のサンプルと大きく変わったところはありません。今項は、
ディフューズ色を変更することによって、オブジェクト全体を半透明にする処理をしています。
【Dx12版解説】
BaseCrossDx12.slnを開くと、
BaseCrossDx12というメインプロジェクトがあります。この中の
Character.h/cppが主な記述個所になります。
■初期化■
初期化処理は前項と変わりありません。変更する
ディフューズ色のための変数
m_Diffuseを持ち、経過時間を
m_TotalTimeに持ちます。そして更新時に
m_Diffuseに
m_TotalTimeをサイン計算することで、透明になったり、ならなかったりを繰り返す処理をしています。
■更新処理■
更新処理は、
SquareSprite::OnUpdate()関数で実装されます。左右に移動しながら、中心からの距離が一定以上になれば逆向きに移動する形です。回転も移動方向に応じて別の回転をかけています。
その際、
m_Diffuseを動的に変更します。
m_Diffuseはシェーダに渡されます。
この処理は
Dx11版も変わりません。
■描画処理■
前項のサンプルと変わりません。
以上、Dx12側の説明は終わりです。
【まとめ】
今項のサンプルは
サンプルとして独立させるには、前項の内容と被るところが多く、ちょっともったいないかとは思います。
ポイントは
ディフューズ色を使った半透明化アニメーションというわけですが、もう少しエフェクトなどで使えるサンプルを用意すればよかったかなと思います。ざっと実行だけ確認していただければいいかと思います。