テクスチャの描画でも、本来の画像サイズを描画するためには、WICが必要になります。
今回は、そのWIC[Windows Imaging Component]を用いてテクスチャを描画しましょう。
それと、プラスアルファで「シェーダのリソース化」とついでに「左上座標の2D描画」をします。
シェーダをリソース化する理由は、従来の方法ではexeを起動するのに同じディレクトリ下にあるシェーダファイルを読み込む必要があったので、これでは第三者による書き換えが可能になってしまいます。
なので、リソース化してソースを隠蔽することが必要になってきますので、
今回はそのやり方も載せておきます。
プロジェクトの作成
前回同様にプロジェクトを新しく作成します。
プロジェクト名は、” 00015_WIC_ShaderRsrc_2D “としておきましょう。
プロジェクトの設定
今回はDirectXSDKのパスを通しません。DirectXSDKの関数を使いませんのでそのままでいいですが、もしパスを通す場合は、「wincodec.h」のインクルードによる読み込みに気をつけてください。
DirectXSDKのパスを通したいときは、
記事「4. 三角形」と同じように「インクルードディレクトリパス」と「ライブラリディレクトリパス」の設定をしてください。
やり方は前と同じです。
しかし、気をつけるべきはそのプロパティの「インクルードディレクトリパス」の設定を、
C:\Program Files %28×86%29\Microsoft DirectX SDK %28June 2010%29\Include;$(IncludePath)
から、
$(IncludePath);C:\Program Files %28×86%29\Microsoft DirectX SDK %28June 2010%29\Include
に変えなければいけません。
そのままの通り、インクルードの読み込み順を変更しています。
「$(IncludePath)」を後ではなく先に読み込む必要があるということです。
そうしないと、以下のようにエラーが出てしまいます。エラー文では、多重定義されていますと出るはずです。
ソースコード
以下がソースです。これも前回同様、流れが分かりやすいようにmain.cppだけでまとめました。
以下のソースをコピペするか、ダウンロードしてVisual Studio の「ソースファイル」に保存してください。
コピペするなら、
「ソースファイル」で右クリックして
「追加」→「新しい項目」で、「C++ ファイル」を選び、名前を” main.cpp “にして追加ボタンを押して作成してください。
ダウンロードなら、
同じく「ソースファイル」で右クリックして
「追加」→「既存の項目」で、main.cppを選択して追加してください。
シェーダ本文は単なるテキストなので文字列としてD3DCompileで読み込むことができています。
そして、WICを使って画像サイズを抽出し、そのままピクセル単位で750×500のウィンドウ上に描画することができています。
画像サイズは320×240です。
このように、WICでの画像読み込みは左上座標のピクセル単位による2D描画に最適だということが分かったと思います。
次に、読み込むテクスチャを用意します。
以下のテクスチャをダウンロードしてmain.cppと同じディレクトリ下に置いてください。
red_smoke.png
以上で作成は完了です!!
以下のようになっていればOK。
ツールバーの「デバッグ」から「デバッグの開始(F5)」で実行できます。
ビルドするときは、「0015_WIC_ShaderRsrc_2D」を右クリックして「スタートアップ プロジェクトに設定」を押してプロジェクトターゲットを変更してからするようにしてください。
赤いスモークのテクスチャを右下移動しながら描画できたら終わりです。お疲れさまでした。