006.テクスチャ付き四角形のフェード処理(Dx11版)

 このサンプルはSimplSample006というディレクトリに含まれます。
 BaseCrossDx11.slnというソリューションを開くとDx11版が起動します。

 実行結果は以下のような画面が出ます。

 

図0006a

 


 動画は以下になります。

 

 

【共通解説】

 Dx12、Dx11両方に共通なのはシェーダーです。DxSharedプロジェクト内にシェーダファイルというフィルタがあり、そこに記述されてます。
 今回使用するシェーダは頂点シェーダとピクセルシェーダです。VertexPositionTexture型の頂点を持ち、コンスタントバッファからの入力で、位置を変更させています。
 またテクスチャも描画します。

 今項のサンプルは前項のサンプルと大きく変わったところはありません。今項は、ディフューズ色を変更することによって、オブジェクト全体を半透明にする処理をしています。

【Dx11版解説】

 BaseCrossDx11.slnを開くと、BaseCrossDx11というメインプロジェクトがあります。この中のCharacter.h/cppが主な記述個所になります。

■初期化■

 初期化はSquareSprite::OnCreate()関数に記述があります。ここではメッシュリソースとテクスチャリソースを作成し、スケーリングなど各パラメータを初期化して終了です。
 変更するディフューズ色のための変数m_Diffuseと経過時間にm_TotalTimeに持ちます。

■更新処理■

 更新処理は、SquareSprite::OnUpdate()関数で実装されます。左右に移動しながら、中心からの距離が一定以上になれば逆向きに移動する形です。回転も移動方向に応じて別の回転をかけています。
 その際、m_Diffuseを動的に変更します。m_Diffuseはシェーダに渡されます。

■描画処理■

 前項のサンプルと変わりません。

 以上でDx11版の実装は終わりです。

【まとめ】

 今項のサンプルはサンプルとして独立させるには、前項の内容と被るところが多く、ちょっともったいないかとは思います。
 ポイントはディフューズ色を使った半透明化アニメーションというわけですが、もう少しエフェクトなどで使えるサンプルを用意すればよかったかなと思います。ざっと実行だけ確認していただければいいかと思います。