1.8 KiB
1.8 KiB
ImGuiBackendBridge::Initialize / Shutdown
命名空间: XCEngine::Editor::UI
类型: methods
源文件: editor/src/UI/ImGuiBackendBridge.h
签名
void Initialize(
HWND hwnd,
ID3D12Device* device,
ID3D12CommandQueue* commandQueue,
ID3D12DescriptorHeap* srvHeap,
UINT srvDescriptorSize,
UINT srvDescriptorCount,
int frameCount = 3,
DXGI_FORMAT backBufferFormat = DXGI_FORMAT_R8G8B8A8_UNORM);
void Shutdown();
作用
初始化或释放 Dear ImGui 的 Win32 + D3D12 backend 绑定状态,并接管一段 SRV descriptor heap 用于 ImGui 纹理显示。
当前实现行为
Initialize(...)
- 会缓存:
m_srvHeapm_srvDescriptorSizem_srvCpuStartm_srvGpuStart
- 然后按
srvDescriptorCount初始化m_srvUsage,用于跟踪该 heap 片段的 descriptor 使用情况。 - 先调用
ImGui_ImplWin32_Init(hwnd)。 - 再构造
ImGui_ImplDX12_InitInfo并调用ImGui_ImplDX12_Init(...)。 - 当前把自定义的 SRV 分配和释放回调挂进了:
SrvDescriptorAllocFnSrvDescriptorFreeFn
- 成功后把
m_initialized设为true。
Shutdown()
- 如果当前尚未初始化,直接返回。
- 否则依次调用:
ImGui_ImplDX12_Shutdown()ImGui_ImplWin32_Shutdown()
- 然后清空 descriptor 使用表与相关 heap 指针、重置 upload fence,并把
m_initialized设回false。
当前实现边界
- 该类型不负责 ImGui context 生命周期;那部分由 ImGuiSession 管理。
- 当前后端明确绑定 Win32 + D3D12。