Files
DX12/README.md
2026-03-19 18:27:49 +08:00

111 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FeatureExtractDemoDX12 基础框架)
FeatureExtractDemo 是一个面向 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 2022MSVC 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 学习和工程化演进的基础骨架,适合按功能模块逐步扩展。