# 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. 快速开始

1. 使用 Visual Studio 2022 打开 `FeatureExtractDemo.sln`
2. 选择 `x64 + Debug` 配置
3. 构建解决方案
4. 将 `EngineTest` 设为启动项目并运行

运行时说明：

- `EngineTest` 的预构建事件会将 `packages/dxCompiler/dxcompiler.dll` 复制到输出目录
- 程序启动时会自动切换工作目录到可执行文件路径

---

## 7. 测试开关

在 `EngineTest/Test.h` 中可通过宏切换测试入口：

- `TEST_ENTITY_COMPONENTS`
- `TEST_WINDOW_COMPONENTS`
- `TEST_RENDERER`

---

## 8. 代码约定

- 平台相关实现集中在 `Platform/`
- 业务逻辑尽量通过组件与 API 层解耦
- 图形接口通过 `Graphics` 入口统一抽象
- 建议按模块拆分提交，便于回溯与调试

---

## 9. 后续扩展建议

1. 完善 `Graphics` 接口与资源生命周期管理
2. 逐步补齐渲染通道、资源系统与 shader 管线
3. 增加渲染诊断与调试辅助能力
4. 细化测试场景并整理测试入口

---

这个仓库定位为 DX12 学习和工程化演进的基础骨架，适合按功能模块逐步扩展。
