2026-03-13 15:07:03 +08:00
|
|
|
|
# XCEngine
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
基于 DirectX 12 的游戏引擎项目,支持体积渲染、跨平台渲染后端和核心模块单元测试。
|
2026-03-13 15:07:03 +08:00
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
XCEngine 是一个正在开发中的游戏引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 多种渲染 API。项目采用模块化设计,包含核心库和单元测试。
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
2026-03-17 22:39:59 +08:00
|
|
|
|
- **渲染 API**: DirectX 12, OpenGL 4.6+
|
2026-03-11 17:39:33 +08:00
|
|
|
|
- **语言**: C++17
|
|
|
|
|
|
- **构建系统**: CMake
|
2026-03-13 20:38:32 +08:00
|
|
|
|
- **测试框架**: Google Test
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
2026-03-13 15:07:03 +08:00
|
|
|
|
XCEngine/
|
2026-03-13 20:38:32 +08:00
|
|
|
|
├── engine/ # 核心引擎库
|
|
|
|
|
|
│ ├── include/XCEngine/
|
|
|
|
|
|
│ │ ├── Containers/ # 容器模块
|
|
|
|
|
|
│ │ │ ├── Array.h # 动态数组
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ │ │ ├── String.h # 字符串类
|
|
|
|
|
|
│ │ │ ├── HashMap.h # 哈希表
|
|
|
|
|
|
│ │ │ └── Containers.h # 模块统一头文件
|
|
|
|
|
|
│ │ ├── Core/ # 核心基础模块
|
|
|
|
|
|
│ │ │ ├── Types.h # 基础类型别名
|
|
|
|
|
|
│ │ │ ├── RefCounted.h # 引用计数基类
|
|
|
|
|
|
│ │ │ ├── SmartPtr.h # 智能指针
|
|
|
|
|
|
│ │ │ ├── Event.h # 事件系统
|
|
|
|
|
|
│ │ │ └── FileWriter.h # 文件写入
|
|
|
|
|
|
│ │ ├── Debug/ # 调试与日志模块
|
|
|
|
|
|
│ │ │ ├── Logger.h # 日志系统
|
|
|
|
|
|
│ │ │ ├── LogLevel.h # 日志级别
|
|
|
|
|
|
│ │ │ ├── LogCategory.h # 日志分类
|
|
|
|
|
|
│ │ │ ├── LogEntry.h # 日志条目
|
|
|
|
|
|
│ │ │ ├── ConsoleLogSink.h # 控制台输出
|
|
|
|
|
|
│ │ │ ├── FileLogSink.h # 文件输出
|
|
|
|
|
|
│ │ │ ├── ILogSink.h # 日志槽接口
|
|
|
|
|
|
│ │ │ ├── Debug.h # 调试宏
|
|
|
|
|
|
│ │ │ └── Profiler.h # 性能分析
|
|
|
|
|
|
│ │ ├── Math/ # 数学库
|
|
|
|
|
|
│ │ │ ├── Vector2.h # 二维向量
|
|
|
|
|
|
│ │ │ ├── Vector3.h # 三维向量
|
|
|
|
|
|
│ │ │ ├── Vector4.h # 四维向量
|
|
|
|
|
|
│ │ │ ├── Matrix3.h # 3x3 矩阵
|
|
|
|
|
|
│ │ │ ├── Matrix4.h # 4x4 矩阵
|
|
|
|
|
|
│ │ │ ├── Quaternion.h # 四元数
|
|
|
|
|
|
│ │ │ ├── Transform.h # 变换
|
|
|
|
|
|
│ │ │ ├── Color.h # 颜色
|
|
|
|
|
|
│ │ │ ├── Rect.h # 矩形
|
|
|
|
|
|
│ │ │ ├── Sphere.h # 球体
|
|
|
|
|
|
│ │ │ ├── Box.h # 盒子
|
|
|
|
|
|
│ │ │ ├── Plane.h # 平面
|
|
|
|
|
|
│ │ │ ├── Ray.h # 射线
|
|
|
|
|
|
│ │ │ ├── AABB.h # 轴对齐包围盒
|
|
|
|
|
|
│ │ │ ├── Bounds.h # 包围体
|
|
|
|
|
|
│ │ │ ├── Frustum.h # 视锥体
|
|
|
|
|
|
│ │ │ └── Math.h # 数学库统一头文件
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│ │ ├── Memory/ # 内存管理模块
|
|
|
|
|
|
│ │ │ ├── Allocator.h # 分配器接口
|
|
|
|
|
|
│ │ │ ├── LinearAllocator.h # 线性分配器
|
|
|
|
|
|
│ │ │ ├── PoolAllocator.h # 内存池分配器
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ │ │ ├── ProxyAllocator.h # 代理分配器
|
|
|
|
|
|
│ │ │ └── MemoryManager.h # 全局内存管理器
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│ │ ├── Threading/ # 线程模块
|
|
|
|
|
|
│ │ │ ├── Thread.h # 线程类
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ │ │ ├── Mutex.h # 互斥锁
|
|
|
|
|
|
│ │ │ ├── SpinLock.h # 自旋锁
|
|
|
|
|
|
│ │ │ ├── ReadWriteLock.h # 读写锁
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│ │ │ ├── Task.h # 任务基类
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ │ │ ├── LambdaTask.h # Lambda 任务
|
|
|
|
|
|
│ │ │ ├── TaskGroup.h # 任务组
|
|
|
|
|
|
│ │ │ ├── TaskSystem.h # 任务系统
|
|
|
|
|
|
│ │ │ ├── TaskSystemConfig.h # 任务系统配置
|
|
|
|
|
|
│ │ │ └── Threading.h # 线程模块统一头文件
|
|
|
|
|
|
│ │ ├── Resources/ # 资源管理模块
|
|
|
|
|
|
│ │ │ ├── ResourceTypes.h # 资源类型定义
|
|
|
|
|
|
│ │ │ ├── IResource.h # 资源接口
|
|
|
|
|
|
│ │ │ ├── ResourceHandle.h # 资源句柄
|
|
|
|
|
|
│ │ │ ├── ResourceManager.h # 资源管理器
|
|
|
|
|
|
│ │ │ ├── ResourceCache.h # 资源缓存
|
|
|
|
|
|
│ │ │ ├── ResourcePackage.h # 资源包
|
|
|
|
|
|
│ │ │ ├── ResourceFileSystem.h # 资源文件系统
|
|
|
|
|
|
│ │ │ ├── ResourcePath.h # 资源路径
|
|
|
|
|
|
│ │ │ ├── FileArchive.h # 文件归档
|
|
|
|
|
|
│ │ │ ├── DependencyGraph.h # 依赖图
|
|
|
|
|
|
│ │ │ ├── ImportSettings.h # 导入设置基类
|
|
|
|
|
|
│ │ │ ├── IResourceLoader.h # 资源加载器接口
|
|
|
|
|
|
│ │ │ ├── AsyncLoader.h # 异步加载器
|
|
|
|
|
|
│ │ │ ├── Texture.h # 纹理资源
|
|
|
|
|
|
│ │ │ ├── TextureLoader.h # 纹理加载器
|
|
|
|
|
|
│ │ │ ├── TextureImportSettings.h # 纹理导入设置
|
|
|
|
|
|
│ │ │ ├── Mesh.h # 网格资源
|
|
|
|
|
|
│ │ │ ├── MeshLoader.h # 网格加载器
|
|
|
|
|
|
│ │ │ ├── MeshImportSettings.h # 网格导入设置
|
|
|
|
|
|
│ │ │ ├── Shader.h # 着色器资源
|
|
|
|
|
|
│ │ │ ├── ShaderLoader.h # 着色器加载器
|
|
|
|
|
|
│ │ │ ├── Material.h # 材质资源
|
|
|
|
|
|
│ │ │ ├── MaterialLoader.h # 材质加载器
|
|
|
|
|
|
│ │ │ ├── AudioClip.h # 音频资源
|
|
|
|
|
|
│ │ │ ├── AudioLoader.h # 音频加载器
|
|
|
|
|
|
│ │ │ └── Resources.h # 资源模块统一头文件
|
|
|
|
|
|
│ │ └── RHI/ # 渲染硬件接口抽象层
|
|
|
|
|
|
│ │ ├── RHITypes.h # RHI 类型定义
|
|
|
|
|
|
│ │ ├── RHIEnums.h # RHI 枚举
|
|
|
|
|
|
│ │ ├── RHICapabilities.h # 硬件能力查询
|
|
|
|
|
|
│ │ ├── RHIFactory.h # 设备工厂
|
|
|
|
|
|
│ │ ├── RHIDevice.h # 渲染设备抽象
|
|
|
|
|
|
│ │ ├── RHICommandQueue.h # 命令队列抽象
|
|
|
|
|
|
│ │ ├── RHICommandList.h # 命令列表抽象
|
|
|
|
|
|
│ │ ├── RHIBuffer.h # 缓冲区抽象
|
|
|
|
|
|
│ │ ├── RHITexture.h # 纹理抽象
|
|
|
|
|
|
│ │ ├── RHIShader.h # 着色器抽象
|
|
|
|
|
|
│ │ ├── RHISampler.h # 采样器抽象
|
|
|
|
|
|
│ │ ├── RHIFence.h # 同步栅栏抽象
|
|
|
|
|
|
│ │ ├── RHISwapChain.h # 交换链抽象
|
|
|
|
|
|
│ │ ├── RHIPipelineState.h # 管线状态抽象
|
|
|
|
|
|
│ │ ├── RHIPipelineLayout.h # 管线布局抽象
|
|
|
|
|
|
│ │ ├── RHIDescriptorPool.h # 描述符池抽象
|
|
|
|
|
|
│ │ ├── RHIDescriptor.h # 描述符抽象
|
|
|
|
|
|
│ │ ├── OpenGL/ # OpenGL 后端实现
|
|
|
|
|
|
│ │ │ ├── OpenGLDevice.h
|
|
|
|
|
|
│ │ │ ├── OpenGLCommandQueue.h
|
|
|
|
|
|
│ │ │ ├── OpenGLCommandList.h
|
|
|
|
|
|
│ │ │ ├── OpenGLSwapChain.h
|
|
|
|
|
|
│ │ │ ├── OpenGLPipelineState.h
|
|
|
|
|
|
│ │ │ ├── OpenGLBuffer.h
|
|
|
|
|
|
│ │ │ ├── OpenGLTexture.h
|
|
|
|
|
|
│ │ │ ├── OpenGLShader.h
|
|
|
|
|
|
│ │ │ ├── OpenGLSampler.h
|
|
|
|
|
|
│ │ │ ├── OpenGLFence.h
|
|
|
|
|
|
│ │ │ ├── OpenGLVertexArray.h
|
|
|
|
|
|
│ │ │ ├── OpenGLRenderTargetView.h
|
|
|
|
|
|
│ │ │ └── OpenGLDepthStencilView.h
|
|
|
|
|
|
│ │ └── D3D12/ # DirectX 12 后端实现
|
|
|
|
|
|
│ │ ├── D3D12Device.h
|
|
|
|
|
|
│ │ ├── D3D12CommandQueue.h
|
|
|
|
|
|
│ │ ├── D3D12CommandAllocator.h
|
|
|
|
|
|
│ │ ├── D3D12CommandList.h
|
|
|
|
|
|
│ │ ├── D3D12SwapChain.h
|
|
|
|
|
|
│ │ ├── D3D12PipelineState.h
|
|
|
|
|
|
│ │ ├── D3D12Buffer.h
|
|
|
|
|
|
│ │ ├── D3D12Texture.h
|
|
|
|
|
|
│ │ ├── D3D12Shader.h
|
|
|
|
|
|
│ │ ├── D3D12Sampler.h
|
|
|
|
|
|
│ │ ├── D3D12Fence.h
|
|
|
|
|
|
│ │ ├── D3D12DescriptorHeap.h
|
|
|
|
|
|
│ │ ├── D3D12RootSignature.h
|
|
|
|
|
|
│ │ ├── D3D12RenderTargetView.h
|
|
|
|
|
|
│ │ ├── D3D12DepthStencilView.h
|
|
|
|
|
|
│ │ ├── D3D12ShaderResourceView.h
|
|
|
|
|
|
│ │ ├── D3D12UnorderedAccessView.h
|
|
|
|
|
|
│ │ ├── D3D12ConstantBufferView.h
|
|
|
|
|
|
│ │ ├── D3D12QueryHeap.h
|
|
|
|
|
|
│ │ ├── D3D12Screenshot.h
|
|
|
|
|
|
│ │ ├── D3D12Types.h
|
|
|
|
|
|
│ │ ├── D3D12Enum.h
|
|
|
|
|
|
│ │ └── D3D12Common.h
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│ └── src/ # 实现文件
|
|
|
|
|
|
│ ├── Containers/
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ ├── Core/
|
|
|
|
|
|
│ ├── Debug/
|
|
|
|
|
|
│ ├── Math/
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│ ├── Memory/
|
|
|
|
|
|
│ ├── Threading/
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ ├── Resources/
|
2026-03-17 22:39:59 +08:00
|
|
|
|
│ └── RHI/
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│
|
|
|
|
|
|
├── tests/ # 单元测试
|
|
|
|
|
|
│ ├── containers/ # 容器测试
|
|
|
|
|
|
│ ├── memory/ # 内存管理测试
|
|
|
|
|
|
│ ├── threading/ # 线程模块测试
|
2026-03-13 20:40:12 +08:00
|
|
|
|
│ ├── core/ # 核心模块测试
|
2026-03-17 22:39:59 +08:00
|
|
|
|
│ ├── math/ # 数学库测试
|
|
|
|
|
|
│ └── RHI/ # RHI 抽象层测试
|
|
|
|
|
|
│ ├── OpenGL/ # OpenGL 后端测试
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ └── D3D12/ # D3D12 后端测试
|
2026-03-13 20:40:12 +08:00
|
|
|
|
│
|
2026-03-18 17:58:01 +08:00
|
|
|
|
├── mvs/ # 示例程序
|
2026-03-13 20:40:12 +08:00
|
|
|
|
│ ├── HelloEarth/ # 基础渲染示例
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ ├── VolumeRenderer/ # 体积渲染器(NanoVDB)
|
|
|
|
|
|
│ └── ui/ # 编辑器 UI
|
2026-03-13 20:38:32 +08:00
|
|
|
|
│
|
|
|
|
|
|
├── docs/ # 设计文档
|
2026-03-18 17:58:01 +08:00
|
|
|
|
│ ├── api/ # API 文档
|
|
|
|
|
|
│ └── plan/ # 开发计划与架构设计
|
2026-03-13 15:07:03 +08:00
|
|
|
|
│
|
2026-03-13 20:38:32 +08:00
|
|
|
|
└── build/ # 构建目录
|
2026-03-11 17:39:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
## 快速开始
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
### 前置要求
|
|
|
|
|
|
|
|
|
|
|
|
- Windows 10/11
|
|
|
|
|
|
- Visual Studio 2019 或更高版本
|
|
|
|
|
|
- CMake 3.15+
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
### 构建项目
|
|
|
|
|
|
|
2026-03-11 17:39:33 +08:00
|
|
|
|
```bash
|
2026-03-13 20:38:32 +08:00
|
|
|
|
# 创建构建目录
|
2026-03-11 17:39:33 +08:00
|
|
|
|
mkdir build && cd build
|
2026-03-13 20:38:32 +08:00
|
|
|
|
|
|
|
|
|
|
# 配置 CMake
|
|
|
|
|
|
cmake .. -A x64
|
|
|
|
|
|
|
|
|
|
|
|
# 编译
|
|
|
|
|
|
cmake --build . --config Debug
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 运行测试
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd build/tests
|
|
|
|
|
|
ctest -C Debug --output-on-failure
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或直接运行测试可执行文件:
|
|
|
|
|
|
|
|
|
|
|
|
```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
|
2026-03-11 17:39:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
## 核心模块说明
|
|
|
|
|
|
|
|
|
|
|
|
### Containers(容器)
|
|
|
|
|
|
|
|
|
|
|
|
- **String**: 动态字符串类,支持常用字符串操作
|
|
|
|
|
|
- **Array**: 模板动态数组,自动内存管理
|
|
|
|
|
|
- **HashMap**: 模板哈希表,支持自定义键类型
|
|
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
### Core(核心基础)
|
|
|
|
|
|
|
|
|
|
|
|
- **Types**: 基础类型别名(int8、uint32 等)
|
|
|
|
|
|
- **RefCounted**: 引用计数基类,支持多线程安全释放
|
|
|
|
|
|
- **SmartPtr**: 智能指针实现(Ref、UniqueRef)
|
|
|
|
|
|
- **Event**: 事件系统,支持订阅/发布模式
|
|
|
|
|
|
- **FileWriter**: 文件写入工具
|
|
|
|
|
|
|
|
|
|
|
|
### Debug(调试与日志)
|
|
|
|
|
|
|
|
|
|
|
|
- **Logger**: 分级日志系统(Info、Warning、Error)
|
|
|
|
|
|
- **ConsoleLogSink**: 控制台日志输出
|
|
|
|
|
|
- **FileLogSink**: 文件日志输出
|
|
|
|
|
|
- **Profiler**: 性能分析工具
|
|
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
### Memory(内存管理)
|
|
|
|
|
|
|
|
|
|
|
|
- **IAllocator**: 内存分配器接口
|
|
|
|
|
|
- **LinearAllocator**: 线性分配器,适合帧分配
|
|
|
|
|
|
- **PoolAllocator**: 内存池分配器,适合固定大小对象
|
|
|
|
|
|
- **ProxyAllocator**: 代理分配器,跟踪内存使用统计
|
|
|
|
|
|
- **MemoryManager**: 全局内存管理器
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
### Threading(线程)
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
- **Thread**: 线程封装类
|
|
|
|
|
|
- **Mutex**: 互斥锁
|
|
|
|
|
|
- **SpinLock**: 自旋锁,适合短临界区
|
|
|
|
|
|
- **ReadWriteLock**: 读写锁
|
|
|
|
|
|
- **TaskSystem**: 多线程任务系统
|
|
|
|
|
|
- **Task/TaskGroup**: 任务和任务组管理
|
2026-03-13 15:07:03 +08:00
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
### Math(数学库)
|
2026-03-12 01:58:17 +08:00
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
- **Vector2/3/4**: 向量运算
|
|
|
|
|
|
- **Matrix3/4**: 矩阵运算
|
2026-03-13 20:38:32 +08:00
|
|
|
|
- **Quaternion**: 四元数
|
2026-03-18 17:58:01 +08:00
|
|
|
|
- **Transform**: 变换(位姿)
|
2026-03-13 20:38:32 +08:00
|
|
|
|
- **Color**: 颜色
|
2026-03-18 17:58:01 +08:00
|
|
|
|
- **Rect**: 矩形
|
|
|
|
|
|
- **Sphere/Box/Plane**: 基本几何体
|
|
|
|
|
|
- **Ray**: 射线
|
|
|
|
|
|
- **AABB/Bounds**: 包围体
|
2026-03-13 20:38:32 +08:00
|
|
|
|
- **Frustum**: 视锥体
|
2026-03-18 17:58:01 +08:00
|
|
|
|
|
|
|
|
|
|
### Resources(资源管理)
|
|
|
|
|
|
|
|
|
|
|
|
- **ResourceManager**: 全局资源管理器,资源加载/卸载
|
|
|
|
|
|
- **ResourceCache**: 资源缓存,支持引用计数
|
|
|
|
|
|
- **ResourceHandle**: 资源句柄,安全引用资源
|
|
|
|
|
|
- **ResourcePackage**: 资源包批量管理
|
|
|
|
|
|
- **AsyncLoader**: 异步资源加载器
|
|
|
|
|
|
- **ImportSettings**: 资源导入设置(纹理/网格/材质)
|
|
|
|
|
|
- **IResourceLoader**: 资源加载器接口
|
|
|
|
|
|
- **Texture/Mesh/Shader/Material/AudioClip**: 各类资源类型
|
2026-03-13 15:07:03 +08:00
|
|
|
|
|
2026-03-17 22:39:59 +08:00
|
|
|
|
### RHI(渲染硬件接口)
|
|
|
|
|
|
|
|
|
|
|
|
XCEngine 采用 RHI(Render Hardware Interface)抽象层设计,支持多渲染后端。
|
|
|
|
|
|
|
|
|
|
|
|
#### 设计原则
|
|
|
|
|
|
|
|
|
|
|
|
- **求同存异**: 提取各 API 共同特性,统一抽象接口
|
|
|
|
|
|
- **分层抽象**: 核心抽象层 → 后端实现层 → 平台适配层
|
|
|
|
|
|
- **特性降级**: 后端不支持的特性优雅降级
|
|
|
|
|
|
- **底层逃逸**: 后端特有方法通过重载暴露
|
|
|
|
|
|
|
|
|
|
|
|
#### 抽象接口
|
|
|
|
|
|
|
|
|
|
|
|
- **RHIDevice**: 渲染设备抽象
|
|
|
|
|
|
- **RHICommandQueue**: 命令队列抽象
|
|
|
|
|
|
- **RHICommandList**: 命令列表抽象
|
|
|
|
|
|
- **RHISwapChain**: 交换链抽象
|
|
|
|
|
|
- **RHIPipelineState**: 渲染管线状态抽象
|
|
|
|
|
|
- **RHIBuffer/RHITexture**: 资源抽象
|
|
|
|
|
|
- **RHIShader**: 着色器抽象
|
|
|
|
|
|
- **RHISampler**: 采样器抽象
|
|
|
|
|
|
- **RHIFence**: 同步栅栏抽象
|
|
|
|
|
|
|
|
|
|
|
|
#### 后端实现
|
|
|
|
|
|
|
|
|
|
|
|
- **OpenGL 后端**: OpenGL 4.6+ 支持
|
|
|
|
|
|
- **D3D12 后端**: DirectX 12 支持
|
|
|
|
|
|
|
|
|
|
|
|
#### 测试覆盖
|
|
|
|
|
|
|
|
|
|
|
|
- OpenGL 后端: 41 个测试用例通过
|
|
|
|
|
|
- D3D12 后端: 编译通过
|
|
|
|
|
|
|
2026-03-13 20:38:32 +08:00
|
|
|
|
## 测试覆盖
|
2026-03-13 15:07:03 +08:00
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
| 模块 | 测试用例数 |
|
|
|
|
|
|
|------|-----------|
|
|
|
|
|
|
| Containers | 51+ |
|
|
|
|
|
|
| Memory | 19 |
|
|
|
|
|
|
| Threading | 13 |
|
|
|
|
|
|
| Math | 通过 |
|
|
|
|
|
|
| RHI (OpenGL) | 41 |
|
|
|
|
|
|
| RHI (D3D12) | 编译通过 |
|
2026-03-13 15:07:03 +08:00
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
## mvs 示例程序
|
2026-03-13 20:40:12 +08:00
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
mvs(Multiple Version Samples)展示游戏引擎的各类功能。所有示例均基于 RHI 抽象层开发,可无缝切换 DirectX 12 或 OpenGL 后端。
|
2026-03-13 20:40:12 +08:00
|
|
|
|
|
|
|
|
|
|
### HelloEarth(开发中)
|
|
|
|
|
|
|
2026-03-17 22:39:59 +08:00
|
|
|
|
基础的跨平台渲染示例,展示如何:
|
|
|
|
|
|
- 初始化 RHI 渲染环境(支持 D3D12/OpenGL)
|
2026-03-13 20:40:12 +08:00
|
|
|
|
- 加载和渲染静态网格
|
|
|
|
|
|
- 使用几何着色器
|
|
|
|
|
|
- 纹理映射
|
|
|
|
|
|
- 常量缓冲区更新
|
|
|
|
|
|
|
|
|
|
|
|
### VolumeRenderer(开发中)
|
|
|
|
|
|
|
2026-03-18 17:58:01 +08:00
|
|
|
|
XCEngine 的体积渲染模块,基于 NanoVDB 实现云、烟雾等体积数据的实时渲染:
|
2026-03-13 20:40:12 +08:00
|
|
|
|
- NanoVDB 格式体积数据加载
|
|
|
|
|
|
- 光线步进(Ray Marching)渲染
|
|
|
|
|
|
- HDDA 空间跳跃加速
|
2026-03-18 17:58:01 +08:00
|
|
|
|
- 体积阴影(Volumetric Shadow)
|
|
|
|
|
|
- 动态光照参数调节
|
|
|
|
|
|
|
|
|
|
|
|
### UI Editor(开发中)
|
|
|
|
|
|
|
|
|
|
|
|
Unity 风格的编辑器 UI,基于 ImGui 实现:
|
|
|
|
|
|
- 场景层级面板
|
|
|
|
|
|
- 属性检查器
|
|
|
|
|
|
- 游戏视图与场景视图
|
|
|
|
|
|
- 项目资源浏览器
|
|
|
|
|
|
- 控制台日志面板
|
2026-03-13 20:40:12 +08:00
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
## 文档
|
|
|
|
|
|
|
|
|
|
|
|
更多详细设计文档请参考 `docs/` 目录。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|