PIX ゲーム デバッグのサンプル
このサンプルは、GDC 2008 で行われた講演「Beyond Printf: Debugging Games Through Tools」で使用されたものです。このドキュメントでは、PIXGameDebugging サンプルについて説明し、PIX for Windows とこのサンプルを使用した一連のチュートリアルを紹介します。
このサンプルを使用するには、シェーダー モデル 2.0 に対応したハードウェアが必要です。
- Path
- サンプルの特徴
- PIX でのシナリオ
- FAQ:PIX に関するその他のヒント
Path
ソース : | (SDK root)\Samples\C++\Direct3D\Tutorials\PIXGameDebugging |
サンプルの特徴
このサンプルでは不具合やボトルネックが意図的に作成されており、PIX for Windows を使用してそれらをデバッグすることができます。
不具合とは、ソフトウェアが視覚的に意図した動作を行わない状況と定義します。
ボトルネックとは、パフォーマンス上の問題を指します。一部のビデオ カードでは、ドライバーの最適化によってボトルネックが直接現れない場合もあります。
ここのシナリオでは、サンプルがデバッグを使用するようにビルドされており、DirectX コンソールで Direct3D 9 のデバッグが有効になっていると想定しています。このドキュメントに記載したシナリオ以外にも、このサンプルを使用して多くのシナリオを実行できます。
機能 | キー | 不具合 | ボトルネック | 説明 |
---|---|---|---|---|
HUD | F1 | X | HUD をオフにすると、パフォーマンスが少し向上します。 | |
全画面 | F2 | X | ウィンドウ表示モードと全画面モードを切り替えます。 | |
デバイス | F3 | X | すべてのサンプルにある基本的なデバイス設定を変更できます。マルチサンプリングなどの多くの設定はパフォーマンス低下を引き起こす可能性があります。 | |
REF | F4 | X | ソフトウェア レンダリングを切り替えます。重大なパフォーマンス低下の原因になります。 | |
アプリケーションのクラッシュ | X | バッファーを削除し、デバイスをリセットして、レンダリングを試行します。一部のビデオ カードでは予測できない動作が生じる可能性があります。PIX 環境外では使用しないことをお奨めします。 | ||
フォグ | F | X | ハードウェアによるフォグ処理です。不適切に使用されると、シーンが完全に不明瞭になることがあります。 | |
シザー | I | X | X | シザー テストの有効/無効を切り替え、さまざまなシザー サイズを使用可能にします。シザー領域を小さくするとパフォーマンスが向上します。不要なシザー設定によって、画像の必要な部分が不明瞭になる場合があります。 |
マルチ描画 | Y | X | X | チェスのそれぞれの駒の描画関数呼び出しが n 回ループされます。n の値が小さいほどパフォーマンスが向上します。ゼロの値は、駒が描画されないため不具合と見なされることがあります。ビデオ カードによっては大きなループ値を扱えない場合があります。 |
テクスチャー | V | X | テクスチャーを小さくすると、パフォーマンスが向上します。チェスのすべての駒とボードのテクスチャーが扱われます。 | |
コースティクス テクスチャー | T | X | シーンのライティング パターンです。標準は水の効果をアニメーション化したものです。白を指定すると、パターンが削除されます。黒を指定すると、ライティングが削除されます。 | |
ライト レイヤー FE | U | X | アルファ ブレンディングされたライト レイヤーです。描画されるレイヤー数が多いほど、パフォーマンス低下も大きくなります。 | |
Draw | L | X | X | シーンのレイアウトと描画順序です。デフォルトでは、駒がボード上に散在します。 |
アルファ ブレンディングの無効化 | R | X | ライト レイヤーが 0 より大きい場合、シーンが不明瞭になります。 | |
カリングの無効化 | P | X | パフォーマンスが低下します。マルチ描画の値が大きい場合、最も顕著になります。 | |
クリアの無効化 | C | X | 不適切なシーン更新が発生します。 | |
黒のクリア | E | 背景が青ではなく、黒になります。他の不具合と共に使用して黒い画面を表示することができます。 | ||
Z ファイティング | B | X | チェスのボードで余分なメッシュ サブセットの描画を切り替えます。 | |
代替ライト シェーダー | Z | X | 一部のビデオカードでは、ハードウェアの丸めエラーによって色の帯が表示されます。 | |
最初にライト シャフトを描画 | G | X | ライト レイヤーが 0 より大きい場合、シーンが不明瞭になります。 | |
時間ベース更新 | M | コースティクス テクスチャーのドリフトが無効になり、フレーム番号に基づいてアニメーション化されます。 | ||
リファレンス カウント終了エラー | O | X | 終了時にバッファーの解放に失敗します。 |
PIX でのシナリオ
以下のシナリオでは、PIX を使用してさまざまなタイプのゲームの誤動作を検出する方法を示します。
- シナリオ: 黒い画面の診断
- シナリオ: 終了時の D3D リファレンス カウント エラーのデバッグ
- シナリオ: テクスチャーのちらつき
- シナリオ: 一時的なバグのキャプチャー
- シナリオ: 表示されないオブジェクト
- シナリオ: 表示されないシーン
- シナリオ: ゲームのクラッシュ
- シナリオ: カウンター キャプチャー
シナリオ: 黒い画面の診断
前提: チェス セットを、黒い背景にフォグのないシーンとしてレンダリングする予定でした。しかし、黒い画面のみが表示されます。
コードのコンパイルにおける特殊な場合の手順:
PIX を有効に使用するにあたって、通常は特別な手順は必要ありません。特に変更を加えなくても、PIX はアセンブリ ベースのシェーダー デバッグを実行できます。ただし、HLSL シェーダー コードを参照し、効率的に追跡するには、多少の調整が必要です。HLSL デバッグを有効にするには、PIXGameDebugging.cpp ファイルの先頭に移動して、記述されているシェーダー デバッグ フラグのコメント記号を削除します。このコードを再コンパイルすると、PIX は実行可能コードの分析に対応できるようになります。アプリケーションは、ハードウェアではなくソフトウェアのレンダリングを使って実行するため、より多くの情報が PIX に提供されます。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、シングル フレーム キャプチャーを選択します。
- ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [Start Experiment] をクリックします。
- [Black Clear] をオンにし、[Caustic Texture] を [Black] に設定し、[Fog] を [None] に設定し、[HUD] をオフにします。
- F12 キーを押して、シングル フレームをキャプチャーします。
- Esc キーを押してアプリケーションを終了します。
結果の分析
- キャプチャーしたフレームをイベント ビューで選択します。
- レンダリング タブをクリックします。
- シーンの中央を右クリックして、[ピクセルのデバッグ](debug pixel) をクリックします。
- ピクセル履歴を参照して、すべての点が黒になっていることを確認します。
- 最初の DrawIndexedPrimitive 呼び出しまで下にスクロールし、[ピクセルのデバッグ](Debug Pixel) をクリックします。
- シェーダー アセンブリ コードをステップ実行し、サンプラー s1 のテクスチャー ロードがゼロになることを確認します。
- 上記の「コードのコンパイルにおける特殊な場合の手順」に従っている場合は、HLSL コードをトレースして、テクスチャーを適用したときにカラー値がゼロになることを確認します。
- イベント ビューをクリックし、キャプチャーしたフレームを選択します。
- ツール バー上の下向き矢印が付いている "D" の形のボタンをクリックして、次の描画関数呼び出しに移動します。
- 描画関数呼び出しの青いメモリー アドレスを右クリックし、[View Device] を選択します。
- [Pixel State] タブを選択し、テクスチャー サンプラーまで下にスクロールします。
- 最初のテクスチャー サンプラーを右クリックして [View Texture] をクリックし、マーブル テクスチャーが正しく表示されることを確認します。
- [デバイス](Device) タブの [Pixel State] サブタブに戻り、2 番目のテクスチャー サンプラーを選択します。
- 2 番目のテクスチャー サンプラ (s1) は黒になっていますが、これは不具合です。
まとめ
不適切なテクスチャーが使用されたため、ピクセル シェーダーによって最終的なピクセルの色が黒くなってしまいました。これは、シェーダー コードとサンプラー ステートを調べることにより検出されます。
シナリオ: 終了時の D3D リファレンス カウント エラーのデバッグ
前提: アプリケーション終了時に、「D3D デバイスに 0 以外の値の参照カウントがあります。これはオブジェクトのいくつかがリリースされていないことを示します。」というダイアログが表示されます。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、シングル フレーム キャプチャーを選択します。
- ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [More Options] をクリックします。
- [Trigger Type] を [Frame] に変更します。
- [Repeat this trigger every frame] をオンにします。
- [Target Program] タブをクリックします。
- [Record a diagnostic log] をオンにします。
- [Include debug output messages in diagnostic log] をオンにします。
- [Start Experiment] をクリックします。
- O キーを押して、[Ref count exit error] ボックスをオンにします。
- Esc キーを押してアプリケーションを終了します。
- リファレンス カウント エラー ダイアログを閉じます。
- [PIXGameDebugging.exe は動作を停止しました](PIXGameDebugging.exe has stopped working) ダイアログ ボックスを閉じます。
結果の分析
- 診断ログを参照し、コードでクリーンアップ エラーが発生したことを確認します。
- 診断ログを破棄または保存します。
- キャプチャー ファイルの最終フレームに移動し、フレームを拡大します。
- 最終フレームの最終イベント (IDirect3D9::Release) に移動します。
- 詳細ビューの [レンダリング](Render) タブをクリックして、PIX がオブジェクト テーブルを更新できるようにします。[概要](Summary) タブが表示されている場合は、情報がすぐに古くなります。ただし、[概要](Summary) タブは、呼び出し間をすばやく移動する場合に便利です。
- オブジェクト ビューを参照します。
- [ステータス](Status) が "Alive" のオブジェクトのみが表示されるようにフィルタリングします。
- [破棄](Destruction) が "Never" のオブジェクトのみが表示されるようにフィルタリングします。
- [アプリケーション リファレンス](App Refs) が "1" のオブジェクトのみが表示されるようにフィルタリングします。
- 頂点バッファーのアプリケーション リファレンスは 1 であり、この時点で破棄される必要があります。
- D3D9 頂点バッファーの行を右クリックします。
- [Object Operations] に移動します。
- [Object Creation] をクリックします。
- イベントがフレーム 1 にジャンプします。これは、解放する必要のあるオブジェクトの作成位置であることを示しています。
まとめ
アプリケーションを終了する前に、頂点バッファーが正しく解放されませんでした。オプションのユーザー イベントを使用したため、バッファーの正確な作成場所が容易に示されました。
シナリオ: テクスチャーのちらつき
前提: サーフェスに Z ファイティング タイプのテクスチャーのちらつきが表示されますが、Z ファイティングの原因となるメッシュの相互作用が見あたりません。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、シングル フレーム キャプチャーを選択します。
- ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [Start Experiment] をクリックします。
- [Z-Fighting] をオンにして、[HUD] をオフにします。
- F12 キーを押して、シングル フレームをキャプチャーします。
- Esc キーを押してアプリケーションを終了します。
結果の分析
- キャプチャーしたフレームをイベント ビューで選択します。
- [レンダリング](Render) タブをクリックして、オブジェクトの状態を初期化します。
- [レンダリング](Render) タブの [Toggle wireframe mode] ツール バー ボタンをクリックします。
- 大きなメッシュの干渉はまだ現れていないことを確認します。
- 詳細ビューの [メッシュ](Mesh) タブを選択します。
- イベント ビューの [go to the next draw call] ツール バー ボタン (下向き矢印付きの D の画像) をクリックします。
- ID3DXMesh::DrawSubset 呼び出しの一環として、疑わしいメッシュが描画されていることを確認します。
- イベント ビューの [go to the next draw call] ツール バー ボタン (下向き矢印付きの D の画像) をクリックします。
- これは必要なチェス ボードであり、別の ID3DXMesh::DrawSubset で描画されています。このチェス ボードと不明なサブセットとの位置は、メッシュ ビューの [ビューポート](Viewport) に表示される両者のデータから判断すると実質上同じであるように見えます。
まとめ
D3DX 呼び出しは、チェス ボードが 2 つのサブセットに分割されていることを示しています。必要なチェス ボードは、このサブセットのいずれか一方のみに格納されています。
シナリオ: 一時的なバグのキャプチャー
前提: Z ファイティングは時々表示されるだけです。現在はシングル フレーム キャプチャー ファイルをシングル フレーム キャプチャーの小規模なセットに分割する手段がないため、フレームごとにシングル フレーム キャプチャーをキャプチャーするような実験を設定するのは望ましくありません。シングル フレーム キャプチャー内にはバグの発生したフレームを 1 つだけ格納することをお奨めします。
最初の分析用 PIX キャプチャーの作成
- PIX で新しい実験を開き、[再生可能な Direct3D 呼び出しストリーム](Replayable Direct3D call stream) を選択します。
- ビルド済みの PIXGameDebugging.exe の場所と名前を入力します。
- フル ストリーム キャプチャーのパスとファイル名を入力します。
- [Start Experiment] をクリックします。
- いくつかのフレームをレンダリングします。
- Z キーを押して、Z ファイティングをオンに切り替えます。
- いくつかのフレームをレンダリングします。
- Z キーを押して、Z ファイティングをオフに切り替えます。
- いくつかのフレームをレンダリングします。
- Esc キーを押してアプリケーションを終了します。
最初のキャプチャーの分析
- PIX で [ファイル](File)、[開く](Open) の順に選択して、先程保存したフル ストリーム キャプチャーを開きます。
- レンダリング タブをクリックし、一度に 1 つずつフレームを移動します。テクスチャーの欠陥が見えるフレームが表示されるまでこれを繰り返し、Z ファイティングを示しているフレームを見つけ出します。
- 欠陥が見られるフレーム番号を書き留めます。
- フル ストリーム キャプチャーを閉じます。
2 番目の分析用 PIX キャプチャーの作成
- 実験を新規作成します。
- シングルフレーム キャプチャーを選択します。
- 実行可能ファイルの名前として、フル ストリーム キャプチャーのパスと名前を入力します。
- [More Options] をクリックします。
- トリガーの種類を [Frame] に変更します。
- フレーム番号を、最初のキャプチャーの分析で特定した値に設定します。
- [Start Experiment] をクリックします。
- 実験を終了します。
2 番目のキャプチャーの分析
- 「テクスチャーのちらつき」のシナリオと同じ分析を行います。
まとめ
PIX experiment を作成することによって、一時的なイベントのキャプチャーに要する時間が短縮される場合があります。この演習問題の拡大版として、このドキュメントの最後にある FAQ に示すように、ミッドストリーム キャプチャーを使用してこのシナリオを再実行してください。
シナリオ: 表示されないオブジェクト
前提: シーン内にチェスのすべての駒が表示される必要があります。しかし、2 つの駒が表示されません。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、シングル フレーム キャプチャーを選択します。
- ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [Start Experiment] をクリックします。
- [Draw] コンボ ボックスで [Bad XForm] を選択し、[HUD] をオフに切り替えます。
- F12 キーを押して、シングル フレームをキャプチャーします。
- Esc キーを押してアプリケーションを終了します。
結果の分析
キャプチャーしたフレームをイベント ビューで選択します。
詳細ビューの [レンダリング](Render) タブをクリックして、オブジェクトの状態を初期化します。
[レンダリング](Render) タブの [Toggle wireframe mode] ボタンをクリックします。
イベント ビューの [Go to the next draw call] (下向き矢印付きの D) ボタンを使用して、それぞれの描画関数呼び出しをステップ実行します。
表示されなかったビショップの駒が、2 番目と 3 番目の描画関数呼び出しでは明瞭に表示されていることを確認します。
7 番目の描画関数呼び出しで、背景に疑わしい線が表示されることを確認します。
以降の描画関数呼び出しでは、キングがビショップを隠していることを確認します。
詳細ビューの [メッシュ](Mesh) タブを選択します。
キャプチャーしたフレームの名前をイベント ビューで選択します。
6 番目と 7 番目の描画関数呼び出しに移動します。
[PreVS](頂点シェーダー実行前) タブと [PostVS](頂点シェーダー実行後) タブの値を使用して、最初のルークの描画関数呼び出しがビューポートの外側で駒の上部をどのように変換しているかを確認します。
次の描画関数呼び出しに移動し、同様に 2 つのタブを使用して、2 番目のルークの描画関数呼び出しでスケーリングが行われ、ルークの内側にシーン全体が収まるように変換されていることを確認します。
2 番目のルークの描画関数呼び出しでのフォグ値を確認します。ほとんどの面は後ろ向きのためカリングされていますが、前向きのポリゴンはフォグ値の範囲外にあるために隠されています。
まとめ
ビショップとルークの頂点シェーダーに正しくない値が渡されていました。シーンがルークの内側にあり、カリングされなかった面はフォグによって隠されていましたが、それらはカリングによって検出されにくくなっていました。
シナリオ: 表示されないシーン
前提: レターボックス効果を作成しようとすると、シーンの多くが表示されなくなります。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、シングル フレーム キャプチャーを選択します。
- ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [Start Experiment] をクリックします。
- [Scissors] コンボ ボックスで [Bad] を選択します。
- F12 キーを押して、シングル フレームをキャプチャーします。
- Esc キーを押してアプリケーションを終了します。
結果の分析
- キャプチャーしたフレームをイベント ビューで選択します。
- 詳細ビューの [レンダリング](Render) タブをクリックして、オブジェクトの状態を初期化します。
- 詳細ビューの [メッシュ](Mesh) タブをクリックします。
- イベント ビューの [Go to the next draw call] (下向き矢印付きの D) を使用して、それぞれの描画関数呼び出しをステップ実行します。
- 表示対象のメッシュがすべて正しく変換されていることを確認します。
- キャプチャーしたフレームをイベント ビューで選択します。
- 詳細ビューの [レンダリング](Render) タブをクリックします。
- レンダリングされたシーンの大きさに合わせてズームします。
- シーンの中央を右クリックして、[ピクセルのデバッグ](debug pixel) をクリックします。
- PIX の赤いテキストは、ピクセルがシザー テストに失敗したことを報告しています。
- キャプチャーしたフレームをイベント ビューで選択します。
- "scissor" を検索し (Ctrl + F)、シザー テストが true に設定されていることを確認します。
- 再度 "scissor" を検索し、"SetScissorRect" が見つかったところで停止します。
- "SetScissorRect" の左の青いメモリー アドレスを右クリックします。
- [View Device] を選択します。
- [Pixel State] タブをクリックします。
- 直前の変更を示すために赤の網掛けが施されている [シザー矩形](Scissor Rectangle) によって定義されているボックスが 1x1 であることを確認します。
まとめ
もっと大きいシザー領域を予定していましたが、プログラムによってシザー矩形が不当に小さいボックスに設定されてしまったため、シーンの大半が失敗しました。
シナリオ: ゲームのクラッシュ
前提: アプリケーション実行中にゲームがクラッシュし、Visual Studio が起動します。PIX をバッファーとして使用し、何が発生したのかを把握します。重要:このクラッシュへの対処はビデオ カードごとに異なり、出力内容が以下の手順の出力と異なる場合があります。なるべく D3D の呼び出しでクラッシュが発生するように呼び出しが選択されています。ただし、ドライバーの中にはこのクラッシュから回復できないものがあります。また、このアプリケーションのクラッシュを完全に回避できるドライバーもあります。このシナリオを実行する前に、作業内容を保存し、他のすべてのアプリケーションを終了しておくことをお奨めします。
分析用の PIX キャプチャーの作成
- PIX で新しい実験を開き、[再生可能な Direct3D 呼び出しストリーム](replayable Direct3D call stream) を選択します。
- PIXGameDebugging.exe のパスとファイルを入力します。
- フル ストリーム キャプチャーの場所のパスとファイルを入力します。
- [More Options] をクリックします。
- [Create Run File] をクリックします。
- [Disable write caching] をオンにします。書き込みキャッシュを無効にすると、呼び出し時の書き込みに対する PIX のバッチ処理がオフになります。このため、アプリケーションのキャプチャー速度が落ちますが、クラッシュに関して得られる情報が増えることになります。
- [Target Program] タブを選択します。
- [Record a diagnostic log] をオンにします。これにより、PIX はアプリケーションのクラッシュ時のデバッグ情報を収集できるようになります。
- クラッシュ時に収集される情報の質を高めるために、[Include debug output messages in diagnostic log] をオンにします。これにより、パフォーマンスがわずかに低下します。
- [Start Experiment] をクリックします。
- [Crash App] コンボ ボックスで [Yes] をクリックします。
- デバッグするかどうか尋ねられたときに、[はい](Yes) をクリックします。
- クラッシュ時の [Windows エラー報告] ダイアログを閉じます。
結果の分析
- 診断ログを確認して保存します。
- ワードパッドで診断ログを開き、さらに確認します。
- フル ストリーム キャプチャー ファイルを開きます。
- 最初のフレームをクリックします。
- [レンダリング](Render) タブをクリックして、オブジェクトの状態を初期化します。
- [概要](Summary) タブをクリックし、実行ファイルの他の部分に移動しても、オブジェクト状態の開始時の値がそのまま表示されるようにします。
- 最終フレームをクリックし、拡大します。
- イベント ビューの [HR] ツール バー ボタンをクリックします。
- 最終フレームの呼び出しを調べます。
- ユーザー イベント [Drawing Scene] を展開します。
- DrawIndexedPrimitive が D3DERR_INVALIDCALL を返したことを確認します。
まとめ
この時点で、アプリケーションのトラブルが発生した場所を正確に特定することができます。これによって、完全に状況がおかしくなる前の場所にブレークポイントを配置できます。ビデオカードによって生成される結果が異なるため、ここでの PIX の実行結果の調査はドライバーごとに異なります。前述のシナリオと同様の手法で、クラッシュの原因を特定できます。
シナリオ: カウンター キャプチャー
目的:カウンター キャプチャーの値、およびカウンターの HUD を調べます。
PIX キャプチャーによる分析
- PIX で新しい実験を開き、ビルド済みの PIXGameDebugging.exe の場所を入力します。
- [Statistics for each frame, using counterset] を選択します。
- [HUD] チェック ボックスをオンにします。
- [More Options] をクリックします。
- [Set Counters: Draw_Submission] をクリックします。
- サイクル キーを Alt + . に変更します。
- [Customize] をクリックします。
- さまざまなカウンターが利用できることに注目してください。ビデオ カード メーカーや他のサードパーティ ベンダーからプラグイン カウンターを入手することもできます。
- [My Countersets] を展開します。
- [Initial Run] をクリックします。
- [追加 >>](Add) をクリックします。
- [OK] をクリックします。
- [Start Experiment] をクリックします。
- HUD に 4 つのカウンターのグラフがオーバーレイ表示されます。
- T キーを押して、テクスチャーを切り替えたときのリソース グラフの上昇度合を確認します。
- Y キーを押して、マルチ描画を変更したときの描画と DIP の上昇度合を確認します。
- L キーを押して、ライト レイヤーの数を増やしたときの描画の上昇度合を確認します。
- Alt キーを押しながら . キーを押して、HUD 上に次のカウンター セットを視覚的に表示します。
- L キーを押して、ライト レイヤーの数を増やすと頂点シェーダーの定数も増えることを確認します。
- [Light Layers] を 0 に設定します。ピクセルとシェーダーのセットがどのように減少するかを確認します。
- [Draw] の設定を [Front Row 1st] に変更し、すべての設定値の変化を確認します。
- Esc キーを押してアプリケーションを終了します。
- PIX キャプチャーでは、グラフ上で色分けされた特定の部分を選択し、マウス ホイールを使ってタイムライン領域を拡大/縮小することができます。
- 赤い枠のコンボ ボックスをクリックし、[Number of Draw Calls] を選択します。実行時に PIX HUD に表示されるグラフの上昇度合が、ここに示す値に対応していることを確認します。
- 緑の枠のボックスを [SetPixelShader calls] に設定します。
- 青の枠のボックスを [SetTexture calls] に設定します。
- 黒の枠のボックスを [FPS](1 秒あたりのフレーム数) に設定します。
- 黒、青、緑の線の相関関係を確認します。
まとめ
カウンター キャプチャーは、GUI 要素の使用時に発生する各種数値の上昇を確認するのに適した手段です。また、一定の間隔で発生する数値上昇にも有効です。フル ストリーム キャプチャーからカウンター キャプチャーを取得することができ、既知のデータ セットの詳細な分析に役立ちます。
FAQ:PIX に関するその他のヒント
- PIX は、あらゆる形式の不適切な DirectX コードに対する保護を行いません。ただし、ドライバーはそのようなコードから回復できることがあります。PIX がキャプチャー時にクラッシュした場合、そのソフトウェアは堅牢なエラー処理機能を持たないビデオカードでクラッシュする可能性が非常に高くなります。
- フレームのオブジェクトとリンクがアクティブになる前に、そのフレームをレンダリングする必要があります。
- リソース消費量の最も高いオブジェクトを見つけるには、オブジェクト テーブルをサイズ別にソートします。
- プロセス アタッチ ダイアログを開くには、Shift キーを押しながら実験を起動します。この手順で、PIX を使用してアプリケーションにデバッガーをアタッチします。デフォルトのシングル フレーム キャプチャー キーを F12 から変更するには、実験ビューの [More Options] をクリックして、トリガー キーを F12 から任意のキーの組み合せに変更します。
- PIX の UI の多くは、ウィンドウの右クリックを利用しています。ソフトウェアの実験を行っているときに、右クリックを使用してください。
- イベントを移動する場合は [概要](Summary) タブを表示しておくことをお奨めします。[概要](Summary) タブが開いている間、PIX は個々の呼び出しを分析しません。ただし、このためにオブジェクトの状態は古くなります。
- PIX のデバイス ビューには役に立つリンクが多数表示されます。これを利用して、現在のレンダー ターゲット ([Output State] タブ)、現在のサンプラー ([Pixel State] タブ)、頂点バッファー ([入力状態]) などを、他のイベントに移動することなく検索します。