4.ソリューションの作成

さて、これから実際にコーディングを行っていくわけです。
DirectXを使ったプログラムは、そのままWindowsプログラムです。DirectXを実装できる環境は、C#やC++/CLIなどもありますが、ここではネイティブなC++(VC++)で作成します。
そしてコンパイラは「Visual Studio Community 2015」ということになります。もしまだコンパイラのセットアップが終わってない方はセットアップを行いましょう。その際、VisualC++のセットアップを忘れないようにしてください。「Visual Studio Community 2015」はデフォルトでは「VisualC++」はセットアップされません。
また、Dx12版を動作させるには、Windows10が必要です。その際、「Visual Studio Community 2015」のセットアップで「Windows10SDK」もセットアップしてください。Dx12は「Windows10プラスWindows10SDK」で動作します!
また「日本語化」もしておいたほうがいいでしょう。英語版のままでも問題はありませんが、メニューとか日本語のほうが読みやすいと思います(気にならないならいいですが・・・)。あと、VisualStudioは、最新の状態にしておきましょう。「ツール」「拡張機能と更新プログラム」で「更新プログラム」「製品の更新プログラム」でVisualStdioの項目はアップデートしておきます。2016年7月時点で「Update3」になっていると思います。
準備が整いましたら、「ソリューションの作成」から行っていきます。「VisualStudio」にはさまざまなプログラムを作成できるよう、あらかじめプログラムの「型」を選択してひな形を作成する「ウィザード」という機能があります。
しかし、ここでは、最小限の設定(コンパイラやリンカの設定のみウィザードで行う)で制作を始めます。
新規で作成する前に、DX11用のソリューション名「BaseCrossDx11」とDX12用のソリューション名「BaseCrossDx12」を決めておきます。別々に作成して、あとでサンプルごとにディレクトリを合わせていきます。また、作業用のルートとなるディレクトリを決め、それを先に作成しておくと便利です。
まずはDx11版です。「Visual Studio Community 2015」を起動し、「ファイル」「新規作成」「プロジェクト」で新しいソリューションとプロジェクトを作成します。以下は、ウィザードの画面です。

201607310304

図のように「Win32」「Win32プロジェクト」を選び「ソリューションディレクトリを作成」にチェックを付けて、「BaseCrossDx11」という名前のソリューション/プロジェクトを作成します。設定したら「OK」ボタンをクリックします。

201607310305

次の画面では「次へ」をクリックします。

201607310306

次の画面では「空のプロジェクト」のチェックを入れて、「完了」をクリックします。
すると、ファイルを一切含まない「空のプロジェクト」ができます。以下がその画面です。

201607310307

リソースファイルの追加
さて、ここから、まずWindowsアプリケーションを作成して、そこからDirectXアプリケーションに徐々にしていくわけですが、「空のプロジェクト」として作成したために、本来ならある程度ウィザードがやってくれる設定を手動で行う必要があります。
変な順番かとは思うかもしれませんが、まず「リソース」を追加します。
「ソリューションエクスプローラ」の「リソースファイル」を右ボタンでクリックし「追加」「リソース」を選択します。

201607310308

すると以下の画面が出ますので、「Icon」を選択してアイコンを「新規作成」します。

201607310309

すると以下の画面がでまので、「ファイル」「すべて保存」します。

201607310310

この一連の処理で「resource.h」「BaseCrossDx11.rc」「icon1.ico」の3つのファイルがプロジェクトに追加されます。この3つのファイルは他の環境から持ってくるのがちょっと大変なので、先に作っておくのです。
アイコンを変更したければこの「icon1.ico」を修正すればよいので参考にしてください。

プリコンパイル済みヘッダの追加
次に、「プリコンパイル済みヘッダ」の設定を行います。ソリューションエクスプローラの「ヘッダーファイル」に「stdafx.h」というファイルを追加します。場所はプロジェクト「BaseCrossDx11.vcxproj」があるディレクトリに追加します。
以下のように「ヘッダーファイル」を右ボタンクリックし「追加」「新しい項目」を選びます。

201607310311

以下のような画面が出るので、ヘッダーファイルを選び、「stdafx.h」と記述し「追加ボタン」をクリックします。これで「stdafx.h」を編集できるようになります。

201607310312

 以降、ヘッダファイルの作成は上の手順を踏みます。これからたくさんヘッダファイルを作成しますので手順を覚えておきましょう。

プリコンパイル済みヘッダのビルドの設定
続いてソリューションエクスプローラの「ソースファイル」に「stdafx.cpp」の作成を行います。場所はプロジェクト「BaseCrossDx11.vcxproj」があるディレクトリに追加します。
以下のように「ソースファイル」を右ボタンクリックし「追加」「新しい項目」を選びます。

