feat: add RenderDocCapture to Debug module for frame capture debugging

- Add RenderDocCapture class for dynamic loading of renderdoc.dll
- Support BeginCapture/EndCapture/TriggerCapture APIs
- Add RenderDoc log category
- Add unit tests for RenderDocCapture in tests/debug
This commit is contained in:
2026-03-23 17:11:01 +08:00
parent d58d98cb68
commit 81dc337262
8 changed files with 285 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#include <gtest/gtest.h>
#include "XCEngine/Debug/RenderDocCapture.h"
using namespace XCEngine::Debug;
TEST(RenderDocCaptureTest, Initialize) {
auto* rc = &RenderDocCapture::Get();
bool result = rc->Initialize(nullptr, nullptr);
EXPECT_TRUE(result) << "RenderDoc initialization failed - check if renderdoc.dll is available";
EXPECT_TRUE(rc->IsLoaded());
}
TEST(RenderDocCaptureTest, Shutdown) {
auto* rc = &RenderDocCapture::Get();
rc->Initialize(nullptr, nullptr);
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
rc->Shutdown();
}
TEST(RenderDocCaptureTest, BeginEndCapture) {
auto* rc = &RenderDocCapture::Get();
rc->Initialize(nullptr, nullptr);
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
rc->BeginCapture("UnitTestCapture");
rc->EndCapture();
}
TEST(RenderDocCaptureTest, TriggerCapture) {
auto* rc = &RenderDocCapture::Get();
rc->Initialize(nullptr, nullptr);
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
rc->TriggerCapture();
}
TEST(RenderDocCaptureTest, SetCaptureFilePath) {
auto* rc = &RenderDocCapture::Get();
rc->Initialize(nullptr, nullptr);
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
rc->SetCaptureFilePath(".\\test_captures");
}
TEST(RenderDocCaptureTest, SetCaptureComments) {
auto* rc = &RenderDocCapture::Get();
rc->Initialize(nullptr, nullptr);
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
rc->SetCaptureComments("Unit test capture");
}