まずはDirectXSDKの入手ですが、調べてみるとWindowsSDKというものにDirectXのSDKが含まれているようなので
http://msdn.microsoft.com/ja-jp/windows/hardware/hh852363.aspx
からダウンロードしてインストール。(Windows SDK for Windows 8)
Windows8用と書いてありますがWindows7でも動作して7用のプログラムもできるようです。
VS2012でWin32プロジェクトを新規作成
まずはヘッダファイルのincludeを試してみる。
#include “d3dx11.h” //以前作成したDX11のソースコードから
コンパイルすると「そんなファイルはない」とエラー発生。
インクルードパスの設定が必要なのか、それともSDKのインストールがおかしい?
こんなときはサンプルプログラムを、ということで
http://code.msdn.microsoft.com/windowsdesktop/Direct3D-Tutorial-Win32-829979ef
からダウンロードしてソースコードを見てみる。
#include “d3d11.h”
でした。どうやらDXSDK2010とはファイル名が変わっているみたい。
インクルードパスは、SDKインストール時点で設定されるらしい。とくに必要なし。
次に簡単なプログラム、DirectX11のデバイスを作成して削除するだけ
_tWinMainのメイン メッセージ ループの直前に挿入
UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
D3D_FEATURE_LEVEL featureLevels[] =
{
D3D_FEATURE_LEVEL_11_0,//DirectX11のみ 10以降は無視
};
ID3D11Device* device;
ID3D11DeviceContext* dv_ctx;
D3D_FEATURE_LEVEL feature_level;
HRESULT hr
= D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL,
createDeviceFlags,featureLevels, 1 ,D3D11_SDK_VERSION,
&device, &feature_level, &dv_ctx);
//デバイス作成に成功したらメッセージボックス表示
if(SUCCEEDED(hr)){
MessageBox(NULL, L"成功", L"DirectX11", MB_OK);
dv_ctx->Release();
device->Release();
}
当然のようにリンクエラーがでるので
#pragma comment( lib, “d3d11.lib” )
を追加。コンパイル、リンク成功。
リンクのパス設定も不要でした。
できたプログラムを実行、デバイス作成成功のメッセージボックスが表示される。
準備完了。
簡単にVS2012でのDirectX11プログラミングの準備が終了しました。
・WindowsSDKをインストール
・DXSDK2010とはインクルードファイルが少し違う