fix: ImGuiLayer 析构提前到 Logger Shutdown 之前 + UI 计时段收窄
m_ImGuiLayer 在 Application 析构体显式 reset(否则成员析构序在 Logger::Shutdown 之后);UI 计时范围从 Run 循环收窄到实际 ImGui 构建段(ImGui 未启用时不再计零段)。
This commit is contained in:
@@ -54,6 +54,8 @@ namespace Engine {
|
||||
m_Renderer->GetDevice().GetDevice().waitIdle();
|
||||
}
|
||||
|
||||
if (m_ImGuiLayer) m_ImGuiLayer.reset();
|
||||
|
||||
Logger::Shutdown();
|
||||
}
|
||||
|
||||
@@ -106,16 +108,16 @@ namespace Engine {
|
||||
m_Scene->FlushDestroyQueue();
|
||||
m_Scene->UpdateTransforms(); // UE transform-update 阶段:渲染前保证 world 新鲜
|
||||
|
||||
const auto uiStart = std::chrono::steady_clock::now();
|
||||
|
||||
// ---- UI 构建段:OnRenderOverlay 只"声明"控件,不直接碰 GPU ----
|
||||
if (m_ImGuiLayer && m_ImGuiLayer->IsEnabled())
|
||||
{
|
||||
const auto uiStart = std::chrono::steady_clock::now();
|
||||
m_ImGuiLayer->NewFrame();
|
||||
OnRenderOverlay();
|
||||
m_ImGuiLayer->BuildDrawData();
|
||||
const auto uiEnd = std::chrono::steady_clock::now();
|
||||
}
|
||||
const auto uiEnd = std::chrono::steady_clock::now();
|
||||
|
||||
// ---- 主渲染(框架行为):RG 顺序 Forward → ImGui(loadOp=Load) →
|
||||
// Present,draw data 在 ImGui pass 里才真正提交 GPU ----
|
||||
|
||||
Reference in New Issue
Block a user