From fa3e48b0fc6aadf1eed59a74d351868063bf97d5 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Fri, 13 Mar 2026 20:38:32 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README.md=E5=8F=8D?= =?UTF-8?q?=E6=98=A0=E6=96=B0=E7=9A=84=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 187 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 105 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index 4696d01f..f507dbf0 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,69 @@ # XCEngine -基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和 Unity 风格编辑器 UI。 +基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和核心模块单元测试。 ## 项目概述 -XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含多个独立演示项目(MVS - Multiple Version Samples)。 +XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含核心库和单元测试。 ## 技术栈 - **渲染 API**: DirectX 12 - **语言**: C++17 - **构建系统**: CMake -- **UI 框架**: ImGui +- **测试框架**: Google Test ## 项目结构 ``` XCEngine/ -├── MVS/ # 多个示例版本 -│ ├── HelloEarth/ # 基础渲染示例 -│ │ ├── main.cpp # 程序入口 -│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心 -│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件 -│ │ ├── Utils.cpp/h # 工具函数 -│ │ ├── stbi/ # 图像加载库 -│ │ └── Res/ # 资源文件 -│ │ ├── Shader/ # HLSL 着色器 -│ │ ├── Model/ # 模型文件 -│ │ └── Image/ # 纹理图片 +├── engine/ # 核心引擎库 +│ ├── include/XCEngine/ +│ │ ├── Containers/ # 容器模块 +│ │ │ ├── String.h # 字符串类 +│ │ │ ├── Array.h # 动态数组 +│ │ │ └── HashMap.h # 哈希表 +│ │ ├── Memory/ # 内存管理模块 +│ │ │ ├── Allocator.h # 分配器接口 +│ │ │ ├── LinearAllocator.h # 线性分配器 +│ │ │ ├── PoolAllocator.h # 内存池分配器 +│ │ │ ├── ProxyAllocator.h # 代理分配器 +│ │ │ └── MemoryManager.h # 内存管理器 +│ │ ├── Threading/ # 线程模块 +│ │ │ ├── Thread.h # 线程类 +│ │ │ ├── Mutex.h # 互斥锁 +│ │ │ ├── SpinLock.h # 自旋锁 +│ │ │ ├── ReadWriteLock.h # 读写锁 +│ │ │ ├── Task.h # 任务基类 +│ │ │ ├── LambdaTask.h # Lambda任务 +│ │ │ ├── TaskGroup.h # 任务组 +│ │ │ ├── TaskSystem.h # 任务系统 +│ │ │ └── TaskSystemConfig.h # 任务系统配置 +│ │ ├── Math/ # 数学库 +│ │ │ ├── Vector.h +│ │ │ ├── Matrix.h +│ │ │ ├── Quaternion.h +│ │ │ └── ... +│ │ └── Core/ # 核心模块 │ │ -│ ├── VolumeRenderer/ # 体积渲染器 -│ │ ├── main.cpp # 主程序入口 -│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心渲染 -│ │ ├── NanoVDBLoader.cpp/h # NanoVDB 体积数据加载 -│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件 -│ │ ├── Utils.cpp/h # 工具函数 -│ │ ├── stbi/ # 图像加载库 -│ │ ├── CMakeLists.txt # CMake 构建配置 -│ │ ├── Res/ # 资源文件 -│ │ │ ├── Shader/ # HLSL 着色器 -│ │ │ ├── Model/ # 模型文件 -│ │ │ ├── Image/ # 纹理图片 -│ │ │ └── NanoVDB/ # NanoVDB 体积数据 -│ │ └── README.md # 详细文档 -│ │ -│ └── ui/ # Unity 风格编辑器 UI -│ ├── src/ -│ │ ├── main.cpp # 程序入口 -│ │ ├── Application.cpp/h # 应用主类 -│ │ ├── Theme.cpp/h # 主题系统 -│ │ ├── Core/ # 核心类 -│ │ ├── Managers/ # 管理系统 -│ │ │ ├── LogSystem # 日志系统 -│ │ │ ├── ProjectManager # 项目管理 -│ │ │ └── SceneManager # 场景管理 -│ │ └── panels/ # UI 面板 -│ │ ├── HierarchyPanel # 层级面板 -│ │ ├── InspectorPanel # 检查器面板 -│ │ ├── SceneViewPanel # 场景视图 -│ │ ├── GameViewPanel # 游戏视图 -│ │ ├── ProjectPanel # 项目面板 -│ │ ├── ConsolePanel # 控制台面板 -│ │ └── MenuBar # 菜单栏 -│ ├── bin/Release/ # 输出目录 -│ └── CMakeLists.txt +│ └── src/ # 实现文件 +│ ├── Containers/ +│ ├── Memory/ +│ ├── Threading/ +│ └── Math/ │ -└── docs/ # 设计文档 - ├── XCVolumeRenderer渲染引擎架构设计.md - ├── XCGameEngine架构设计.md - └── ... +├── tests/ # 单元测试 +│ ├── containers/ # 容器测试 +│ ├── memory/ # 内存管理测试 +│ ├── threading/ # 线程模块测试 +│ ├── core/ # 核心模块测试 +│ └── math/ # 数学库测试 +│ +├── docs/ # 设计文档 +│ ├── XCEngine渲染引擎架构设计.md +│ └── ... +│ +└── build/ # 构建目录 ``` ## 快速开始 @@ -81,45 +76,73 @@ XCEngine/ ### 构建项目 -每个子项目都可以独立构建,以 HelloEarth 为例: - ```bash -cd MVS/HelloEarth +# 创建构建目录 mkdir build && cd build -cmake .. -cmake --build . --config Release + +# 配置 CMake +cmake .. -A x64 + +# 编译 +cmake --build . --config Debug ``` -## 各模块说明 +### 运行测试 -### HelloEarth +```bash +cd build/tests +ctest -C Debug --output-on-failure +``` -基础的 DirectX 12 渲染示例,展示如何: -- 初始化 DirectX 12 渲染环境 -- 加载和渲染静态网格 -- 使用几何着色器 -- 纹理映射 -- 常量缓冲区更新 +或直接运行测试可执行文件: -### VolumeRenderer +```bash +build/tests/containers/Debug/xcengine_containers_tests.exe +build/tests/memory/Debug/xcengine_memory_tests.exe +build/tests/threading/Debug/xcengine_threading_tests.exe +``` -基于 NanoVDB 的体积渲染器,支持: -- NanoVDB 格式体积数据加载 -- 光线步进(Ray Marching)渲染 -- HDDA 空间跳跃加速 -- 体积阴影 -- 多种渲染参数配置 +## 核心模块说明 -### ui +### Containers(容器) -Unity 风格的编辑器 UI,包含: -- 层级面板(Hierarchy Panel) -- 检查器面板(Inspector Panel) -- 场景视图(Scene View) -- 游戏视图(Game View) -- 项目面板(Project Panel) -- 控制台面板(Console Panel) -- 日志系统 +- **String**: 动态字符串类,支持常用字符串操作 +- **Array**: 模板动态数组,自动内存管理 +- **HashMap**: 模板哈希表,支持自定义键类型 + +### Memory(内存管理) + +- **IAllocator**: 内存分配器接口 +- **LinearAllocator**: 线性分配器,适合帧分配 +- **PoolAllocator**: 内存池分配器,适合固定大小对象 +- **ProxyAllocator**: 代理分配器,跟踪内存使用统计 +- **MemoryManager**: 全局内存管理器 + +### Threading(线程) + +- **Thread**: 线程封装类 +- **Mutex**: 互斥锁 +- **SpinLock**: 自旋锁,适合短临界区 +- **ReadWriteLock**: 读写锁 +- **TaskSystem**: 多线程任务系统 +- **Task/TaskGroup**: 任务和任务组管理 + +### Math(数学库) + +- **Vector**: 向量运算 +- **Matrix**: 矩阵运算 +- **Quaternion**: 四元数 +- **Transform**: 变换 +- **Color**: 颜色 +- **Frustum**: 视锥体 +- **Bounds**: 边界框 + +## 测试覆盖 + +- Containers: 51+ 测试用例 +- Memory: 19 测试用例 +- Threading: 13 测试用例 +- Math: 通过 ## 文档