From 08439ed01584b3e003c5d17589876295018a3c0c Mon Sep 17 00:00:00 2001 From: atdunbg Date: Thu, 24 Sep 2026 13:44:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ImGuiLayer=20=E6=9E=90=E6=9E=84=E6=8F=90?= =?UTF-8?q?=E5=89=8D=E5=88=B0=20Logger=20Shutdown=20=E4=B9=8B=E5=89=8D=20+?= =?UTF-8?q?=20UI=20=E8=AE=A1=E6=97=B6=E6=AE=B5=E6=94=B6=E7=AA=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit m_ImGuiLayer 在 Application 析构体显式 reset(否则成员析构序在 Logger::Shutdown 之后);UI 计时范围从 Run 循环收窄到实际 ImGui 构建段(ImGui 未启用时不再计零段)。 --- Engine/src/Core/Application.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Engine/src/Core/Application.cpp b/Engine/src/Core/Application.cpp index fbbc7c5..83d5717 100644 --- a/Engine/src/Core/Application.cpp +++ b/Engine/src/Core/Application.cpp @@ -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 ----