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 主机