201607310313

以下のような画面が出るので、C++ファイルを選び、「stdafx.cpp」と記述し「追加ボタン」をクリックします。これで「stdafx.cpp」を編集できるようになります。

201607310314

以降、ソースファイルの作成は上の手順を踏みます。これからたくさんソースファイルを作成しますので手順を覚えておきましょう。
「stdafx.cpp」を作成したら、


#include "stdafx.h"

と1行追加し、保存しておきます。
続いて、上記の「ヘッダファイルの追加」の要領で、ソリューションエクスプローラの「ヘッダーファイル」に「targetver.h」を追加します。
そしてその中に以下のような記述をします。


#pragma once
#include <SDKDDKVer.h>

これは、最新のSDKを使用できるようにするヘッダの設定です。

そこまでできましたら、「stdafx.h」に以下のような記述をします。


#pragma once
#include "targetver.h"

#define WIN32_LEAN_AND_MEAN
// Windows ヘッダー ファイル:
#include <windows.h>
// UNICODE環境で必要なヘッダ
#include <tchar.h>

ここまで記述したところで、「プロジェクトの設定」を行います。
ソリューションエクスプローラの「BaseCrossDx11」を右ボタンクリックし、「プロパティ」を選択します。

201607310315

以下がそこで出てくる「プロパティシート」です。今後、いろいろな局面で「プロパティシート」で設定することが多くなるので覚えておきましょう。
この例は「BaseCrossDx11プロジェクトのプロパティシート」での設定です。
ここではまず「すべての構成」「すべてのプラットフォーム」にして(なってなければそのようにして)「構成プロパティ」「C/C++」「プリコンパイル済みヘッダー」を開きます。
以下がその画面です。

201607310316

ここで、「プリコンパイル済みヘッダー」を「使用(/Yu)」に設定し「適用」し「OK」をクリックします。

201607310317

そののち、ソリューションエクスプローラから「ソースファイル」「stdafx.cpp」を右ボタンでクリックし、「プロパティ」でプロパティシートを開きます。

201607310318

「プロパティ」は「プロジェクト単位」でも設定できますが「ファイル単位」でも設定できます。
ここで「プリコンパイル済みヘッダー」を「作成(/Yc)」に設定し「適用」し「OK」をクリックします。つまり、全体的には「使用(/Yu)」に設定し「stdafx.cpp」のみ「作成(/Yc)」に設定するわけです。

201607310319

このように設定すると「stdafx.cpp」をコンパイルするときのみ「プリコンパイル済みヘッダー」がコンパイルされ、それ以外はコンパイル済みヘッダを使用する形になります。
日常的には「リビルド」すると「stdafx.cpp」をコンパイルすることになりますので「プリコンパイル済みヘッダー」がコンパイルされ、「ビルド」の場合はされない、といった流れになるのが一般的です。
ただ、「プリコンパイル済みヘッダー」の作成は「ほとんど修正されることがない」ファイルを含めるべきですが、フレームワーク作成のような場合は、ライブラリ内のソースが「ほとんど修正されることがない」ソースに含まれることが多いので、しばらく「リビルド」は必要です。

WinMainの作成
ここまでの作業で、Windowsアプリケーションを作成する最低限の周辺の設定は整いました。最後にWindowsアプリケーションのエントリポイントである「WinMain」の作成にかかります。
ソリューションエクスプローラで「ソースファイル」のところに「追加」「新しい項目」で「WinMain.cpp」を作成します。

2016080200naosi

 

作成したら、そこに以下のように記述します。

#include "stdafx.h"

//------------------------------------------------
//	int APIENTRY _tWinMain();
//	用途: エントリポイント
//------------------------------------------------
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPTSTR    lpCmdLine,
	_In_ int       nCmdShow)
{

	MessageBox(nullptr, L"テスト", L"テスト", MB_OK);

	return 0;
}

それでは「ファイル」「すべて保存」したあと、「ビルド」「ソリューションのリビルド」を実行してみましょう。
以下のようなメッセージボックスが出ればここまでは成功です。

201607310321

大変お疲れ様でした。

BaseCrossDx12の設定

続いて、「BaseCrossDx12」のソリューションも、同様に作成します。「BaseCrossDx11」とソリューション名やディレクトリ名が違うだけで、設定などは同じで結構です。

次回からは、それぞれの環境の、共有やビルド環境の設定などを行います。

 

 

カテゴリー

ピックアップ記事

  1. 2016092201
    今回は前回のサンプルを少し機能を追加しまして、いろんなオブジェクトを追加しています。FullTuto…
  2. 2016092001
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル003をアップしました。内…
  3. eyecatch
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル002で懸案となっていまし…
PAGE TOP