Files
XCEngine/docs/api/XCEngine/Editor/UI/ImGuiBackendBridge/ImGuiBackendBridge.md

1.7 KiB
Raw Blame History

ImGuiBackendBridge

命名空间: XCEngine::Editor::UI

类型: class

源文件: editor/src/UI/ImGuiBackendBridge.h

描述: 封装 Dear ImGui Win32 + D3D12 backend 的初始化、逐帧驱动和窗口消息桥接。

概述

ImGuiBackendBridge 是编辑器 UI 栈里很关键但很底层的一环。
它不创建 ImGui context也不负责布局而是把现有 context 接到具体平台和渲染后端上。

当前核心职责:

  • 初始化 imgui_impl_win32
  • 初始化 imgui_impl_dx12
  • 每帧调用 backend 的 NewFrame
  • ImGui::GetDrawData() 提交到 D3D12 command list
  • 处理 Win32 消息转发

当前实现

  • Initialize() 需要 HWNDID3D12Device* 和 SRV heap
  • 默认 frame count 为 3
  • 默认 back buffer format 为 DXGI_FORMAT_R8G8B8A8_UNORM
  • HandleWindowMessage() 是静态 helper直接转发给 ImGui_ImplWin32_WndProcHandler

设计说明

把 backend 绑定层单独抽出来,有两个很现实的好处:

  • Application 不需要直接依赖第三方 backend 细节
  • 如果未来替换成别的渲染后端或宿主窗口层,修改点更集中

在商业级编辑器里这一层通常都存在即使名字不同本质上也是“UI 平台绑定桥”。

当前限制

  • 当前明确绑定 Win32 + D3D12
  • 没有重复初始化保护之外的更复杂状态机
  • 不负责 ImGui context 生命周期,那部分由 ImGuiSession 管理

相关文档