Visual Studio 11のDirect3Dのデバッグ機能を試す

Visual Studio 11の新機能のデバッグ機能を試してみました(画像はすべてクリックすると大きなサイズになります).
なお色々と試してみたのですが,自分の環境ではDirect3D11では使えませんでした.Direct3D11のプログラムを実行した場合には後述の”Capture the next rendered frame”が有効になりませんでした.MSDNのこの機能を解説したページを見てもスクリーンショットがDirect3D10のプログラムのものなので,このプレビューの段階では11には対応してないのかもしれません.

MSDNでは下記の2つのドキュメントがありました.”Debugging DirectX Graphics”が機能の使用方法や概要で”Walkthrough: Depth Test Debugging”が実際に使用した例です.
Debugging DirectX Graphics
http://msdn.microsoft.com/en-us/library/hh315751(v=vs.110).aspx
Walkthrough: Depth Test Debugging
http://msdn.microsoft.com/en-us/library/hh361239(v=VS.110).aspx
まずは,Visual Studio 11上でこの機能を有効化させるためにプロジェクトのプロパティを開きます.プロジェクトのプロパティの構成プロパティ→Debugging→Enable Graphics CaptureをYesにします.これを有効化しないとこの機能は使えません.

有効化したら次にVisual Studio 11のツールバーにGraphicsを表示させます.ツールバーには下記のように6つのアイコンがあります.これは左から,Event List, Pixel History, Event Call Stack, Object Table, Pipeline Viewer, Capture the next rendered frameになります.

デバッグを行うにはDirect3Dのプログラムをデバッグ開始します.開始したらGraphicsツールバーの”Capture the next rendered frame”アイコンをクリックします.これで1フレームがキャプチャされてキャプチャした画面がVisual Studio上に表示されます.キャプチャされた画面に対して右クリックコンテキストメニューを呼び出すと各種デバッグ機能が使えます.
Event List
これはDirect3DのAPIの呼び出しリストみたいな感じですね.

Pixel History
これは選択したピクセルの履歴です.描画やクリア時の色の変化の履歴が見れます.

Object Table
これは頂点バッファやテクスチャ,シェーダといったものの変化の履歴のようですね.

項目をダブルクリックするとObject Stateというより詳細な情報を出すビューが表示されます.

Pipeline Viewer
これはDrawコールが走った後に,頂点シェーダ,ジオメトリシェーダ,ビューポート変換などでどのように頂点が変わるかというのを見ることができるみたいです.たとえば,頂点シェーダだけの描画なら下記のような感じで,

ジオメトリシェーダが加わると下記のような感じですね.ジオメトリシェーダは入力された頂点に対して出力結果で頂点が増えたり減ったりするのでこうやって可視化されるのはいいかもしれませんね.

まとめ
とりあえず軽く一通りの機能を試してみました.どう活用していくかはちょっと考えないといけませんねぇ.
デバッグ機能ではありますが,シェーダコードのデバッガなんかがついてるわけじゃないんですねぇ.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です