忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

DirectX10 + C++/CLI ウィンドウの表示

最近忙しかったので久々の投稿です。
こう時間が空くとどうも精神的にやりにくくなりますね・・・。

さて、前々から思っていたのですが、そろそろDirectX10をやってみたいと思います。
言語はC#・・・を使いたいところですが、ManagedDirectXは消滅してしまったので、泣く泣くC++/CLIを使います。
OSはVistaオンリーです。DirectX10はXPでは使えません。

まずはSDKのダウンロードです。
現在最新のDirectX のSDKは(November 2007)です。
Novemberって何月だっけ・・・と思って辞書で引くとなんと11月、つまり今月です!
良いタイミングでDirectX10をはじめたことになります。
幸先良いスタートです。

また、Windows Platform SDKをインストールする必要もあるようです。(もちろんWindows Vista用のです)
なんせVisual C++ ExpressにはWindows.hが付いてきません
DirectX10のサンプルを動かすにはWindows SDKのIncludeファイルとLibファイルが必要です。

で、Windows SDKのIncludeファイルととLibファイルをC++/CLIのコンパイラから使えるようにします。(単にコピー&ペーストでいいでしょう。(いいわけない。環境変数LIBとINCLUDEでそれぞれのディレクトリのパスをセットしてやりましょう。)いちおうWindows SDKには"Integrate Windows SDK with Visual Studio 2005"というのが付いていますが、cl.exeには効果が無いように見えます。)

これで準備は整いました(たぶん)。
さっそくやってみましょう!



C++はほんと久しぶりですし、C++/CLIにいたっては初めてなので、少しずつ進んでいくことにします。

まずはウィンドウを作ってみます。


Dx10Test.cpp
#using<System.Windows.Forms.dll>
#using<System.dll>

using namespace System::Windows::Forms;

int main()
{
	Form ^form = gcnew Form();
	form->Show();
	
	while(form->Created)
	{
		Application::DoEvents();
	}
}

で、Visual Studio 2005 Command Promptからコンパイルです。

cl /clr dx10Test.cpp

CreatedWindow.jpg
よし!
上手くいきました。
DirectXを使う場合はApplication::Run()を使えないのがちょっと残念ですが、まあいいでしょう。
Win32APIを使うよりははるかにましというものです。


さて、うまくウィンドウを表示できたので、こんどはちょっと遊び心を加えて見ましょう。
実行結果はそのままに、XNAっぽくリファクタリング?です。
#using<System.Windows.Forms.dll>
#using<System.dll>

using namespace System::Windows::Forms;

ref class Game : Form
{
	public:
	void Run()
	{
		Show();

		while(Created)
		{
			Application::DoEvents();
		}
	}
};

int main()
{
	Game ^game = gcnew Game();
	game->Run();
}




 

拍手[0回]

PR