グラフィックス イベント一覧
Visual Studio のグラフィックス診断ツールの 1 つである [グラフィックス イベント一覧] は、ゲームまたはアプリケーションの特定のフレームの間に発生した Direct3D のイベントを調べ、それらの影響を分析できます。これには、デバイスまたはオブジェクトの作成などの関連イベントが含まれます。
[グラフィックス イベント一覧] を次に示します。
[グラフィックス イベント一覧] のナビゲーション
一般的なゲームやアプリケーションの 1 フレームに多数の Direct3D のイベントが生成されることがあるため、[グラフィックス イベント一覧] には重要なイベントや関連情報をすばやく検索できる機能が用意されています。
[グラフィックス イベント一覧] の不要なイベントの数を減らすために、AddRef と Release のイベントは省略されます。イベントを名前でフィルター処理することもできます。一度に 1 つの名前でフィルター処理する (前に示されている図では、名前に Vertex が入っているイベントを表示するようフィルター処理されています) ほか、キーワードのセミコロン区切りのリストを使用してフィルター処理することもできます。たとえば、"Draw;Primitive" とすると、名前に Draw または Primitive のいずれかが入っているイベントが表示されます。
[!メモ]
フィルターの例の一覧を、空白の場合に依存、「;描画します。プリミティブ」と「描画; プリミティブは」異なります。
Draw の呼び出しは特に重要なイベントであるため、[グラフィックス イベント一覧] には [次の描画呼び出しに移動します] と [前の描画呼び出しに移動します] の 2 つのボタンがウィンドウの左上隅のわかりやすい場所に用意されていて、その間をすばやく移動することができます。
イベントのカテゴリ
[グラフィックス イベント一覧] に表示されるイベントは 4 つのカテゴリに分類されます。3 つのカテゴリは個々のイベントを表し、4 つ目のカテゴリは関連するイベントをグループ化するために使用されます。各イベントは、それが属するカテゴリを示すアイコンと共に表示されます。
カテゴリ |
説明 |
---|---|
描画のイベント |
キャプチャ フレームの実行中に発生した描画するイベントをマークします。 |
フレーム前イベント |
キャプチャされたフレームの実行前に発生したイベント (例: デバイスやオブジェクトの作成) を示します。 |
ユーザー定義のイベントのマーカーまたはグループ |
アプリケーションで定義されている関連するイベントのイベント、または一つのグループに、マークを付けます。グループが含まれていることを示すために配置できます。 |
フレーム内イベントとフレーム前イベントは、Direct3D 実行時に組み込まれ、Direct3D の API 呼び出しに対応します。これらのイベントを有効にするために特定の操作を行う必要はありません。
ユーザー定義のイベントとユーザー定義のグループは、特定のアプリケーションに固有のマーカーです。ユーザー定義のイベントを使用すると、ご使用のアプリケーションで発生する重要なイベントを、[グラフィックス イベント一覧] のグラフィックスのイベントに関連付けることができます。たとえば、特定の種類のオブジェクトが描画された場合のマーカーを使用すれば、その描画の呼び出しを [グラフィックス イベント一覧] で簡単に検索できます。ユーザー定義のイベント グループを使用すると、関連するイベントをグループまたは階層構造に整理して、[グラフィックス イベント一覧] をより簡単に参照できます。たとえば、インターフェイスのレンダリングに関連するイベントをグループ化できます。
ご使用のアプリケーションでユーザー定義のイベント マーカーとユーザー定義のイベント グループを作成するには、イベントおよびグループをマークするために Direct3D で使用される API を他の Direct3D のツールで使用します。Direct3D 11.1 では、API は ID3DUserDefinedAnnotation インターフェイスに属します。旧バージョンの Direct3D では、D3DPERF_ ファミリの API を使用してください。
API の説明 |
API (Direct3D 11.1) |
API (Direct3D 11.0 以前) |
---|---|---|
ユーザー定義のイベント グループを開始 |
ID3DUserDefinedAnnotation::BeginEvent |
D3DPerf_BeginEvent |
ユーザー定義のイベント グループを終了 |
ID3DUserDefinedAnnotation::EndEvent |
D3DPerf_EndEvent |
ユーザー定義のイベント マーカーを作成 |
ID3DUserDefinedAnnotation::SetMarker |
D3DPerf_SetMarker |
グラフィックス オブジェクトへのリンク
グラフィックスのイベントを理解するには、イベントによって参照される、現在のデバイスの状態や Direct3D オブジェクトに関する追加情報を必要とする場合があります。[グラフィックス イベント一覧] には、各イベントにこの情報へのリンクが用意されています。
[グラフィックス イベント一覧] を使用してレンダリングの問題を検出する
他のグラフィックス診断ツールと共に [グラフィックス イベント一覧] を使用して、特定の Direct3D イベントについてレンダリングの問題を特定できます。問題が最初に表示されたイベントを特定したら、他のグラフィックス診断ツールを使用してその問題の原因を特定できます。
オブジェクトが見つからない (オブジェクトが予測される場所に表示されない) レンダリングの問題であれば、[グラフィックス イベント一覧] と [グラフィックス パイプライン ステージ] ウィンドウを使用できます。イベントの一覧で Draw または Dispatch のイベントを選択すると、[グラフィックス パイプライン ステージ] ウィンドウにパイプラインの各ステージにおけるイベントの効果が表示されます。これらのイベントを順を追ってパイプライン ステージを調べると、レンダー ターゲットに表示されていなくても、いつオブジェクトが表示されたかを検出できます。
よりよくある間違いするオブジェクトが表示されるレンダリングの問題を把握するために、オブジェクトは現在では、やの外観がグラフィックのログのドキュメントでキャプチャ イベントを調べるために [グラフィックス イベント一覧] を使用してもかまいません。イベントの一覧の Draw または Dispatch のイベントを選択すると、Visual Studio は、イベントが発生した時点で存在していたレンダー ターゲットを表示します。これらのイベントのステップ実行、レンダー ターゲットがグラフィックのログのドキュメント ウィンドウでどのように変化するかを確認することによって、特定のイベントの影響が、これにより、最終的なレンダー ターゲットで多数のイベントがどのようにして構築発生したかレンダリングのエラーを理解するために複数のイベントがレンダー ターゲットでどのように対話する発生したか確認できます。