2026-03-27 14:40:29 +08:00
|
|
|
|
# D3D12WindowRenderer
|
|
|
|
|
|
|
|
|
|
|
|
**命名空间**: `XCEngine::Editor::Platform`
|
|
|
|
|
|
|
|
|
|
|
|
**类型**: `class`
|
|
|
|
|
|
|
|
|
|
|
|
**源文件**: `editor/src/Platform/D3D12WindowRenderer.h`
|
|
|
|
|
|
|
|
|
|
|
|
**描述**: 编辑器专用的 D3D12 窗口渲染器,负责交换链、RTV/SRV 堆、命令列表和 ImGui 绘制提交。
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
`D3D12WindowRenderer` 解决的是“编辑器 UI 窗口本身怎么被呈现到屏幕”这个问题。
|
|
|
|
|
|
|
|
|
|
|
|
它当前自己管理:
|
|
|
|
|
|
|
2026-04-08 16:07:03 +08:00
|
|
|
|
- `RHIDevice`
|
|
|
|
|
|
- `RHICommandQueue`
|
|
|
|
|
|
- `RHICommandList`
|
|
|
|
|
|
- `RHISwapChain`
|
|
|
|
|
|
- shader-visible SRV descriptor heap
|
|
|
|
|
|
- back buffer render target views
|
|
|
|
|
|
|
|
|
|
|
|
## 公开 API
|
|
|
|
|
|
|
|
|
|
|
|
### 生命周期
|
|
|
|
|
|
|
|
|
|
|
|
- [Initialize / Shutdown](Initialize-And-Shutdown.md)
|
|
|
|
|
|
|
|
|
|
|
|
### 帧切换
|
|
|
|
|
|
|
|
|
|
|
|
- [Resize / BeginFrame](Resize-And-BeginFrame.md)
|
|
|
|
|
|
|
|
|
|
|
|
### 渲染与上下文
|
|
|
|
|
|
|
|
|
|
|
|
- [Render / GetRenderContext](Render-And-RenderContext.md)
|
|
|
|
|
|
|
|
|
|
|
|
### 设备与交换链访问
|
|
|
|
|
|
|
|
|
|
|
|
- [Device And SwapChain Accessors](Device-And-SwapChain-Accessors.md)
|
2026-03-27 14:40:29 +08:00
|
|
|
|
|
|
|
|
|
|
## 当前实现说明
|
|
|
|
|
|
|
|
|
|
|
|
- `Initialize(hwnd, width, height)` 会创建设备与渲染目标。
|
2026-04-08 16:07:03 +08:00
|
|
|
|
- `Render(imguiBackend, clearColor)` 会完成 back buffer 状态切换、清屏、ImGui draw data 提交和 present。
|
2026-03-27 14:40:29 +08:00
|
|
|
|
- `Resize()` 会重建 back buffer RTV。
|
|
|
|
|
|
- `GetDevice()` / `GetSrvHeap()` 为 ImGui backend 提供初始化依赖。
|
2026-04-08 16:07:03 +08:00
|
|
|
|
- `beforeUiRender` 回调允许上层先用同一份 `RenderContext` 完成 viewport 等非 ImGui 渲染。
|
2026-03-27 14:40:29 +08:00
|
|
|
|
|
|
|
|
|
|
## 当前实现边界
|
|
|
|
|
|
|
2026-04-08 16:07:03 +08:00
|
|
|
|
- 当前是编辑器宿主级窗口渲染器,但底层资源仍然通过引擎 RHI 抽象对象创建与访问。
|
|
|
|
|
|
- 当前资源释放与错误处理都比较直接,没有更高层的窗口 renderer 状态对象。
|
|
|
|
|
|
- 当前实现固定面向 D3D12,不是可替换的多后端窗口壳层。
|
2026-03-27 14:40:29 +08:00
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [Platform](../Platform.md)
|
|
|
|
|
|
- [Application](../../Application/Application.md)
|
|
|
|
|
|
- [Win32EditorHost](../Win32EditorHost/Win32EditorHost.md)
|
2026-04-08 16:07:03 +08:00
|
|
|
|
- [ImGuiBackendBridge](../../UI/ImGuiBackendBridge/ImGuiBackendBridge.md)
|