このチュートリアルでは、Visual Studio のグラフィックス診断を使用して、Direct3D アプリケーションからプログラムによりグラフィックス情報をキャプチャする方法を示します。
このチュートリアルでは、次の作業について説明します。
プログラムによるキャプチャを使用するようにコンピューターを準備します。
プログラムによるキャプチャを使用するようにアプリケーションを準備します。
グラフィックスのログ ファイルの名前と場所を構成します。
CaptureCurrentFrame API を使用します。
プログラムによるキャプチャを使用するようにコンピューターを準備する
プログラム キャプチャ API は、Visual Studio のリモート ツールを使用してキャプチャ機能を提供します。ローカル コンピューター上でプログラムによるキャプチャを使用する場合でも、アプリケーションを実行するコンピューターにリモート ツールをインストールする必要があります。ローカル コンピューター上でプログラムによるキャプチャを実行するときには、Visual Studio を実行する必要はありません。
コンピューターで実行されているアプリケーションにリモート キャプチャ API を使用するには、最初にそのコンピューターに Visual Studio のリモート ツールをインストールする必要があります。異なるバージョンのリモート ツールは、異なるハードウェア プラットフォームをサポートします。リモート ツールをインストールする方法の詳細については、Microsoft ダウンロード センター Web サイトのリモート ツールのダウンロード ページを参照してください。
また、Visual Studio は 32 ビット アプリケーションのリモート キャプチャを実行するために必要なコンポーネントをインストールします。
[!メモ]
Visual Studio を含む Windows のほとんどのデスクトップ アプリケーションは ARM デバイス用の Windows 8 でサポートされていないため、プログラム キャプチャ API と共に Visual Studio のリモート ツールを使用することが、ARM デバイスのグラフィックス診断をキャプチャする唯一の方法です。
プログラムによるキャプチャを使用するようにアプリケーションを準備する
グラフィックス診断ツールを使用するには、まず依存するグラフィックス情報をキャプチャする必要があります。CaptureCurrentFrame API を使用してプログラムによって情報をキャプチャできます。
グラフィックス情報をプログラムによってキャプチャするようにご使用のアプリケーションを準備するには
vsgcapture.h のヘッダーがアプリケーションのソース コードに含まれていることを確認します。これは、プログラム キャプチャ API を呼び出すソース コード ファイルや、複数のソース コード ファイルから API を呼び出すプリコンパイル済みヘッダー ファイルなど、いずれか 1 か所にあれば問題ありません。
アプリケーションのソース コードで、現在のフレームの残りの部分をキャプチャする場合は常に、g_pVsgDbg->CaptureCurrentFrame() を呼び出します。このメソッドはパラメーターを受け取らず、値を返しません。
グラフィックス ログ ファイルの名前と場所を構成する
グラフィックス ログは DONT_SAVE_VSGLOG_TO_TEMP と VSG_DEFAULT_RUN_FILENAME のマクロによって定義された場所に作成されます。
グラフィックス ログ ファイルの名前と場所を構成するには
グラフィックス ログが一時ディレクトリに書き込まれることを防ぐには、#include <vsgcapture.h> 行の前に次の値を追加します。
#define DONT_SAVE_VSGLOG_TO_TEMPこの値は、グラフィックス ログを書き込む場所を、作業ディレクトリへの相対パスとして、または VSG_DEFAULT_RUN_FILENAME の定義が絶対パスである場合は絶対パスとして、定義できます。
グラフィックスのログを別の場所に保存するか、別のファイル名を指定するには、#include <vsgcapture.h> 行の前に次の値を追加します。
#define VSG_DEFAULT_RUN_FILENAME <filename>この手順を実行しない場合、ファイル名は default.vsglog です。DONT_SAVE_VSGLOG_TO_TEMP を定義しなかった場合、ファイルの場所は一時ディレクトリへの相対パスに指定されます。それ以外の場合は、作業ディレクトリへの相対パスか、絶対ファイル名を指定した場合はその場所に指定されます。
Windows ストア の apps では、一時ディレクトリの位置は各ユーザーおよびアプリケーションに固有であり、15 B のような位置に通常です: \users\のユーザー名の\AppData\Local\Packages\のパッケージの姓の\TempState\。デスクトップ アプリケーションでは、一時ディレクトリの場所は各ユーザーに固有で、通常は C:\users\ユーザー名\AppData\Local\Temp\ などに見つかります。
[!メモ]
特定の場所に書き込むには、その場所に書き込むためのアクセス許可が必要です。アクセス許可がない場合は、エラーが発生します。Windows ストア のアプリケーションには、データを書き込むことができる場所についてデスクトップ アプリケーションよりも制限があり、特定の場所に書き込むには追加の構成が必要な場合があることに注意してください。
グラフィックスの情報をキャプチャする
プログラムによるキャプチャのためにアプリケーションを準備し、必要に応じてグラフィックス ログ ファイルの場所と名前を構成したら、アプリケーションをビルドし、データをキャプチャするように実行またはデバッグを行います。プログラム キャプチャ API を使用している間は、Visual Studio からグラフィックスの診断を開始しないでください。グラフィックス ログは指定した場所に書き込まれます。このバージョンのログを保持する場合は、別の場所に移動します。移動しない場合、アプリケーションを再度実行するとログが上書きされます。
ヒント |
|---|
プログラムによるキャプチャを実行している間でも、アプリケーションにフォーカスを置いた状態で PrintScreen キーを押すと、グラフィックス情報を手動でキャプチャできます。これを使用すれば、プログラム キャプチャ API の使用によって取得できない追加のグラフィックス情報をキャプチャできます。 |
次の手順
このチュートリアルでは、グラフィックス情報をプログラムによってキャプチャする方法を示しました。次の手順では、次のオプションを検討します。
- グラフィックス診断ツールを使用してキャプチャされたグラフィックスの情報を解析する方法について学習します。「グラフィックス診断」を参照してください。
ヒント