Files
XCEngine/docs/api/XCEngine/Editor/Platform/D3D12WindowRenderer/D3D12WindowRenderer.md

62 lines
1.8 KiB
Markdown
Raw Normal View History

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)