1.7 KiB
1.7 KiB
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()需要HWND、ID3D12Device*和 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管理