4d13d8df8948b533375b6f94155a23baab07d027
核心变更: - 新增 d3d12_texture 和 d3d12_render_texture 类 - 新增 d3d12_texture_init_info 结构,支持三种资源创建方式 - 新增 D3D12Helpers.h,提供堆属性辅助结构 - 改用 utl::free_list 管理 surface,解决重复释放问题 - 为 d3d12_surface 添加移动语义,支持撕裂检测 文档完善: - 为 FreeList.h 和 Vector.h 添加完整 Doxygen 中文注释 - 更新 D3D12 学习 Wiki,添加 SRV、资源创建方式、纹理资源类章节 - 新增变更记录文档
DX12(DX12 基础框架)
DX12 是一个面向 Windows 平台的 C++17 引擎学习工程,采用 Engine 静态库 + EngineTest 可执行程序 的结构,用于搭建和演进 DirectX 12 图形程序的基础工程能力。
1. 项目目标
- 提供清晰的引擎分层结构,便于学习与迭代
- 用最小可运行框架承载窗口、组件、内容与测试系统
- 为后续 DX12 功能扩展提供稳定入口
2. 目录与工程结构
FeatureExtractDemo.sln:Visual Studio 解决方案Engine/:核心引擎静态库工程EngineTest/:测试程序与主循环ContentTools/:内容工具工程(模型/几何处理相关)packages/dxCompiler/:DXC 依赖文件docs/:架构分析文档
3. 模块说明
Engine
Common/:公共类型、基础定义与通用头Components/:Entity / Transform / Script 组件系统Content/:内容加载与运行时转换Platform/:Win32 窗口与平台层封装Graphics/:图形接口入口Utilities/:数学、容器、IO 等工具模块Core/:引擎核心流程代码
EngineTest
Main.cpp:应用入口与 Win32 消息循环Test.h:测试基类与基础计时工具Lights.cpp、RenderItem.cpp、ShaderComponents.*:测试样例逻辑Test*.h、Test*.hlsl:测试配置与着色器样例
ContentTools
- 几何生成、模型导入相关工具模块
4. 构建关系
Engine为静态库项目(ConfigurationType = StaticLibrary)EngineTest依赖Engine并链接engine.lib- 主要配置:
Debug|x64、Release|x64、DebugEditor|x64、ReleaseEditor|x64
5. 开发环境
- Windows 10/11 x64
- Visual Studio 2022(MSVC v143)
- C++17
- Windows SDK 10.x
6. 快速开始
- 使用 Visual Studio 2022 打开
FeatureExtractDemo.sln - 选择
x64 + Debug配置 - 构建解决方案
- 将
EngineTest设为启动项目并运行
运行时说明:
EngineTest的预构建事件会将packages/dxCompiler/dxcompiler.dll复制到输出目录- 程序启动时会自动切换工作目录到可执行文件路径
7. 测试开关
在 EngineTest/Test.h 中可通过宏切换测试入口:
TEST_ENTITY_COMPONENTSTEST_WINDOW_COMPONENTSTEST_RENDERER
8. 代码约定
- 平台相关实现集中在
Platform/ - 业务逻辑尽量通过组件与 API 层解耦
- 图形接口通过
Graphics入口统一抽象 - 建议按模块拆分提交,便于回溯与调试
9. 后续扩展建议
- 完善
Graphics接口与资源生命周期管理 - 逐步补齐渲染通道、资源系统与 shader 管线
- 增加渲染诊断与调试辅助能力
- 细化测试场景并整理测试入口
这个仓库定位为 DX12 学习和工程化演进的基础骨架,适合按功能模块逐步扩展。
Description
Languages
C++
97.7%
HLSL
2%
C
0.3%