PIXBeginCapture

启动通过编程方式控制的 PIX 计时捕获。

语法

HRESULT PIXBeginCapture(  
         DWORD captureFlags,  
         const PPIXCaptureParameters captureParameters  
)  

参数

captureFlags   
类型:DWORD

指示要执行的捕获类型的标志。 一次只可将一个捕获标志传递到 PIXBeginCapture。 当前,唯一的有效值是在 pix3.h 中定义的 PIX_CAPTURE_TIMING:

#define PIX_CAPTURE_TIMING                  (1 << 0)  

captureParameters _In_opt_
类型:PPIXCaptureParameters

对于计时捕获,请将指针传递到 TimingCaptureParameters 结构,或者将指针传递到 PIXCaptureParameters 联合,其中包含 TimingCaptureParameters 结构。

返回值

类型:HRESULT

指示捕获是否已成功启动。 对于成功,返回 S_FALSE。 一次只能运行一个捕获。 如果 PIXBeginCapture 在另一个捕获当前正在运行时被调用,则将返回 E_PENDING,并且调用没有任何效果。

备注

此函数从游戏代码启动 PIX 捕获。 PIXBeginCapture 目前只能用于执行计时捕获(NDA 主题)要求授权

PIXBeginCapture 将捕获数据存储在主机上的工具内存中。 可用于捕获的工具内存量将通过在 PIXCaptureParameters 结构中设置 MaximumToolingMemorySizeMb 字段来指定。

进行编程计时捕获时可以采用以下两种模式之一,这由 PIXCaptureParameters 结构中的 PIXCaptureStorage 枚举值定义。 当 PIXCaptureStorage 设置为“Memory”时,PIXBeginCapture将填充可用的工具内存,然后将放弃传入的任何新数据。 当 PIXCaptureStorage 设置为“MemoryCircular”时,PIXBeginCapture会将工具内存用作环形缓冲区。 捕获将一直运行,直到工具内存已满,但旧数据将过期,以便为新数据腾出空间,而不是停止捕获。 捕获将继续运行。 MemoryCircular捕获旨在用于长时间运行,而不会耗尽主机上的可用工具内存。

必须将使用 PIXBeginCapture 进行的计时捕获复制回电脑并转换为 .xpix 文件,然后才能在 PIX 中查看它们。 有关在 PIX 中查看编程捕获所需步骤的介绍,请参阅打开编程的计时捕获(NDA 主题)要求授权

使用 PIXEndCapture 停止来自游戏代码的 PIX 捕获。

//
//  timing capture
//
PIXCaptureParameters captureParams = {};

captureParams.TimingCaptureParameters.CaptureGpuTiming = TRUE;
captureParams.TimingCaptureParameters.CaptureCallstacks = TRUE;
captureParams.TimingCaptureParameters.CaptureCpuSamples = TRUE;
captureParams.TimingCaptureParameters.CpuSamplesPerSecond = 4000;

captureParams.TimingCaptureParameters.CaptureStorage = PIXCaptureParameters::Memory;
captureParams.TimingCaptureParameters.FileName = wstrFilename;
captureParams.TimingCaptureParameters.MaximumToolingMemorySizeMb = 4096;

XSF_ERROR_IF_FAILED(PIXBeginCapture(PIX_CAPTURE_TIMING, &captureParams));

要求

头文件:pix3.h

库:pixevt.lib

支持的平台:Xbox One 系列主机和 Xbox Series 主机

另请参阅

PIXEndCapture
PIXCaptureParameters
PIX3
PIX(NDA 主题)要求授权