# RenderDocCapture::Initialize 加载 `renderdoc.dll` 并初始化当前抓帧上下文。 ```cpp bool Initialize(void* device = nullptr, void* window = nullptr); ``` ## 行为说明 当前实现是幂等的: - 如果已经初始化,直接返回 `true`。 - 注意:在“已经初始化”的情况下,新的 `device` 和 `window` 参数不会写回内部状态。 首次初始化时,当前实现会: 1. 保存 `device` 与 `window` 指针。 2. 在可执行文件所在目录查找并加载 `renderdoc.dll`。 3. 获取 RenderDoc 1.7.0 API。 4. 额外设置三个默认 U32 capture 选项:`2`、`8`、`9` 都设为 `1`。 5. 记录一条初始化成功日志。 当前 API 允许在初始化时传空指针;这种情况下只要 DLL 可用,初始化仍可成功,但之后 [BeginCapture](BeginCapture.md) 仍要求设备和窗口已补齐。 ## 参数 - `device` - 可选的图形设备指针。 - `window` - 可选的窗口句柄。 ## 返回值 - `bool` - `true` 表示 RenderDoc 已成功加载并可继续配置;`false` 表示加载或 API 获取失败。 ## 线程语义 - 建议在创建窗口后、图形后端初始化期间由主线程调用。 ## 示例 ```cpp using namespace XCEngine::Debug; if (RenderDocCapture::Get().Initialize(nullptr, hwnd)) { RenderDocCapture::Get().SetDevice(devicePtr); } ``` ## 相关文档 - [返回类型总览](RenderDocCapture.md) - [SetDevice](SetDevice.md) - [SetWindow](SetWindow.md) - [RenderDoc Capture Workflow](../../../_guides/Debug/RenderDoc-Capture-Workflow.md)