Files
XCEngine/.trae/documents/XCEngine项目熟悉计划.md
ssdfasd 008fb98dee refactor(editor): Complete architecture refactoring
- SceneManager: remove singleton, use dependency injection via EditorContext
- SelectionManager: already interface-based via ISelectionManager
- Panel: now receives IEditorContext for accessing managers
- HierarchyPanel: migrated to use IEditorContext instead of singletons
- Add ISceneManager interface and SceneManagerImpl
- EditorContextImpl: holds all editor subsystems

Architecture now follows dependency injection pattern:
Application -> EditorContext -> SceneManager/SelectionManager
EditorLayer -> Panels (receive context via SetContext)

All Manager singletons removed: EditorSceneManager::Get(), SelectionManager::Get()
2026-03-25 15:51:27 +08:00

336 lines
9.2 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.
# XCEngine 项目熟悉计划
## 项目概述
XCEngine 是一个正在开发中的模块化 C++ 游戏引擎,采用 RHIRender Hardware Interface抽象层设计支持 DirectX 12 和 OpenGL 4.6+ 多种渲染 API。
### 技术栈
- **语言**: C++17
- **渲染 API**: DirectX 12, OpenGL 4.6+
- **构建系统**: CMake 3.15+
- **测试框架**: Google Test
- **UI**: ImGui用于编辑器
---
## 项目结构
```
XCEngine/
├── engine/ # 核心引擎库(静态库)
│ ├── include/XCEngine/ # 头文件
│ │ ├── Audio/ # 音频系统
│ │ ├── Components/ # 组件系统
│ │ ├── Core/ # 核心基础模块
│ │ ├── Debug/ # 调试与日志
│ │ ├── Input/ # 输入模块
│ │ ├── Memory/ # 内存管理
│ │ ├── Platform/ # 平台抽象层
│ │ ├── RHI/ # 渲染硬件接口
│ │ ├── Resources/ # 资源管理
│ │ ├── Scene/ # 场景管理
│ │ └── Threading/ # 线程系统
│ ├── src/ # 实现文件
│ └── third_party/ # 第三方库
├── editor/ # 编辑器 UI 应用程序
│ └── src/ # 编辑器源代码
├── tests/ # 单元测试
│ ├── math/ # 数学库测试
│ ├── containers/ # 容器测试
│ ├── memory/ # 内存管理测试
│ ├── threading/ # 线程模块测试
│ ├── debug/ # 调试模块测试
│ ├── core/ # 核心模块测试
│ ├── Scene/ # 场景测试
│ ├── Resources/ # 资源管理测试
│ ├── Input/ # 输入模块测试
│ └── RHI/ # RHI 抽象层测试
├── mvs/ # 示例程序
│ ├── D3D12/ # DirectX 12 渲染示例
│ ├── OpenGL/ # OpenGL 渲染示例
│ ├── VolumeRenderer/ # 体积渲染器
│ ├── RenderDoc/ # RenderDoc 集成示例
│ └── ui/ # 编辑器 UI 示例
└── docs/ # 文档
├── api/ # API 文档
└── plan/ # 开发计划与架构设计
```
---
## 核心模块详解
### 1. Core核心基础
位置: `engine/include/XCEngine/Core/`
| 子模块 | 说明 |
|--------|------|
| Types.h | 基础类型别名int8, uint32 等) |
| RefCounted.h | 引用计数基类 |
| SmartPtr.h | 智能指针Ref, UniqueRef |
| Event.h | 事件系统,支持订阅/发布模式 |
| FileWriter.h | 文件写入工具 |
| Layer.h/LayerStack.h | 层级与层级栈管理 |
**Core/Math 数学库**:
- Vector2/3/4 - 向量运算
- Matrix3/4 - 矩阵运算
- Quaternion - 四元数
- Transform - 变换
- Color - 颜色
- Rect - 矩形
- Sphere/Box/Plane/Ray - 几何体
- AABB/Bounds/Frustum - 包围体
**Core/Containers 容器**:
- Array.h - 动态数组
- String.h - 字符串类
- HashMap.h - 哈希表
**Core/Asset 资源系统核心**:
- IResource.h - 资源接口基类
- ResourceTypes.h - 资源类型定义
- ResourceHandle.h - 资源句柄
- ResourceManager.h - 全局资源管理器
- ResourceCache.h - 资源缓存
- AsyncLoader.h - 异步资源加载器
**Core/IO 资源 IO 系统**:
- IResourceLoader.h - 资源加载器接口
- ResourceFileSystem.h - 资源文件系统
- FileArchive.h - 文件归档
### 2. RHI渲染硬件接口
位置: `engine/include/XCEngine/RHI/`
这是引擎的核心抽象层,借鉴 Unity SRP 架构设计。
**设计原则**:
- 求同存异:提取各 API 共同特性
- 分层抽象:核心抽象层 → 后端实现层 → 平台适配层
- 特性降级:后端不支持的特性优雅降级
**抽象接口**:
| 接口 | 说明 |
|------|------|
| RHIDevice | 渲染设备抽象 |
| RHICommandQueue | 命令队列抽象 |
| RHICommandList | 命令列表抽象 |
| RHISwapChain | 交换链抽象 |
| RHIPipelineState | 渲染管线状态抽象 |
| RHIBuffer/RHITexture | 资源抽象 |
| RHIShader | 着色器抽象 |
| RHISampler | 采样器抽象 |
| RHIFence | 同步栅栏抽象 |
| RHIDescriptorPool | 描述符池抽象 |
| RHIRenderPass | 渲染通道抽象 |
| RHIFramebuffer | 帧缓冲抽象 |
**后端实现**:
- `RHI/D3D12/` - DirectX 12 后端
- `RHI/OpenGL/` - OpenGL 4.6+ 后端
### 3. Components组件系统
位置: `engine/include/XCEngine/Components/`
采用类似 Unity 的组件架构:
| 组件 | 说明 |
|------|------|
| Component.h | 组件基类,提供生命周期管理 |
| GameObject.h | 游戏对象,支持层级结构 |
| TransformComponent.h | 变换组件 |
| AudioSourceComponent.h | 音频源组件 |
| AudioListenerComponent.h | 音频监听器组件 |
### 4. Scene场景管理
位置: `engine/include/XCEngine/Scene/`
- **Scene.h** - 场景类,管理场景内的所有游戏对象
- **SceneManager.h** - 场景管理器,处理场景切换
### 5. Audio音频系统
位置: `engine/include/XCEngine/Audio/`
| 模块 | 说明 |
|------|------|
| AudioSystem.h | 音频系统主类 |
| AudioMixer.h | 音频混音器 |
| HRTF.h | 头部相关传输函数,空间音频 |
| FFTFilter.h | 快速傅里叶变换滤波器 |
| Reverbation.h | 混响效果 |
| Equalizer.h | 音频均衡器 |
| IAudioBackend.h | 音频后端接口 |
| WindowsAudioBackend.h | Windows WASAPI 后端 |
### 6. Memory内存管理
位置: `engine/include/XCEngine/Memory/`
| 模块 | 说明 |
|------|------|
| Allocator.h | 内存分配器接口 |
| LinearAllocator.h | 线性分配器,适合帧分配 |
| PoolAllocator.h | 内存池分配器,适合固定大小对象 |
| ProxyAllocator.h | 代理分配器,跟踪内存使用统计 |
| MemoryManager.h | 全局内存管理器 |
### 7. Threading线程系统
位置: `engine/include/XCEngine/Threading/`
| 模块 | 说明 |
|------|------|
| Thread.h | 线程封装类 |
| Mutex.h | 互斥锁 |
| SpinLock.h | 自旋锁 |
| ReadWriteLock.h | 读写锁 |
| TaskSystem.h | 多线程任务系统 |
| Task.h/TaskGroup.h | 任务和任务组管理 |
### 8. Debug调试与日志
位置: `engine/include/XCEngine/Debug/`
| 模块 | 说明 |
|------|------|
| Logger.h | 分级日志系统 |
| ConsoleLogSink.h | 控制台日志输出 |
| FileLogSink.h | 文件日志输出 |
| Profiler.h | 性能分析工具 |
| RenderDocCapture.h | RenderDoc 帧捕获集成 |
### 9. Resources资源管理
位置: `engine/include/XCEngine/Resources/`
按类型分目录管理:
- **Texture/** - 纹理资源
- **Mesh/** - 网格资源
- **Shader/** - 着色器资源
- **Material/** - 材质资源
- **AudioClip/** - 音频资源
### 10. Platform平台抽象层
位置: `engine/include/XCEngine/Platform/`
跨平台抽象接口:
- IPlatform - 平台接口
- IWindow - 窗口接口
- IFileSystem - 文件系统接口
- IClock - 时钟接口
- Windows/ - Windows 平台实现
### 11. Input输入模块
位置: `engine/include/XCEngine/Input/`
- InputManager - 输入管理器
- InputModule - 输入模块基类
- InputEvent - 输入事件定义
- InputAxis - 输入轴配置
---
## 渲染架构
### 渲染流程
```
Scene → CullingSystem → RenderQueue → Renderer → GPU
↓ ↓
CullingResults CommandList
```
### 关键概念(借鉴 Unity SRP
1. **CullingResults** - 剔除结果
2. **RenderPipeline** - 渲染管线
3. **RenderQueue** - 渲染队列
4. **ScriptableRenderContext** - 渲染上下文
5. **LightManager** - 光照管理
6. **ShadowAtlas** - 阴影图集
---
## 构建与测试
### 构建项目
```bash
mkdir build && cd build
cmake .. -A x64
cmake --build . --config Debug
```
### 运行测试
```bash
cd build/tests
ctest -C Debug --output-on-failure
```
---
## 学习路径建议
### 第一阶段:核心基础
1. 阅读 `README.md` 了解项目概述
2. 学习 Core 模块Types, Event, SmartPtr
3. 学习 Math 数学库
4. 学习 Containers 容器
### 第二阶段:系统模块
1. 学习 Memory 内存管理
2. 学习 Threading 线程系统
3. 学习 Debug 日志系统
4. 学习 Platform 平台抽象
### 第三阶段:渲染系统
1. 学习 RHI 抽象层设计
2. 学习 D3D12 后端实现
3. 学习 OpenGL 后端实现
4. 学习渲染管线架构
### 第四阶段:高级功能
1. 学习 Scene 场景管理
2. 学习 Components 组件系统
3. 学习 Resources 资源管理
4. 学习 Audio 音频系统
### 第五阶段:实践
1. 运行 mvs 中的示例程序
2. 阅读测试用例理解 API 用法
3. 尝试修改或扩展现有功能
---
## 关键文件索引
| 文件 | 说明 |
|------|------|
| README.md | 项目说明文档 |
| CMakeLists.txt | 根构建配置 |
| engine/CMakeLists.txt | 引擎库构建配置 |
| docs/plan/XCEngine渲染引擎架构设计.md | 渲染架构详细设计 |
| docs/api/main.md | API 文档入口 |
---
## 注意事项
1. 项目目前仅支持 Windows 平台
2. 需要 Visual Studio 2019 或更高版本
3. D3D12 后端需要 Windows 10/11
4. OpenGL 后端需要 OpenGL 4.6+ 支持