Commit Graph

58 Commits

Author SHA1 Message Date
ChestnutYueyue 74967f23a2 refactor: 重新组织头文件包含以改进模块依赖关系
- 移除示例中不必要的rhi_module.h包含
- 在extra2d.h中统一添加缺失的模块头文件
- 确保所有核心模块都能通过主头文件正确访问
2026-03-16 22:28:31 +08:00
ChestnutYueyue 3686ba35c1 feat(camera): 为相机组件添加简化的正交投影设置方法
添加一个接受宽高参数的 `setOrtho` 重载方法,以简化常见2D场景下的相机设置。同时更新示例代码以使用新方法,使代码更简洁易读。
2026-03-16 22:03:25 +08:00
ChestnutYueyue dcb3162525 feat: 添加图像显示示例并支持纹理覆盖
- 新增 image_display_demo 示例项目,展示如何加载和显示纹理
- 在 SpriteRenderer 中添加纹理覆盖支持,允许组件指定独立纹理
- 修改渲染管线,在绑定着色器时设置默认纹理单元
- 更新纹理加载逻辑,简化纹理数据上传接口
- 扩展渲染命令结构,包含可选的纹理覆盖句柄
- 调整命令队列提交接口,支持纹理覆盖参数传递
2026-03-16 21:11:15 +08:00
ChestnutYueyue 81bc7ae030 feat(assets): 添加字体和音乐资源支持
- 新增 Font 类,使用 stb_truetype 加载 TTF/OTF 字体并计算度量信息
- 新增 Music 类,基于 SDL_mixer 实现音频播放、暂停、停止等功能
- 为 AssetSystem 和 AssetsModule 添加字体和音乐的存储、加载器注册及缓存支持
- 在 hello_world 示例中演示字体和音乐的加载与使用
- 更新 extra2d.h 头文件以包含新增的资产模块头文件
2026-03-16 19:38:24 +08:00
ChestnutYueyue 1097aeae6c feat(shader): 支持单文件分段着色器并更新内置默认着色器
- 扩展 ShaderLoader 以支持 .glsl 单文件分段格式(#type vertex/fragment)
- 将内置默认着色器从分离的 .vert/.frag 文件合并为单个 default.glsl 文件
- 更新 BuiltinAssetFactory 使用新的加载方式创建默认着色器
- 删除旧的 default.frag 文件,简化着色器资源管理
2026-03-16 19:18:53 +08:00
ChestnutYueyue 3df1703839 perf(scene): 使用哈希表优化节点添加和删除操作
优化 Scene 和 Node 类的子节点管理,通过引入 unordered_map 存储节点索引,将删除操作的时间复杂度从 O(n) 降低到 O(1)。同时防止重复添加相同节点。
2026-03-16 19:16:00 +08:00
ChestnutYueyue d90fad8f5a fix: 修复多个模块关闭时的重复清理和状态管理问题
- 在Logger::shutdown()中添加关闭完成日志
- 为RenderGraph添加initialized_状态,防止重复初始化和关闭
- 调整Application关闭日志,明确关闭顺序
- 在GLDevice、CommandQueue、RHIModule的shutdown()中添加状态检查,避免重复清理
- 修复RenderGraph移动构造和移动赋值操作中的状态同步
2026-03-16 18:54:41 +08:00
ChestnutYueyue 2b552347fe refactor(渲染): 优化渲染排序和变换更新机制
- 将渲染命令排序键改为基于图层和深度,替代原有的材质纹理组合
- 引入变换版本号机制,避免冗余的世界变换计算
- 移除命令队列批次执行中的冗余全局UBO绑定
- 跳过仅含变换组件的节点渲染,提升渲染效率
2026-03-16 18:38:45 +08:00
ChestnutYueyue 690854698f refactor: 移除未使用的类型定义并简化监听器链表操作
- 删除 EventTrait 和 TupleExtractor 中未使用的 FuncType 类型别名
- 删除 AssetsModule 中未使用的缓存、默认资源、互斥锁及相关数据结构
- 提取监听器链表追加操作为独立函数以消除重复代码
2026-03-16 17:57:13 +08:00
ChestnutYueyue b672b16b83 refactor(assets): 重构资源系统架构,提取核心逻辑到 AssetSystem
- 新增 AssetSystem 类,整合异步加载、热重载、依赖跟踪等核心功能
- 将 AssetAsyncRuntime、AssetHotReloadRuntime 等组件提取为独立运行时类
- 重命名 AssetDependencyTracker 为 AssetDependencyGraph,改进数据结构
- 新增 BuiltinAssetFactory 负责默认资源的创建与管理
- 新增 AssetCache 提供线程安全的资源缓存机制
- 简化 AssetsModule 实现,将其职责委托给 AssetSystem
- 保持原有 API 兼容性,仅重构内部实现
2026-03-16 17:44:36 +08:00
ChestnutYueyue 41817c9e8a feat(renderer): 添加渲染性能优化和资源热重载系统
- 新增 AssetFileSystem 封装文件系统操作,支持 RomFS
- 新增 AssetAsyncLoader 实现异步资源加载
- 新增 AssetDependencyTracker 跟踪资源依赖关系
- 新增 AssetHotReloader 实现纹理和着色器热重载
- 优化 CommandQueue 性能:添加缓存机制,减少冗余状态切换
- 扩展 RenderGraph::execute 支持传递总时间参数
- 改进渲染统计信息,添加性能分析数据
- 重构 AssetsModule 使用新的子系统,提高代码可维护性
2026-03-16 17:33:57 +08:00
ChestnutYueyue 79e939ce5e refactor(渲染): 移除OnRenderPresent事件及相关处理
将缓冲区交换逻辑移至RHI模块处理,移除不再需要的OnRenderPresent事件及相关监听代码。同时统一日志消息中的中英文混用问题,将部分英文日志消息改为中文。
2026-03-03 22:02:21 +08:00
ChestnutYueyue 579aa2dd0d refactor(logger): 替换日志系统为spdlog实现
重构日志系统,使用spdlog替代原有实现,提供更强大的格式化功能和性能优化
移除自定义日志格式化和级别处理代码,统一使用spdlog接口
更新所有日志调用点,移除E2D_LOG_前缀宏,简化为E2D_前缀
添加spdlog为第三方依赖,更新构建配置
2026-03-03 21:23:54 +08:00
ChestnutYueyue 8864637459 feat: 添加spdlog日志库并本地化日志消息
refactor: 将日志消息从英文翻译为中文
style: 统一日志消息格式和风格
docs: 更新日志消息注释
2026-03-03 20:32:51 +08:00
ChestnutYueyue 44e0d65f10 feat(assets): 添加资源热重载和智能卸载功能
实现纹理和着色器的热重载功能,支持文件修改后自动重新加载
添加资源引用计数和LRU缓存机制,支持智能卸载长时间未使用的资源
重构文件监控系统,减少重复代码
扩展AssetStorage功能,增加加载状态管理和访问时间追踪
2026-03-03 19:32:23 +08:00
ChestnutYueyue e0b0a7883d refactor(renderer): 移除实例化渲染功能及相关代码
移除不再需要的实例化渲染功能,包括着色器、材质、渲染命令和测试代码
优化实例缓冲区实现,添加脏标记和增量更新功能
2026-03-03 12:18:32 +08:00
ChestnutYueyue 717112c437 perf(渲染): 优化渲染性能并添加统计功能
- 实现全局UBO双缓冲机制减少CPU-GPU等待
- 添加渲染统计功能,每60帧输出一次性能数据
- 优化命令列表状态缓存减少冗余OpenGL调用
- 改进材质UBO管理,支持批量更新和CPU缓冲区
- 重构命令队列执行逻辑,支持双缓冲和统计收集
2026-03-03 11:25:43 +08:00
ChestnutYueyue ec6ced9db2 refactor(模块系统): 调整模块初始化优先级并重构文件加载逻辑
重构模块初始化顺序,确保文件模块优先加载
移除Shader类中直接文件操作,统一通过FileModule进行文件访问
添加FileModule实现跨平台文件系统操作,支持RomFS
重构资源加载逻辑,统一使用FileModule进行文件操作
2026-03-03 05:53:40 +08:00
ChestnutYueyue 91e3e8fe57 feat(渲染): 实现实例化渲染功能并优化渲染管线
- 添加实例化渲染支持,包括InstanceBuffer、InstanceBufferManager和相关着色器
- 重构渲染命令队列以支持实例化绘制
- 优化材质系统,使用vector保持参数顺序并添加快速查找
- 改进顶点布局系统,支持实例属性
- 添加全局UBO管理,优化uniform数据传递
- 实现新的实例化测试场景节点
- 更新着色器以支持实例化渲染和UBO
- 改进GL命令列表,支持实例属性绑定
- 添加AssetsModule对实例化资源的支持
- 修复Director在没有主相机时的警告日志
2026-03-03 03:48:55 +08:00
ChestnutYueyue 9041833430 refactor(rhi): 重构渲染硬件接口模块
feat(rhi): 新增RHI模块抽象层
feat(opengl): 实现OpenGL后端支持
refactor(renderer): 重构材质、纹理和网格类以使用RHI接口
refactor(scene): 移除移动构造函数并禁止移动操作
fix(shader): 修复默认片段着色器纹理采样问题
refactor(module): 改进模块注册表以支持实例存储
refactor(window): 移除OpenGL上下文管理交由RHI处理
feat(assets): 为默认材质添加纹理支持
refactor(timer): 移除移动操作并简化实现
refactor(input): 移除移动操作并简化实现
2026-03-03 02:16:29 +08:00
ChestnutYueyue b4a3d6b14b refactor(assets): 移除未使用的chrono头文件 2026-03-02 22:58:03 +08:00
ChestnutYueyue d387532738 refactor(renderer): 移除冗余的<vector>头文件引入
清理不再需要的<vector>头文件,保持头文件简洁性
2026-03-02 22:57:00 +08:00
ChestnutYueyue f7e4f89cca feat(assets): 实现资源热重载和异步加载系统
添加资源热重载功能,支持监控文件变更并自动重新加载
实现异步加载系统,支持多线程资源加载和回调处理
增加资源依赖跟踪机制,自动更新依赖材质的引用
使用读写锁保护资源存储,提升多线程访问性能
2026-03-02 22:54:06 +08:00
ChestnutYueyue 46ec1c665f refactor(assets): 重构资源管理系统为ECS风格
- 引入新的Handle<T>轻量级资源句柄,替代原有的uint64_t句柄
- 新增AssetStorage类实现密集存储管理
- 添加AssetsModule模块统一管理资源加载和生命周期
- 实现TextureLoader和ShaderLoader资源加载器
- 重构RendererModule移除资源管理职责,改为使用AssetsModule
- 更新SpriteRenderer和相关组件使用新Handle接口
- 修改RenderTypes.h中的资源句柄类型定义
2026-03-02 22:44:42 +08:00
ChestnutYueyue 92be7d9d18 feat(场景图系统): 实现完整的场景图模块和示例程序
新增场景图系统核心组件:
- Director 场景管理
- Scene 场景容器
- Node 节点层级
- Component 组件系统
- Transform 变换(含锚点)
- Camera 相机
- SpriteRenderer 精灵渲染

添加场景图示例程序,演示:
- 节点层级和变换继承
- 组件系统使用
- 相机设置
- 精灵渲染

同时优化了渲染系统:
- 修改渲染命令结构
- 添加视口适配器
- 改进着色器错误处理
- 增强材质系统功能
2026-03-02 04:50:28 +08:00
ChestnutYueyue b4be0d84f8 feat(渲染器): 实现核心渲染系统模块
添加渲染器模块及相关组件,包括材质、网格、纹理、着色器和统一缓冲区管理。主要变更包括:

- 新增渲染器模块,负责接收渲染命令、批处理和排序
- 实现材质系统支持参数和着色器管理
- 添加网格类管理顶点和索引数据
- 实现纹理加载和绑定功能
- 添加着色器编译和链接功能
- 实现统一缓冲区对象(UBO)管理系统
- 提供默认资源(材质、网格、纹理)
- 支持实例化渲染和命令批处理
- 添加渲染事件系统(OnRenderBegin/Submit/End)
- 完善资源句柄管理机制
- 优化GL资源初始化和清理流程

移除不再使用的IModule接口,调整窗口模块事件触发时机确保GL上下文安全
2026-03-02 00:25:14 +08:00
ChestnutYueyue 46393fd027 refactor(resource): 移除资源系统相关代码
移除资源管理器及其相关组件,包括纹理、着色器、材质、字体、音频等资源类
删除资源加载示例及其构建配置
清理引擎上下文中与资源管理相关的接口和实现
2026-03-01 23:21:54 +08:00
ChestnutYueyue bdf78f5eca feat(resource): 实现资源管理系统及示例程序
新增资源管理系统,支持纹理、字体、着色器、音频等资源的加载和管理:
- 添加 ResourceManager 核心模块
- 实现 Texture、Font、Shader、Audio 等资源类
- 添加 FontAtlas 动态字符图集管理
- 实现 Material 材质系统
- 添加 Text 文本渲染支持
- 新增资源加载示例程序
- 更新构建系统以支持资源加载示例
- 完善文档和 README
2026-03-01 15:39:07 +08:00
ChestnutYueyue 6717015e28 feat(switch): 添加 Nintendo Switch 平台支持
- 添加 Switch 平台专用的日志输出和初始化处理
- 修改窗口模块以支持 OpenGL ES 3.2 渲染
- 更新构建系统以支持 Switch 平台编译
- 添加 Switch 平台文件系统操作支持
- 移除 Vulkan 相关依赖,改用 OpenGL ES
- 更新插件加载器以适配 Switch 平台限制
2026-03-01 03:48:51 +08:00
ChestnutYueyue fb11f2a71e refactor(渲染): 迁移OpenGL到Vulkan并重构相关模块
- 移除OpenGL相关代码和依赖,添加Vulkan SDK支持
- 重构窗口模块为Vulkan实现,移除GL上下文和VSync相关功能
- 简化配置结构,移除不再需要的OpenGL版本设置
- 重构上下文模块,使用单例模块注册表
- 移动定时器模块到utils目录并优化实现
- 清理废弃代码和头文件引用
2026-03-01 00:01:48 +08:00
ChestnutYueyue f9be301dae refactor(引擎核心): 重构模块系统并引入自动注册机制
重构引擎核心模块系统,使用新的 Module 基类替代旧版 IModule 接口
新增模块自动注册机制,通过 E2D_REGISTER_MODULE 宏实现模块注册
将窗口、文件、定时器等模块迁移到新系统,支持配置事件驱动初始化
移除旧版 SDL2 封装和模块管理器,简化应用程序初始化流程
2026-02-28 23:35:34 +08:00
ChestnutYueyue ebf73a4492 feat: 添加窗口和输入模块支持并简化示例程序
重构应用类以支持窗口和输入模块,添加相关接口方法
移除碰撞演示示例,简化hello world示例为控制台输出
启用控制台子系统以便在mingw平台查看输出
2026-02-28 22:30:48 +08:00
ChestnutYueyue 418d2c8f92 feat(tests): 添加完整的测试套件框架和核心模块测试
refactor(module): 改进模块注册表同名模块处理逻辑
refactor(plugin): 优化插件加载器依赖检查机制
refactor(event): 重构事件总线监听器添加顺序逻辑

build: 添加测试构建选项和配置
docs: 添加测试套件README文档
2026-02-28 21:48:35 +08:00
ChestnutYueyue e68ce87638 refactor(engine): 重构引擎架构,引入模块化系统和事件总线
重构引擎核心架构,移除旧的服务和调度器系统,引入基于事件总线的模块化设计:
1. 新增 Context 类作为引擎核心上下文,管理模块和插件生命周期
2. 新增 IModule 接口和 ModuleRegistry 实现模块注册与管理
3. 新增 IPlugin 接口和 PluginLoader 实现插件动态加载
4. 重构事件系统,扩展触摸和游戏手柄事件
5. 移除 Director、Scheduler 和 Service 等旧系统
6. 重构文件、窗口等平台模块为独立模块
7. 更新应用类以使用新架构
8. 优化随机数生成器为非单例设计
9. 添加详细的模块优先级常量
10. 改进代码组织结构和文档注释

此次重构提高了代码的可维护性和扩展性,支持运行时模块和插件动态加载,为后续功能扩展奠定基础。
2026-02-28 20:56:11 +08:00
ChestnutYueyue 5a3d0cd9de refactor(core): 移除TBB依赖并重构事件系统和调度器
重构服务管理器和调度器,使用标准库替代TBB并发容器
将事件系统从core移动到独立event目录并优化实现
更新构建脚本移除TBB相关配置
添加线程安全队列实现并行调度
2026-02-28 04:44:56 +08:00
ChestnutYueyue 0761b55864 refactor(platform): 移除PlatformType枚举并调整OpenGL配置
移除不再使用的PlatformType枚举及相关平台判断逻辑,简化代码结构。同时将默认OpenGL配置从3.3 Core改为3.2 ES,以支持更多平台。调整了窗口服务初始化方式,使用lambda表达式创建配置对象。
2026-02-27 23:08:49 +08:00
ChestnutYueyue 8abf58e3d5 feat: 添加SDL2平台支持及核心功能模块
实现SDL2平台初始化、窗口管理、输入处理和文件系统服务
重构服务管理机制,支持暂停/恢复状态
添加事件总线系统,实现引擎事件分发
优化应用主循环和更新机制
完善跨平台文件操作接口
2026-02-27 22:59:17 +08:00
ChestnutYueyue 5ef1873a44 refactor(core): 使用全局变量替换Director中的成员变量
将Director类中的Scheduler和SvcMgr成员变量替换为全局变量SCHED和SVC_MGR,
并添加IService的友元声明以允许SvcMgr访问其私有成员
2026-02-27 20:55:06 +08:00
ChestnutYueyue 71eeeac033 refactor(engine): 重构引擎代码结构,优化类型系统和核心模块
- 将核心类型和数学工具移动到types目录下,按功能分类
- 重构引用计数和智能指针实现,提高线程安全性
- 新增调度器和服务管理器,提供统一的更新机制
- 移除旧的输入系统和窗口管理代码
- 优化日志系统,移除冗余代码
- 添加TBB依赖,支持并行任务调度
- 统一代码风格,使用更简洁的命名规范
2026-02-27 20:46:16 +08:00
ChestnutYueyue 24b86b4916 refactor: 移除事件系统和音频系统相关代码
移除不再使用的事件队列(EventQueue)、事件分发器(EventDispatcher)、音频引擎(AudioEngine)和声音(Sound)相关代码
删除utils/data.h数据存储模块
清理相关头文件引用和成员变量
2026-02-27 19:25:54 +08:00
ChestnutYueyue ea081b9dd3 refactor: 移除图形渲染和场景管理相关代码
移除不再需要的图形渲染、纹理、字体、场景管理等模块代码,清理相关头文件引用。主要变更包括:
- 删除renderer、graphics、scene目录下的大部分文件
- 清理extra2d.h中的冗余头文件引用
- 简化Application类,移除渲染和场景管理相关功能
2026-02-27 19:12:24 +08:00
ChestnutYueyue d81f0c1e45 refactor(graphics): 移除纹理图集功能及相关实现代码 2026-02-27 18:52:24 +08:00
ChestnutYueyue b4a55239aa refactor(core): 替换shared_ptr为侵入式引用计数IntrusivePtr
重构整个项目,将std::shared_ptr替换为自定义的IntrusivePtr实现:
1. 新增RefCounted基类,提供引用计数功能
2. 实现IntrusivePtr智能指针模板类
3. 修改所有资源管理类使用IntrusivePtr
4. 更新Node类继承自RefCounted
5. 移除types.h中的shared_ptr相关定义
6. 统一使用makeRef替代shared创建对象
2026-02-26 21:17:11 +08:00
ChestnutYueyue 4afd52cc82 refactor: 移除自定义字符串模块并改用标准库
移除core/string.h和core/string.cpp,使用标准库<string>替代
删除renderer/shader.h及相关实现文件
在需要UTF-8转换的地方添加简化版实现
更新相关头文件的包含关系
2026-02-26 20:21:55 +08:00
ChestnutYueyue 60ef7ab63f refactor(ui): 移除UI组件及相关功能代码
移除所有UI组件代码,包括按钮、复选框、单选框、进度条、滑动条、标签、文本和基础Widget类
删除对象池预热功能及相关代码
清理UI组件相关的头文件引用
2026-02-26 20:16:46 +08:00
ChestnutYueyue c84aab70ed refactor(renderer): 重构着色器系统并优化渲染命令结构
- 将 shader_system.h 重命名为 shader.h 并合并相关实现
- 移除 shader_preset.h 和 shader_preset.cpp 文件
- 优化 render_command.h 中的代码格式和结构
- 清理不必要的头文件包含
2026-02-26 20:12:12 +08:00
ChestnutYueyue 00d709fcc8 refactor: 统一智能指针创建函数命名
将 makePtr 和 makeUnique 分别重命名为 shared 和 unique,以提供更简洁的智能指针创建接口
2026-02-26 20:08:04 +08:00
ChestnutYueyue aec444f2b5 refactor(core): 重构数学模块,拆分为多个独立头文件
将 math_types.h 拆分为 vec2.h, vec3.h, rect.h, size.h 和 transform.h
移除 ColorConstants 结构体,直接使用 Colors 命名空间
优化颜色结构体的运算符实现
2026-02-26 20:06:51 +08:00
ChestnutYueyue e52c117830 refactor(renderer): 重构渲染器模块结构
将渲染器相关代码从graphics目录移动到renderer目录,包括Camera、Renderer等核心类
删除过渡动画相关代码,简化场景切换逻辑
移除Tween动画系统,减少代码复杂度
重命名ShapeNode为Shape,保持命名一致性
更新所有引用路径以反映新的目录结构
2026-02-26 19:57:16 +08:00
ChestnutYueyue f41600306e refactor: 移除空间索引系统及相关示例代码
移除空间索引系统(QuadTree/SpatialHash)及相关实现代码
删除push_box和flappy_bird示例游戏及其资源文件
清理不再需要的空间索引相关函数调用和头文件引用
2026-02-26 19:41:57 +08:00