revert: restore BeginCapture/EndCapture instead of TriggerCapture

TriggerCapture caused incomplete rdc files due to async file writing.
BeginCapture/EndCapture ensures synchronous file write on EndCapture.
This commit is contained in:
2026-03-23 20:23:20 +08:00
parent 6f6bb13da4
commit 3af24bb1bc
5 changed files with 50 additions and 11 deletions

View File

@@ -279,11 +279,34 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
ExecuteCommandList();
if (frameCount >= targetFrameCount) {
RenderDocCapture::Get().TriggerCapture();
Log("[INFO] RenderDoc capture triggered");
if (RenderDocCapture::Get().EndCapture()) {
Log("[INFO] RenderDoc capture ended");
}
WaitForGPU();
Log("[INFO] GPU idle, taking screenshot...");
bool screenshotResult = D3D12Screenshot::Capture(
gDevice,
gCommandQueue,
gSwapChain.GetBackBuffer(gCurrentRTIndex),
"minimal.ppm"
);
if (screenshotResult) {
Log("[INFO] Screenshot saved to minimal.ppm");
} else {
Log("[ERROR] Screenshot failed");
}
Log("[INFO] RenderDoc capture completed");
break;
}
// Present
if (frameCount == targetFrameCount - 1) {
if (RenderDocCapture::Get().BeginCapture("D3D12_Minimal_Test")) {
Log("[INFO] RenderDoc capture started");
}
}
EndRender();
ExecuteCommandList();
gSwapChain.Present(0, 0);
if (frameCount >= targetFrameCount) {