From ca0d73c197347b87e85b2f07252d708d30e30f97 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Wed, 25 Mar 2026 12:06:10 +0800 Subject: [PATCH] docs: update README to reflect current project structure after refactoring - Correct directory structure (ui_editor -> editor, remove scripts/) - Add Platform/ module (cross-platform abstraction layer) - Add Input/ module - Add Layer/LayerStack to Core module - Add missing RHI abstraction files (DescriptorPool, DescriptorSet, RenderPass, Framebuffer, etc.) - Add missing D3D12 backend files - Add missing OpenGL backend files - Add GLAD to third_party - Add reference/ directory - Add Res/ to mvs/ - Update editor directory structure --- README.md | 453 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 269 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index d3385f97..3cef010a 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,18 @@ # XCEngine -基于 DirectX 12 的游戏引擎项目,支持体积渲染、跨平台渲染后端和核心模块单元测试。 +基于 DirectX 12 的模块化游戏引擎,支持体积渲染、跨平台渲染后端和核心模块单元测试。 ## 项目概述 -XCEngine 是一个正在开发中的游戏引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 多种渲染 API。项目采用模块化设计,包含核心库、示例程序和单元测试。 +XCEngine 是一个正在开发中的模块化 C++ 游戏引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 4.6+ 多种渲染 API。项目采用模块化设计,包含核心库、示例程序和单元测试。 ## 技术栈 - **渲染 API**: DirectX 12, OpenGL 4.6+ - **语言**: C++17 -- **构建系统**: CMake +- **构建系统**: CMake 3.15+ - **测试框架**: Google Test +- **UI**: ImGui(用于编辑器) ## 项目结构 @@ -23,122 +24,146 @@ XCEngine/ │ │ │ ├── AudioSystem.h # 音频系统主类 │ │ │ ├── AudioTypes.h # 音频类型定义 │ │ │ ├── AudioConfig.h # 音频配置 -│ │ │ ├── AudioMixer.h # 音频混音器 -│ │ │ ├── HRTF.h # HRTF 空间音频 -│ │ │ ├── FFTFilter.h # FFT 滤波器 -│ │ │ ├── Reverbation.h # 混响效果 -│ │ │ ├── Equalizer.h # 均衡器 -│ │ │ ├── IAudioEffect.h # 音频效果接口 -│ │ │ ├── WindowsAudioBackend.h # Windows 音频后端 -│ │ │ └── IAudioBackend.h # 音频后端接口 -│ │ ├── Components/ # 游戏组件系统 -│ │ │ ├── Component.h # 组件基类 -│ │ │ ├── GameObject.h # 游戏对象 -│ │ │ ├── TransformComponent.h # 变换组件 -│ │ │ ├── AudioSourceComponent.h # 音频源组件 +│ │ │ ├── AudioMixer.h # 音频混音器 +│ │ │ ├── HRTF.h # HRTF 空间音频 +│ │ │ ├── FFTFilter.h # FFT 滤波器 +│ │ │ ├── Reverbation.h # 混响效果 +│ │ │ ├── Equalizer.h # 均衡器 +│ │ │ ├── IAudioEffect.h # 音频效果接口 +│ │ │ ├── IAudioBackend.h # 音频后端接口 +│ │ │ └── WindowsAudioBackend.h # Windows 音频后端 +│ │ ├── Components/ # 游戏组件系统 +│ │ │ ├── Component.h # 组件基类 +│ │ │ ├── GameObject.h # 游戏对象 +│ │ │ ├── TransformComponent.h # 变换组件 +│ │ │ ├── AudioSourceComponent.h # 音频源组件 │ │ │ └── AudioListenerComponent.h # 音频监听器组件 -│ │ ├── Core/ # 核心基础模块 -│ │ │ ├── Asset/ # 资源系统核心 -│ │ │ │ ├── IResource.h # 资源接口 -│ │ │ │ ├── ResourceTypes.h # 资源类型定义 -│ │ │ │ ├── ResourceHandle.h # 资源句柄 -│ │ │ │ ├── ResourceManager.h # 资源管理器 -│ │ │ │ ├── ResourceCache.h # 资源缓存 -│ │ │ │ ├── AsyncLoader.h # 异步加载器 +│ │ ├── Core/ # 核心基础模块 +│ │ │ ├── Asset/ # 资源系统核心 +│ │ │ │ ├── IResource.h # 资源接口 +│ │ │ │ ├── ResourceTypes.h # 资源类型定义 +│ │ │ │ ├── ResourceHandle.h # 资源句柄 +│ │ │ │ ├── ResourceManager.h # 资源管理器 +│ │ │ │ ├── ResourceCache.h # 资源缓存 +│ │ │ │ ├── AsyncLoader.h # 异步加载器 │ │ │ │ ├── ResourceDependencyGraph.h # 依赖图 -│ │ │ │ └── ImportSettings.h # 导入设置基类 -│ │ │ ├── IO/ # IO 系统 -│ │ │ │ ├── IResourceLoader.h # 资源加载器接口 +│ │ │ │ └── ImportSettings.h # 导入设置基类 +│ │ │ ├── IO/ # IO 系统 +│ │ │ │ ├── IResourceLoader.h # 资源加载器接口 │ │ │ │ ├── ResourceFileSystem.h # 资源文件系统 -│ │ │ │ ├── ResourcePath.h # 资源路径 -│ │ │ │ ├── FileArchive.h # 文件归档 -│ │ │ │ └── ResourcePackage.h # 资源包 -│ │ │ ├── Containers/ # 容器模块 -│ │ │ │ ├── Array.h # 动态数组 -│ │ │ │ ├── String.h # 字符串类 -│ │ │ │ ├── HashMap.h # 哈希表 -│ │ │ │ └── Containers.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 # 数学库统一头文件 -│ │ │ ├── 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 # 性能分析 -│ │ ├── 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 # 任务系统配置 -│ │ │ └── Threading.h # 线程模块统一头文件 -│ │ ├── Resources/ # 资源管理模块 (按类型分目录) -│ │ │ ├── Texture/ # 纹理资源 +│ │ │ │ ├── ResourcePath.h # 资源路径 +│ │ │ │ ├── FileArchive.h # 文件归档 +│ │ │ │ └── ResourcePackage.h # 资源包 +│ │ │ ├── Containers/ # 容器模块 +│ │ │ │ ├── Array.h # 动态数组 +│ │ │ │ ├── String.h # 字符串类 +│ │ │ │ ├── HashMap.h # 哈希表 +│ │ │ │ └── Containers.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 # 数学库统一头文件 +│ │ │ ├── Layer.h # 层级 +│ │ │ ├── LayerStack.h # 层级栈 +│ │ │ ├── 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 # 性能分析 +│ │ ├── 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 # 任务系统配置 +│ │ │ └── Threading.h # 线程模块统一头文件 +│ │ ├── Platform/ # 平台抽象层 +│ │ │ ├── PlatformTypes.h # 平台类型 +│ │ │ ├── IPlatform.h # 平台接口 +│ │ │ ├── IWindow.h # 窗口接口 +│ │ │ ├── IFileSystem.h # 文件系统接口 +│ │ │ ├── IClock.h # 时钟接口 +│ │ │ ├── IDynamicLibrary.h # 动态库接口 +│ │ │ ├── IDisplayEnumerator.h # 显示枚举接口 +│ │ │ ├── GameTime.h # 游戏时间 +│ │ │ ├── Window.h # 窗口类 +│ │ │ ├── Windows/ # Windows 平台实现 +│ │ │ │ ├── WindowsWindow.h +│ │ │ │ └── WindowsInputModule.h +│ │ │ ├── Linux/ # Linux 平台实现 +│ │ │ ├── Android/ # Android 平台实现 +│ │ │ └── macOS/ # macOS 平台实现 +│ │ ├── Input/ # 输入模块 +│ │ │ ├── InputTypes.h # 输入类型 +│ │ │ ├── InputEvent.h # 输入事件 +│ │ │ ├── InputAxis.h # 输入轴 +│ │ │ ├── InputModule.h # 输入模块基类 +│ │ │ └── InputManager.h # 输入管理器 +│ │ ├── Resources/ # 资源管理模块 (按类型分目录) +│ │ │ ├── Texture/ # 纹理资源 │ │ │ │ ├── Texture.h │ │ │ │ ├── TextureLoader.h │ │ │ │ └── TextureImportSettings.h -│ │ │ ├── Mesh/ # 网格资源 +│ │ │ ├── Mesh/ # 网格资源 │ │ │ │ ├── Mesh.h │ │ │ │ ├── MeshLoader.h │ │ │ │ └── MeshImportSettings.h -│ │ │ ├── Shader/ # 着色器资源 +│ │ │ ├── Shader/ # 着色器资源 │ │ │ │ ├── Shader.h │ │ │ │ └── ShaderLoader.h -│ │ │ ├── Material/ # 材质资源 +│ │ │ ├── Material/ # 材质资源 │ │ │ │ ├── Material.h │ │ │ │ └── MaterialLoader.h -│ │ │ ├── AudioClip/ # 音频资源 +│ │ │ ├── AudioClip/ # 音频资源 │ │ │ │ ├── AudioClip.h │ │ │ │ └── AudioLoader.h -│ │ │ └── Resources.h # 资源模块统一头文件 -│ │ ├── Scene/ # 场景管理模块 -│ │ │ ├── Scene.h # 场景类 -│ │ │ └── SceneManager.h # 场景管理器 -│ │ └── RHI/ # 渲染硬件接口抽象层 -│ │ ├── RHITypes.h # RHI 类型定义 -│ │ ├── RHIEnums.h # RHI 枚举 -│ │ ├── RHICapabilities.h # 硬件能力查询 -│ │ ├── RHIFactory.h # 设备工厂 +│ │ │ └── Resources.h # 资源模块统一头文件 +│ │ ├── Scene/ # 场景管理模块 +│ │ │ ├── Scene.h # 场景类 +│ │ │ └── SceneManager.h # 场景管理器 +│ │ └── RHI/ # 渲染硬件接口抽象层 +│ │ ├── RHITypes.h # RHI 类型定义 +│ │ ├── RHIEnums.h # RHI 枚举 +│ │ ├── RHICapabilities.h # 硬件能力查询 +│ │ ├── RHIFactory.h # 设备工厂 │ │ ├── RHIDevice.h # 渲染设备抽象 │ │ ├── RHICommandQueue.h # 命令队列抽象 │ │ ├── RHICommandList.h # 命令列表抽象 -│ │ ├── RHIBuffer.h # 缓冲区抽象 +│ │ ├── RHIBuffer.h # 缓冲区抽象 │ │ ├── RHITexture.h # 纹理抽象 │ │ ├── RHIShader.h # 着色器抽象 │ │ ├── RHISampler.h # 采样器抽象 @@ -147,7 +172,12 @@ XCEngine/ │ │ ├── RHIPipelineState.h # 管线状态抽象 │ │ ├── RHIPipelineLayout.h # 管线布局抽象 │ │ ├── RHIDescriptorPool.h # 描述符池抽象 -│ │ ├── OpenGL/ # OpenGL 后端实现 +│ │ ├── RHIDescriptorSet.h # 描述符集抽象 +│ │ ├── RHIRenderPass.h # 渲染通道抽象 +│ │ ├── RHIFramebuffer.h # 帧缓冲抽象 +│ │ ├── RHIResource.h # 资源基类 +│ │ ├── RHIResourceView.h # 资源视图抽象 +│ │ ├── OpenGL/ # OpenGL 后端实现 │ │ │ ├── OpenGLDevice.h │ │ │ ├── OpenGLCommandQueue.h │ │ │ ├── OpenGLCommandList.h @@ -161,8 +191,15 @@ XCEngine/ │ │ │ ├── OpenGLVertexArray.h │ │ │ ├── OpenGLRenderTargetView.h │ │ │ ├── OpenGLDepthStencilView.h +│ │ │ ├── OpenGLFramebuffer.h +│ │ │ ├── OpenGLRenderPass.h +│ │ │ ├── OpenGLResourceView.h +│ │ │ ├── OpenGLDescriptorPool.h +│ │ │ ├── OpenGLDescriptorSet.h +│ │ │ ├── OpenGLTextureUnitAllocator.h +│ │ │ ├── OpenGLUniformBufferManager.h │ │ │ └── OpenGLScreenshot.h -│ │ └── D3D12/ # DirectX 12 后端实现 +│ │ └── D3D12/ # DirectX 12 后端实现 │ │ ├── D3D12Device.h │ │ ├── D3D12CommandQueue.h │ │ ├── D3D12CommandAllocator.h @@ -175,27 +212,35 @@ XCEngine/ │ │ ├── D3D12Sampler.h │ │ ├── D3D12Fence.h │ │ ├── D3D12DescriptorHeap.h +│ │ ├── D3D12DescriptorSet.h │ │ ├── D3D12RootSignature.h +│ │ ├── D3D12PipelineLayout.h │ │ ├── D3D12RenderTargetView.h │ │ ├── D3D12DepthStencilView.h │ │ ├── D3D12ShaderResourceView.h │ │ ├── D3D12UnorderedAccessView.h │ │ ├── D3D12ConstantBufferView.h +│ │ ├── D3D12ResourceView.h │ │ ├── D3D12QueryHeap.h +│ │ ├── D3D12RenderPass.h +│ │ ├── D3D12Framebuffer.h │ │ ├── D3D12Screenshot.h -│ │ ├── D3D12Enum.h │ │ ├── D3D12Types.h +│ │ ├── D3D12Enums.h │ │ └── D3D12Common.h -│ ├── src/ # 实现文件 +│ ├── src/ # 实现文件 │ │ ├── Audio/ │ │ ├── Containers/ │ │ ├── Core/ -│ │ │ ├── Asset/ # Core/Asset 实现 -│ │ │ └── IO/ # Core/IO 实现 +│ │ │ ├── Asset/ # Core/Asset 实现 +│ │ │ └── IO/ # Core/IO 实现 │ │ ├── Debug/ │ │ ├── Math/ │ │ ├── Memory/ │ │ ├── Threading/ +│ │ ├── Platform/ +│ │ │ └── Windows/ +│ │ ├── Input/ │ │ ├── Resources/ │ │ │ ├── Texture/ │ │ │ ├── Mesh/ @@ -204,68 +249,84 @@ XCEngine/ │ │ │ └── AudioClip/ │ │ ├── Scene/ │ │ └── RHI/ -│ └── third_party/ # 第三方库 -│ ├── kissfft/ # FFT 库 -│ └── stb/ # 图像处理库 +│ │ ├── D3D12/ +│ │ ├── OpenGL/ +│ │ └── RHIFactory.cpp +│ └── third_party/ # 第三方库 +│ ├── kissfft/ # FFT 库 +│ ├── stb/ # 图像处理库 (stb_image, stb_image_write) +│ ├── GLAD/ # OpenGL 加载器 +│ └── renderdoc/ # RenderDoc 调试库 +│ +├── editor/ # 编辑器 UI 应用程序 +│ ├── src/ # 编辑器源代码 +│ │ ├── Application.cpp/h # 编辑器应用入口 +│ │ ├── main.cpp # 主函数 +│ │ ├── Core/ # 编辑器核心 +│ │ ├── Layers/ # 编辑器层级 +│ │ ├── Managers/ # 管理器 +│ │ ├── panels/ # 编辑器面板 +│ │ └── UI/ # UI 控件 +│ ├── bin/ # 资源文件和可执行文件 +│ └── build/ # 构建目录 │ ├── tests/ # 单元测试 -│ ├── math/ # 数学库测试 -│ ├── core/ # 核心模块测试 -│ │ ├── Asset/ # Core/Asset 模块测试 -│ │ └── IO/ # Core/IO 模块测试 -│ ├── containers/ # 容器测试 -│ ├── memory/ # 内存管理测试 -│ ├── threading/ # 线程模块测试 -│ ├── debug/ # 调试模块测试 -│ ├── Components/ # 组件测试 -│ ├── Scene/ # 场景测试 -│ ├── Resources/ # 资源管理测试 -│ │ ├── Texture/ # 纹理资源测试 -│ │ ├── Mesh/ # 网格资源测试 -│ │ ├── Material/ # 材质资源测试 -│ │ ├── Shader/ # 着色器资源测试 -│ │ └── AudioClip/ # 音频资源测试 -│ ├── input/ # 输入模块测试 -│ └── RHI/ # RHI 抽象层测试 -│ ├── unit/ # RHI 抽象层测试 -│ ├── OpenGL/ # OpenGL 后端测试 -│ │ ├── unit/ # 单元测试 (14) -│ │ └── integration/ # 集成测试 (5) -│ └── D3D12/ # D3D12 后端测试 -│ ├── unit/ # 单元测试 (15) -│ └── integration/ # 集成测试 (8) +│ ├── math/ # 数学库测试 +│ ├── containers/ # 容器测试 +│ ├── memory/ # 内存管理测试 +│ ├── threading/ # 线程模块测试 +│ ├── debug/ # 调试模块测试 +│ ├── core/ # 核心模块测试 +│ │ ├── Asset/ # Core/Asset 模块测试 +│ │ └── IO/ # Core/IO 模块测试 +│ ├── Components/ # 组件测试 +│ ├── Scene/ # 场景测试 +│ ├── Resources/ # 资源管理测试 +│ │ ├── Texture/ +│ │ ├── Mesh/ +│ │ ├── Material/ +│ │ ├── Shader/ +│ │ └── AudioClip/ +│ ├── Input/ # 输入模块测试 +│ └── RHI/ # RHI 抽象层测试 +│ ├── unit/ # RHI 抽象层单元测试 (10 files) +│ ├── D3D12/ # D3D12 后端测试 +│ │ ├── unit/ # D3D12 单元测试 (14 files) +│ │ └── integration/ # D3D12 集成测试 (minimal, quad, sphere, triangle) +│ └── OpenGL/ # OpenGL 后端测试 +│ ├── unit/ # OpenGL 单元测试 (12 files) +│ └── integration/ # OpenGL 集成测试 (minimal, quad, sphere, triangle) │ -├── mvs/ # 示例程序 +├── mvs/ # 示例程序 │ ├── D3D12/ # DirectX 12 渲染示例 -│ ├── OpenGL/ # OpenGL 渲染示例 +│ ├── OpenGL/ # OpenGL 渲染示例 │ ├── Music fluctuations/ # 音频可视化示例 -│ ├── VolumeRenderer/ # 体积渲染器(NanoVDB) -│ └── ui/ # 编辑器 UI 示例 +│ ├── VolumeRenderer/ # 体积渲染器(NanoVDB) +│ ├── RenderDoc/ # RenderDoc 集成示例 +│ ├── ui/ # 编辑器 UI 示例 +│ └── Res/ # 示例资源文件 │ -├── ui_editor/ # 编辑器 UI 应用程序 -│ ├── src/ # 编辑器源代码 -│ ├── bin/ # 资源文件 -│ └── build/ # 构建目录 +├── docs/ # 文档 +│ ├── api/ # API 文档 +│ │ ├── audio/ # 音频系统 API +│ │ ├── components/ # 组件系统 API +│ │ ├── containers/ # 容器 API +│ │ ├── core/ # 核心 API +│ │ ├── d3d12/ # D3D12 API +│ │ ├── debug/ # 调试 API +│ │ ├── math/ # 数学库 API +│ │ ├── memory/ # 内存管理 API +│ │ ├── resources/ # 资源管理 API +│ │ └── main.md # API 文档总索引 +│ ├── plan/ # 开发计划与架构设计 +│ └── api-skill.md # API 技能文档 │ -├── docs/ # 文档 -│ ├── api/ # API 文档 -│ │ ├── rhi/ # RHI API 文档 -│ │ ├── math/ # Math API 文档 -│ │ ├── containers/ # Containers API 文档 -│ │ ├── threading/ # Threading API 文档 -│ │ ├── memory/ # Memory API 文档 -│ │ ├── core/ # Core API 文档 -│ │ ├── debug/ # Debug API 文档 -│ │ ├── resources/ # Resources API 文档 -│ │ └── main.md # API 文档总索引 -│ └── plan/ # 开发计划与架构设计 +├── 参考/ # 参考资料 +│ └── Fermion/ # 参考项目 │ -├── scripts/ # 构建和测试脚本 +├── build/ # 构建目录 │ -├── engine/tools/ # 工具脚本 -│ └── renderdoc_parser/ # RenderDoc 捕获分析工具(Python 3.6) -│ -└── build/ # 构建目录 +└── imgui.ini # ImGui 配置文件 ``` ## 快速开始 @@ -309,11 +370,12 @@ build/tests/threading/Debug/xcengine_threading_tests.exe ### Audio(音频系统) - **AudioSystem**: 音频系统主类,管理所有音频设备 +- **AudioMixer**: 音频混音器,多通道混合与效果处理 - **HRTF**: 头部相关传输函数,支持空间音频定位 - **FFTFilter**: 快速傅里叶变换滤波器 - **Reverbation**: 混响效果 - **Equalizer**: 音频均衡器 -- **WASAPI**: Windows 音频会话 API 后端实现 +- **WindowsAudioBackend**: Windows WASAPI 音频后端实现 - **AudioSourceComponent**: 音频源组件(用于游戏对象) - **AudioListenerComponent**: 音频监听器组件(用于游戏对象) @@ -322,6 +384,8 @@ build/tests/threading/Debug/xcengine_threading_tests.exe - **Component**: 组件基类,提供生命周期管理 - **GameObject**: 游戏对象,支持层级结构 - **TransformComponent**: 变换组件,管理位置、旋转、缩放 +- **AudioSourceComponent**: 音频源组件 +- **AudioListenerComponent**: 音频监听器组件 ### Containers(容器) @@ -336,6 +400,26 @@ build/tests/threading/Debug/xcengine_threading_tests.exe - **SmartPtr**: 智能指针实现(Ref、UniqueRef) - **Event**: 事件系统,支持订阅/发布模式 - **FileWriter**: 文件写入工具 +- **Layer/LayerStack**: 层级与层级栈管理 + +### Platform(平台抽象层) + +跨平台抽象接口,支持 Windows、Linux、Android、macOS: + +- **IPlatform**: 平台接口 +- **IWindow**: 窗口接口 +- **IFileSystem**: 文件系统接口 +- **IClock**: 时钟接口 +- **IDynamicLibrary**: 动态库加载接口 +- **IDisplayEnumerator**: 显示设备枚举接口 +- **Window**: 窗口实现类 + +### Input(输入模块) + +- **InputManager**: 输入管理器 +- **InputModule**: 输入模块基类 +- **InputEvent**: 输入事件定义 +- **InputAxis**: 输入轴配置 ### Debug(调试与日志) @@ -372,7 +456,7 @@ build/tests/threading/Debug/xcengine_threading_tests.exe - **Rect**: 矩形 - **Sphere/Box/Plane**: 基本几何体 - **Ray**: 射线 -- **AABB/Bounds/OBB**: 包围体 +- **AABB/Bounds**: 包围体 - **Frustum**: 视锥体 ### Resources(资源管理) @@ -380,6 +464,7 @@ build/tests/threading/Debug/xcengine_threading_tests.exe XCEngine 资源系统采用分层架构: #### Core/Asset(资源系统核心) + - **IResource**: 资源接口基类 - **ResourceTypes**: 资源类型定义(GUID、状态等) - **ResourceHandle**: 资源句柄,安全引用资源 @@ -389,6 +474,7 @@ XCEngine 资源系统采用分层架构: - **ResourceDependencyGraph**: 资源依赖图管理 #### Core/IO(资源 IO 系统) + - **IResourceLoader**: 资源加载器接口 - **ResourceFileSystem**: 资源文件系统 - **ResourcePath**: 资源路径解析 @@ -396,6 +482,7 @@ XCEngine 资源系统采用分层架构: - **ResourcePackage**: 资源包批量管理 #### Resources/(具体资源类型) + - **Texture**: 纹理资源(Texture.h、TextureLoader.h、TextureImportSettings.h) - **Mesh**: 网格资源(Mesh.h、MeshLoader.h、MeshImportSettings.h) - **Shader**: 着色器资源(Shader.h、ShaderLoader.h) @@ -425,10 +512,16 @@ XCEngine 采用 RHI(Render Hardware Interface)抽象层设计,支持多渲 - **RHICommandList**: 命令列表抽象 - **RHISwapChain**: 交换链抽象 - **RHIPipelineState**: 渲染管线状态抽象 +- **RHIPipelineLayout**: 管线布局抽象 - **RHIBuffer/RHITexture**: 资源抽象 - **RHIShader**: 着色器抽象 - **RHISampler**: 采样器抽象 - **RHIFence**: 同步栅栏抽象 +- **RHIDescriptorPool**: 描述符池抽象 +- **RHIDescriptorSet**: 描述符集抽象 +- **RHIRenderPass**: 渲染通道抽象 +- **RHIFramebuffer**: 帧缓冲抽象 +- **RHIResourceView**: 资源视图抽象 #### 后端实现 @@ -439,23 +532,19 @@ XCEngine 采用 RHI(Render Hardware Interface)抽象层设计,支持多渲 | 模块 | 测试用例数 | |------|-----------| -| Math | 140 | -| Core | 25 | -| Containers | 51 | -| Memory | 19 | -| Threading | 13 | -| Debug | 8 | -| Components | 39 | -| Scene | 14 | -| Resources/Texture | 36 | -| Resources/Mesh | 29 | -| Resources/Material | 14 | -| Resources/Shader | 13 | -| Resources/AudioClip | 15 | -| Input | 40 | -| RHI (OpenGL) | 41 (unit 14 + integration 5) | -| RHI (D3D12) | 23 (unit 15 + integration 8) | -| **总计** | **852 (+1 disabled)** | +| Math | ~4 | +| Containers | ~3 | +| Memory | ~3 | +| Threading | ~3 | +| Debug | ~3 | +| Core | ~10 | +| Components | ~3 | +| Scene | ~2 | +| Resources | ~12 | +| Input | ~2 | +| RHI/unit | ~10 | +| RHI/D3D12 | ~18 (unit + integration) | +| RHI/OpenGL | ~16 (unit + integration) | ## mvs 示例程序 @@ -478,10 +567,6 @@ D3D12 + RenderDoc 集成示例,展示如何使用 RenderDoc API 进行 GPU 帧 > 注意:renderdoc.dll 需单独放置于 `engine/third_party/renderdoc/renderdoc.dll` -### renderdoc_parser - -RenderDoc 捕获分析工具(Python 3.6)。详见 `engine/tools/renderdoc_parser/README.md`。 - ### VolumeRenderer XCEngine 的体积渲染模块,基于 NanoVDB 实现云、烟雾等体积数据的实时渲染: @@ -498,7 +583,7 @@ XCEngine 的体积渲染模块,基于 NanoVDB 实现云、烟雾等体积数 - 频谱可视化渲染 - 音频与视觉效果同步 -### UI Editor +### Editor UI Unity 风格的编辑器 UI,基于 ImGui 实现: - 场景层级面板