feat: implement descriptor heap with thread-safe allocation

D3D12 Resources:
- Add descriptor_handle struct with CPU/GPU handles
- Add descriptor_heap class for descriptor management
- Implement allocate() and free() methods
- Add mutex for thread-safe access
- Support all D3D12 descriptor heap types

D3D12 Core:
- Add device() function to expose main device
- Add release() template function for COM objects

Documentation:
- Add changelog for descriptor heap implementation
- Update D3D12 Wiki with descriptor heap section
- Mark descriptor heap task as completed
This commit is contained in:
SpecialX
2026-03-30 14:03:16 +08:00
parent f1584ec3c6
commit 54916b0ac6
10 changed files with 495 additions and 13 deletions

View File

@@ -1,4 +1,5 @@
#pragma once
#include "D3D12CommonHeader.h"
/**
* @brief Direct3D 12 核心类
@@ -22,6 +23,12 @@ void shutdown();
*/
void render();
/**
* @brief 通用资源释放模板函数
* @details 用于安全释放 DirectX COM 对象,检查空指针后调用 Release 并置空
* @tparam T COM 接口类型
*/
template<typename T>
constexpr void release(T*& resource)
{
@@ -32,4 +39,11 @@ constexpr void release(T*& resource)
}
}
/**
* @brief 获取 Direct3D 12 设备
* @details 返回 Direct3D 12 设备的智能指针
* @return ID3D12Device* Direct3D 12 设备的智能指针
*/
ID3D12Device *const device();
}// namespace XEngine::graphics::d3d12