111 lines
2.8 KiB
Markdown
111 lines
2.8 KiB
Markdown
# 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 学习和工程化演进的基础骨架,适合按功能模块逐步扩展。
|