1.7 KiB
1.7 KiB
D3D12WindowRenderer::Initialize / Shutdown
命名空间: XCEngine::Editor::Platform
类型: methods
源文件: editor/src/Platform/D3D12WindowRenderer.h
签名
bool Initialize(HWND hwnd, int width, int height);
void Shutdown();
作用
初始化或释放编辑器主窗口使用的 D3D12 设备、交换链、命令队列、命令列表、SRV heap 和 back buffer 视图。
当前实现行为
Initialize(...)
- 会先调用
Shutdown(),确保旧状态完全释放。 - 当前只有在以下条件满足时才继续:
hwnd非空width > 0height > 0
- 然后依次创建并校验:
RHIDevice,类型固定为D3D12Directcommand queueDirectcommand list- swap chain,buffer count 固定为
3 - shader-visible SRV descriptor pool,descriptor count 固定为
64
commandList初始化后会先Close()一次。- 成功创建 SRV heap 后,会调用
RecreateBackBufferViews()为所有 swap chain back buffer 创建 RTV。 - 任一阶段失败都会调用
Shutdown()回滚,并返回false。
Shutdown()
- 会先调用
WaitForGpuIdle(),再释放 back buffer views。 - 然后按顺序释放:
m_srvPoolm_swapChainm_commandListm_commandQueuem_device
- 最后清空窗口句柄、尺寸和 SRV descriptor size。
当前实现边界
- 当前对象自己持有 RHI 抽象层对象,而不是直接持有裸
ID3D12CommandAllocator或IDXGISwapChain3成员。 - 它是编辑器宿主窗口级渲染器,不是引擎通用 renderer。