前回の記事(1. ウィンドウの表示)では、ウィンドウを表示させるだけでしたが、
次はDirectX11の導入をしたいと思います。
準備
最初は、VisualStudioとDirectXSDKを用意します。
実行環境は以下の通りです。
- IDE: Visual Studio 2019 Community
- OS: Windows10
- DX: DirectX11
- SDK: Windows10 SDK (Ver: 10.0.18362.0) and Microsoft DirectX SDK (June 2010)
DirectX11とWindows10 SDKは、Windows10をPCに入れていれば、誰でも入っています。
バージョン確認
DirectXを持っているかかつバージョンを確認するには、コマンドプロンプトを開いて「dxdiag」と打ち込みます。
すると、「DirectXのバージョン:」の項目で” DirectX12 “と記載されていますが、「次のページ」の「ディスプレイ」の中の「ドライバー」→「機能レベル:」の項目で” 11_0 “があったら取り敢えずDirectX12でもDX11は入っているので動きます。
私の環境ではこんな感じ。
DirectXSDKのインストール
今回から使っていくのは主に「d3d11.h」や「d3dx11.h」などです。
このd3dx11.hはテクスチャの読み込みなどですごく便利なんです。
d3d11.hは、Windows10 SDKの方に入っていますが、
d3dx11.hはDirectX SDKの方にありますので、ネットから取ってこなければなりません。
以下のURLからインストーラ(DXSDK_Jun10.exe)をダウンロードして、「Microsoft DirectX SDK (June 2010)」をインストールしてください。
DownloadボタンをクリックするときにLanguage:がEnglishになっていますが、問題はないです。
https://www.microsoft.com/en-us/download/details.aspx?id=6812
上の画面は、DirectXSDKの品質改善に協力するかを選択する画面になります。
チェックボックスは、上が「協力する」で下が「協力しない」です。
任意で選択してください。
上の画面はコンポーネントをカスタマイズできるようですが、
そのままインストールします。「次へ」を押しましょう。
すると、インストールが始まって終わったらインストール完了画面が出ますので、「完了」ボタンを押して終わりです。
「Microsoft DirectX SDK (June 2010)」フォルダが” C:\Program Files (x86) “パスにできるはずです。
プロジェクトの作成
前回のソリューション “DirectX11_Sample.sln” を立ち上げて、
右の「ソリューション エクスプローラー」から、
「ソリューション ‘DirectX11_Sample’ (1/1 プロジェクト)」を右クリックで、
「追加」→「新しいプロジェクト」を選択しプロジェクト作成していきます。
プロジェクトテンプレートは前回同様、「Windows デスクトップ ウィザード」を選んでください。
プロジェクト名は、” 0002_Introduction “としておきましょう。
あとは、前回(1. ウィンドウの表示)と全く同じです。
プロジェクトの設定
ソースを作成する前に、プロジェクト設定をします。
プロパティダイアログから、
「構成プロパティ」→「VC++ディレクトリ」の中にある「インクルードディレクトリ」と「ライブラリディレクトリ」の項目の中を確認します。
インクルードディレクトリ:
$(VC_IncludePath);$(WindowsSDK_IncludePath);
ライブラリディレクトリ:
$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
上記のようになっていたらOKです。
次に、普通ならDXライブラリを読み込むときはリンカでの設定を予めしますが、プロジェクトを作成するごとにいちいち設定するのは手間が掛かるのでソース内に記述します。
記述コードは以下です。
pragma comment(lib, “d3d12.lib”)
今回使うライブラリは上記だけになります。
ソース内に記述したくない場合は、「構成プロパティ」→「リンカー」→「入力」の中にある「追加の依存ファイル」の項目で以下のように変更してください。
d3d11.lib;%(AdditionalDependencies)
d3d11.libを準備する設定となります。
何度も言いますが、プロパティで予め設定したい場合は、
ソリューション ” DirectX11_Sample ” でこれ以降のプロジェクト作成でも、
このようにいちいち設定しなければいけません。
ソースコード
今回のDXの導入と初期化の段階では、「d3dx11.h」はまだ使いません。
「d3d11.h」の方を使うだけです。
それでは、以下がソースです。
ただ、今回はDX11を導入・初期化するだけなので黒画面だけを表示するプログラムとなっています。
以下のソースをコピペするか、ダウンロードしてVisual Studio の「ソースファイル」に保存してください。
コピペするなら、
「ソースファイル」で右クリックして
「追加」→「新しい項目」で、「C++ ファイル」を選び、名前を” main.cpp “にして追加ボタンを押して作成してください。
ダウンロードなら、
同じく「ソースファイル」で右クリックして
「追加」→「既存の項目」で、main.cppを選択して追加してください。
main.cpp
以下のようになっていればOK。
以上で作成は完了です!!
ツールバーの「デバッグ」から「デバッグの開始(F5)」で実行できます。
ビルドするときは、「0002_Introduction」を右クリックして「スタートアップ プロジェクトに設定」を押してプロジェクトターゲットを変更してからするようにしてください。
真っ黒な画面が表示できたら終わりです。お疲れさまでした。
最後に
難易度の高いプログラミングをする上では、プログラムを最初から少しずつ自分の手で作るというよりも、
ネットから拾ってきたサンプルを読み込んでビルドが通るようになれば、あとはデバッグしてステップ実行して何をしているかをイメージしながらざっと読み解いた方が効率よく学習できます。
それに、学習を進めていく中でバージョンアップによる差分をすぐに確認できるように「WinMerge」というソフトを導入した方がすぐにでもプログラムを理解できるようになるかと思います。
この作例では、前回の記事「DirectX11 | 1. ウィンドウの表示」でのmain.cppと今回のmain.cppとで差分を確認して学習に活かしてください。
何のコードが追加されたのかがすぐに分かります。
一つ一つのプログラム名の意味にフォーカスしていては日が暮れてしまいますので、プログラムの流れからコードを作成する慣れを身に付ければ、すぐに実践に移すことができるようになるはずです。
その実践を積み重ねていく中で、自然に一つ一つの意味が段々分かるようになるかと思います。
これは、インプットはアウトプットと同時に行わなければ機能しないということをも意味しています。
インプットとアウトプットのバランスと要領を良くすることに意識を傾けてみることが良いと思います。
頭よりも体(感性)で覚えるタイプの私ですからこのように言うんですが。。
プログラマーはどっちかっていうと、記憶力よりも思考力だと思います。
プログラマーの皆さんのほとんどはそうだと思いますがどうでしょうか。