演练:以编程方式捕获图形信息

本演练演示如何使用 Visual Studio 图形诊断以便从 Direct3D 应用程序中以编程方式捕获图形信息。

本演练阐释了以下任务:

  • 准备好您的计算机,以便使用编程捕获。

  • 准备好您的应用程序,以便使用编程捕获。

  • 配置图像日志文件的名称和位置。

  • 使用 CaptureCurrentFrame API。

准备好您的计算机,以便使用编程捕获

编程使用远程工具为 Visual Studio 捕获 API,提供捕获功能。该应用程序将运行的计算机必须安装有远程工具,因此,即使在本地计算机的编程访问。Visual Studio 不必当您在本地计算机上执行编程捕获时运行。

若要在计算上运行的应用程序上使用远程访问 API,必须先安装 Visual Studio 的远程工具。远程工具的不同版本支持不同的硬件平台。有关如何安装远程工具的信息,请参见 Microsoft 下载网站中的远程工具下载页

或者,Visual Studio 安装必需的组件来执行 32 位应用程序的远程捕获。

说明说明

由于包括 Visual Studio 的大多数 Windows 桌面应用程序在 ARM 设备的 Windows 8 不支持,使用 Visual Studio 的远程工具和编程捕获 API 是唯一一种可以捕获 ARM 设备的图像诊断的方法。

准备好您的应用程序,以便使用编程捕获

若要使用图形诊断工具,首先必须捕获所依赖的图形信息。您可以通过使用 CaptureCurrentFrame API 以编程方式捕获信息。

准备您的应用程序以编程方式获取图像信息

  1. 确保 vsgcapture.h 标头包括在该应用程序的源代码中。它可以包括仅在一个位置,例如,在源代码文件中将调用编程捕获 API,或者预编译头文件可以从多个源代码文件中调用 API。

  2. 在该应用程序的源代码中,每当想要获取当前帧的其余部分时,请调用 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 应用商店 应用程序,临时目录的位置特定于每个用户和应用程序以及一个位置通常找到,例如 C:\users\username\AppData\Local\Packages\package family name\TempState\。对于桌面应用程序,临时目录的位置视不同用户而定,通常类似于 C:\Users\用户名\AppData\Local\Temp\。

说明说明

若要写入特定位置,您必须具有写入此位置的权限;否则,将发生错误。注意 Windows 应用商店 应用程序比桌面应用程序更加受限制,他们可以写入数据并可能需要其他配置来写入某些位置。

获取该图像信息。

在您为编程捕获准备应用程序并选择性配置位置和图形日志文件的名称时,生成应用程序然后运行或对其调试以捕获数据;当使用编程捕获 API 时,不要从 Visual Studio 启动图形诊断。图像日志写入您指定的位置。如果要保留日志的此版本,请将其移动到另一个位置;否则,当您再次运行应用程序时将覆盖。

提示提示

通过使用焦点内的应用程序按“打印屏幕”,在使用编程捕获时,您仍然可以手动收到图形信息。使用此工具可以捕获到使用编程捕获 API 而捕获不到的其他图形信息。

后续步骤

本演练演示了如何以编程的方式捕获图形信息。作为下一步,请考虑此选项:

  • 学习如何通过使用图形诊断工具来分析捕获的图形信息。请参见 图形诊断

请参见

任务

演练:手动捕获图形信息

概念

捕获图形信息