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();
|
m_Renderer->GetDevice().GetDevice().waitIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_ImGuiLayer) m_ImGuiLayer.reset();
|
||||||
|
|
||||||
Logger::Shutdown();
|
Logger::Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,16 +108,16 @@ namespace Engine {
|
|||||||
m_Scene->FlushDestroyQueue();
|
m_Scene->FlushDestroyQueue();
|
||||||
m_Scene->UpdateTransforms(); // UE transform-update 阶段:渲染前保证 world 新鲜
|
m_Scene->UpdateTransforms(); // UE transform-update 阶段:渲染前保证 world 新鲜
|
||||||
|
|
||||||
const auto uiStart = std::chrono::steady_clock::now();
|
|
||||||
|
|
||||||
// ---- UI 构建段:OnRenderOverlay 只"声明"控件,不直接碰 GPU ----
|
// ---- UI 构建段:OnRenderOverlay 只"声明"控件,不直接碰 GPU ----
|
||||||
if (m_ImGuiLayer && m_ImGuiLayer->IsEnabled())
|
if (m_ImGuiLayer && m_ImGuiLayer->IsEnabled())
|
||||||
{
|
{
|
||||||
|
const auto uiStart = std::chrono::steady_clock::now();
|
||||||
m_ImGuiLayer->NewFrame();
|
m_ImGuiLayer->NewFrame();
|
||||||
OnRenderOverlay();
|
OnRenderOverlay();
|
||||||
m_ImGuiLayer->BuildDrawData();
|
m_ImGuiLayer->BuildDrawData();
|
||||||
}
|
|
||||||
const auto uiEnd = std::chrono::steady_clock::now();
|
const auto uiEnd = std::chrono::steady_clock::now();
|
||||||
|
}
|
||||||
|
|
||||||
// ---- 主渲染(框架行为):RG 顺序 Forward → ImGui(loadOp=Load) →
|
// ---- 主渲染(框架行为):RG 顺序 Forward → ImGui(loadOp=Load) →
|
||||||
// Present,draw data 在 ImGui pass 里才真正提交 GPU ----
|
// Present,draw data 在 ImGui pass 里才真正提交 GPU ----
|
||||||
|
|||||||
Reference in New Issue
Block a user