注目キーワード
  1. Web
  2. GUI
  3. DirectX

DirectX11 | 15. WICテクスチャとシェーダリソース化による左上座標2D描画

テクスチャの描画でも、本来の画像サイズを描画するためには、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と同じディレクトリ下に置いてください。

以上で作成は完了です!!

以下のようになっていればOK。

ツールバーの「デバッグ」から「デバッグの開始(F5)」で実行できます。

ビルドするときは、「0015_WIC_ShaderRsrc_2D」を右クリックして「スタートアップ プロジェクトに設定」を押してプロジェクトターゲットを変更してからするようにしてください。

赤いスモークのテクスチャを右下移動しながら描画できたら終わりです。お疲れさまでした。

最新情報をチェックしよう!