今回からはDirectX11で色々と描画していこうと思います。
まずは、お約束のレインボー三角形を描画します。
プロジェクトの作成
前回同様にプロジェクトを新しく作成します。
プロジェクト名は、” 0004_Triangle “としておきましょう。
プロジェクトの設定
ここで忘れてはいけないのが、プロジェクトの設定です。
前回では使わなかったシェーダのコンパイラを使います。
ここでは、簡単にコンパイルしてくれる「d3dx11.h」の” D3DX11CompileFromFile “を使いたいと思います。
その前に、前々回の「2. DX11の導入」の記事にあるDirectXSDKをインストールしておきましょう。
そこへのパスをプロパティから参照して通します。
プロパティダイアログから、
「構成プロパティ」→「VC++ディレクトリ」の中にある「インクルードディレクトリ」と「ライブラリディレクトリ」の項目の中を確認します。
インクルードディレクトリ:
$(VC_IncludePath);$(WindowsSDK_IncludePath);
ライブラリディレクトリ:
$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
上記のようになっていることをまず確認してください。
その後に、右端の矢印から<編集>をクリックしてまたまたダイアログを開きます。
インクルードディレクトリでは、
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
上記のパスを通します。
「親またはプロジェクトの既定値から継承」にチェックが入っていることを確認してOKを押します。
次は、ライブラリディレクトリのパスを設定します。
ライブラリディレクトリでは、x64を使っているので
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64
上記のパスを設定します。
これも同じようにチェックを確認してOKです。
上記のようになっていてOKを押したら完了です。
準備として、これでDirectXSDKへのパスが通っていて「d3dx11.h」がインクルードできる状態になっているはずです。
当然、ライブラリを使うので「d3dx11.lib」を#pragmaでソースに記述します。
ソースコード
以下がソースです。これも前回同様、流れが分かりやすいようにmain.cppだけでまとめました。
以下のソースをコピペするか、ダウンロードしてVisual Studio の「ソースファイル」に保存してください。
コピペするなら、
「ソースファイル」で右クリックして
「追加」→「新しい項目」で、「C++ ファイル」を選び、名前を” main.cpp “にして追加ボタンを押して作成してください。
ダウンロードなら、
同じく「ソースファイル」で右クリックして
「追加」→「既存の項目」で、main.cppを選択して追加してください。
今回の作例では、マッピングの方法で描画しました。
「D3D11_MAPPED_SUBRESOURCE」を使ってやりましたが、
次回からは「D3D11_SUBRESOURCE_DATA」の方を使うと思います。
あと、パイプラインオブジェクトを前と同じComPtrにしようかと思いましたが、いちいち関数を呼び出す記述をすると初見の人には分かりにくいので生ポインタで統一しました。
しばらくはこれでいきます。
途中でメモリ解放の記述に手間が掛かるようになるとComPtrに戻します。
ComPtrはスマートポインタでメモリを適切なところで自動で解放してくれるので便利なんですよね。
次に、シェーダを読み込む必要がありますので、シェーダの本文も載せます。
このシェーダがないとターゲットの描画はできません。
これは「ソース ファイル」から「追加」→「新しい項目」で、
「Visual C++」→「HLSL」の中で.hlslなら何でもいいのですが(Visual Studio側が勝手にテンプレートを作るだけなので)、
ここでは「ジオメトリ シェーダー ファイル (.hlsl)」を選んで、
名前を” shaders.hlsl “にして追加ボタンを押してください。
すると、「ソース ファイル」中にshaders.hlslが作れますので、
中にあるコードを全て以下のコードでコピペして上書きするか、
ダウンロードして「既存の項目」で追加しましょう。
shaders.hlsl
ただ、これだけではビルドしても動きません。
このようにエントリーポイントがないと言ってエラーを吐きます。
なので、shaders.hlsl自体にもプロパティ設定をする必要があります。
カーソルを「ソリューション エクスプローラー」内にある「shaders.hlsl」にかざして右クリックし、
「プロパティ」を選んで、プロパティダイアログを開きます。
「構成プロパティ」→「全般」の中の「項目の種類」という項目で「HLSLコンパイラ」から「カスタム ビルド ツール」に変更します。
これでOKを押して、以上で作成は完了です!!
以下のようになっていればOK。
ツールバーの「デバッグ」から「デバッグの開始(F5)」で実行できます。
ビルドするときは、「0004_Triangle」を右クリックして「スタートアップ プロジェクトに設定」を押してプロジェクトターゲットを変更してからするようにしてください。
画面にレインボー三角形が表示できたら終わりです。お疲れさまでした。
最後に
学習を進めていく中でバージョンアップによる差分をすぐに確認できるように「WinMerge」というソフトを導入した方がすぐにでもプログラムを理解できるようになるかと思います。
この作例では、記事「DirectX11 | 3. ブルー画面で初期化」でのmain.cppと今回のmain.cppとで差分を確認して学習に活かしてください。
何のコードが変更されたり追加されたのかがすぐに分かります。