Visual Studio グラフィックス診断

注意

Visual Studio は、DirectX 12 ゲーム用に Windows の PIX を推奨しています。 Windows の PIX は、DirectX 12 を完全にサポートするパフォーマンス チューニングおよびデバッグ ツールです。 詳細を参照するか、こちらでダウンロードしてください。

Visual Studio の "グラフィックス診断" は、Direct3D アプリのレンダリングとパフォーマンスを記録し、問題を分析するためのツール セットです。 グラフィックス診断は、Windows PC でローカルに実行されているアプリ、Windows デバイス エミュレーターで実行されているアプリ、あるいはリモート PC またはデバイスで実行されているアプリに対して使用できます。

グラフィックス診断のワークフローは、アプリが Direct3D を使用する方法の記録を、アプリの実行中にライブでキャプチャすることから始まります。記録したアプリの動作は、直ちに分析し、共有し、後で使用するために保存できます。 キャプチャ セッションは、Visual Studio から手動で開始して制御するか、コマンド ラインのキャプチャ ツール dxcap.exe を使用して開始できます。 また、グラフィックス診断キャプチャ API を使用してプログラムからキャプチャ セッションを開始し、制御することもできます。

キャプチャ セッションによる記録が終わったら、Visual Studio の Graphics Analyzer を使用して、いつでもその内容を再生できます。その際、アプリが使用したのと正確に同じリソースとレンダリング コマンドを使用して、キャプチャされたフレームが再作成されます。 その後、Graphics Analyzer ウィンドウに用意されているツールを使用して、キャプチャされた任意のフレームを詳細に分析できます。 これらのツールを使用して、任意の Direct3D API 呼び出し、リソース、パイプライン状態オブジェクト、パイプライン ステージ、またはキャプチャしたフレーム内の任意のピクセルの完全な履歴さえも、調べることができます。 これらのツールを連携して使用すれば、レンダリングの問題を直感的に調査できます。キャプチャされたフレームにその問題が現れた地点から始めて、アプリのソース コード、シェーダー、またはグラフィックス アセットにある根本原因にまで掘り下げていきます。

パフォーマンスの問題を診断するには、キャプチャしたフレームを フレーム分析 ツールを使用して分析できます。 このツールは、アプリが Direct3D を使用する方法を自動的に変更して、さらに最適なパフォーマンスを実現できないかどうか探索し、すべてのバリエーションのベンチマークを提供します。 以前は、このような変更を手動で設定してベンチマークを取り、いちばん違いの大きいものを見つけるだけでした。 フレーム分析を利用する場合は、有効であることが既に分かっている変更を加える必要があるだけです。

グラフィックス診断は、Direct3D アプリの外観を視覚的に優れたものにし、パフォーマンスを最大にするために役立ちます。

Visual Studio グラフィックス診断で提供される機能の詳細については、概要に関するページを参照してください。

このセクションの内容

概要: グラフィックス診断のワークフローおよびツールについて説明します。

はじめに: Visual Studio のグラフィックス診断をインストールする方法と、Direct3D アプリに対してグラフィックス診断の使用を開始する方法を説明します。

グラフィックス情報をキャプチャする: グラフィックス診断を使用してアプリのレンダリングの問題を調べるには、まず、アプリが DirectX を使用する方法に関する情報を記録する必要があります。 アプリが通常どおりに実行されているときの記録セッション中に関心があるフレームを "キャプチャ" (つまり、選択) します。 キャプチャには、フレームがレンダリングされる方法に関する詳細情報が含まれています。 キャプチャした情報をグラフィックス ログのドキュメントとして保存し、後で調べたり、チームの他のメンバーと共有したりできます。

GPU 使用率: グラフィックス診断を使用してアプリのプロファイリングを行うには、GPU 使用率ツールを使用します。 GPU 使用率ツールを、CPU 使用率など、他のプロファイリング ツールと連携して使用すると、アプリのパフォーマンスの問題を引き起こしている可能性のある CPU および GPU のアクティビティを、問題と関連付けることができます。

グラフィックス ログ ドキュメント: 記録したグラフィックス ログの調査を開始するには、グラフィックス ログのドキュメント ウィンドウを使用して、キャプチャしたフレームまたは特定のピクセルを選択し、影響を及ぼす "イベント" (つまり、DirectX API 呼び出し) を詳細に調べることができるようにします。

フレーム分析: フレームを選択したら、グラフィックス フレーム分析を使用してレンダリング パフォーマンスを調べて調整することができます。

イベント一覧: フレームを選択した後、 [グラフィックス イベント一覧] を使用して、そのイベントを調べ、レンダリングの問題に関連しているかどうかを判別します。

状態: [状態] ウィンドウは、現在のイベントの時点でアクティブになっているグラフィックスの状態を理解するために役立ちます。

パイプライン ステージ: [グラフィックス パイプライン ステージ] ウィンドウで、現在選択しているイベントがグラフィックス パイプラインの各ステージで処理される方法を調査することにより、レンダリングの問題が最初に表示される場所を特定します。 パイプライン ステージの調査は、正しくない変換のためにオブジェクトが表示されない場合、または次のステージで期待される出力と一致しない出力が 1 つのステージで生成された場合に特に便利です。

イベント呼び出し履歴: [グラフィックス イベント呼び出し履歴] を使用して、現在選択しているイベントの呼び出し履歴を調べ、レンダリングの問題に関連するアプリ コードに移動します。

ピクセル履歴: [グラフィックス ピクセル履歴] ウィンドウを使用して、現在選択しているピクセルがどのようにイベントに影響されるかを分析することにより、特定の種類のレンダリングの問題を発生させるイベントまたはイベントの組み合わせを特定できます。 ピクセル履歴は、ピクセル シェーダー出力が正しくないか、フレーム バッファーと不適切に組み合わされているためにオブジェクトが正しくレンダリングされない場合、または、オブジェクトのピクセルがフレーム バッファーに到達する前に破棄されているためにオブジェクトが表示されない場合に特に便利です。

オブジェクト テーブル: [グラフィックス オブジェクト テーブル] を使用して、現在選択しているイベントに対して有効な特定の Direct3D オブジェクトおよびリソースのプロパティと内容を調べます。 オブジェクト テーブルを使用すると、イベントの発生時にアクティブであるグラフィックス デバイス コンテキストを特定し、定数バッファー、頂点バッファー、テクスチャなどのグラフィックス リソースの内容を調べることが容易になります。

HLSL デバッガー: 現在選択しているイベントおよびグラフィックス パイプライン ステージのシェーダー コードが動作する方法を調べるには、HLSL デバッガー を使用して、コードをステップ実行して、変数の内容を調べ、その他の一般的なデバッグ タスクを実行します。 また、結果がグラフィックス パイプラインによってさらに処理されるか、アプリによって再び読み取られるかに関係なく、HLSL デバッガーを使用して計算シェーダー コードを調べることができます。

コマンドライン キャプチャ ツール: コマンドライン キャプチャ ツールを使用すると、Visual Studio またはプログラムによるキャプチャを使用せずに、グラフィックス情報を簡単にキャプチャして再生できます。 具体的には、オートメーションを行う場合や、テスト環境でコマンド ライン キャプチャ ツールを使用できます。

: いくつかの例によって、複数のグラフィックス診断ツールを一緒に使用して、さまざまな種類のレンダリングの問題を診断する方法が示されています。

Title 説明
デバッガー機能ツアー Visual Studio のデバッグ機能を紹介します。
DirectX のグラフィックスとゲーム DirectX グラフィックスの手法を説明する文書を提供します。
Visual Studio での DirectX 12 のサポート Visual Studio での DirectX 12 の説明