C# で、DirectX を使いたい場合はどうすれば良いのでしょうか?
きっとこのお話に興味がある方は、C++ から DirectX SDK を触ったことがあるはず…
そんな貴方なら、すでに SharpDX が使えそうと調べが付いているはずです。
誰かが簡単に導入をまとめてくれていると思ったのですが、どうも日本語のドキュメントが皆無に等しい状況…
そんなわけで、後続の方が無駄足を踏まないよう、ひとまず自分が使えるようになるまでの
道のりを簡単に示してみたいと思います。
まずはドキュメントをチェック…
Documentation TBD....
...
え?英語すら無いのですか!?(2012年5月現在)
ということで、早速フルパッケージをダウンロードしてみます。
トップページの次に示す場所からダウンロードを行ないました。
適当な場所に解凍して、Samples フォルダの SharpDXSamples.sln を開いてみます。
自分は Visual Studio 2010 で開きました。
一応すべてのプロジェクトのビルドと実行を行なってみました。
一つの漏れもなく、すべてのプロジェクトのビルド、実行を確認しました。
そのうちの一つ DirectX 11 でテクスチャ付きのキューブを表示するというものを実行してみましょう。
次に示すように、MiniCubeTexture プロジェクトをスタートアップに設定してください。
(選択してコンテキストメニューから、A キーで設定できます。)
ビルド、実行した結果を次に示します。
実行コードを確認してみましょう。
DirectX 11 に詳しくない方は読んでいる途中で挫折するんじゃないかと…
DirectX 10 以降のパイプラインについて、簡単に解説を行ったページを
過去に作っているので良かったら参考にしてみてください。
(何も知らない時の自分が書き留めたくだらないメモです)
31話の中段の7つのステージについて、「なるほどね」と言える方なら
今回のコードを見て、「まんま C++ の時と同じじゃないか」と口にできるはず…
新しいことなんて C++ のコードと比べて何も無いんです。
どうやって情報を渡すか書式を確認する程度で読み進められるはずです。
難しいと思う方はちょっと厳しいかも…そもそも DirectX 10 から覚えること多いよね…これは同感です。
コードのハイライトした部分に注目、ゲームループがここから記述されています。
前回調べたように StopWatch を利用して 1000000 回インクリメントさせるのに
何秒かかるのか調べてみました。
結果 9.5秒
おお!自分が知っている中で最速の値が出ました。
95 μsec 間隔ならまったく問題無いですね。以降これをゲームループに利用しましょう。
ひと通り SharpDX の機能も見ましたし、次は Blender で出力したモデルでも表示させてみましょう。
とりあえず、SharpDX の入門講座はここまでです。
結局 C++ で DirectX の使い方を知っている人じゃないと話にならないということでした。
逆に C++ で DirectX が使えるのならば、そのまま SharpDX も使えます。
以上で入門講座を締めくくります。
2012/05/20 初記。