Repository navigation
EUI-NEO v0.5.6
EUI-NEO 0.5.6 更新说明
本文汇总 v0.5.5 到正式 v0.5.6(2924380)之间已经合入的更新。
源码版本、发布标签和 GitHub Release 均已更新为 0.5.6。
架构与维护性
- 将 Runtime 的实例与资源状态集中到
InstanceStore,渲染职责收敛到
RuntimeRenderer,降低 Runtime 单类承担的职责数量。 - 删除没有必要独立维护的
runtime_render_helpers.h、runtime_tree.h和
image_types.h,减少零散小文件和跨文件跳转。 - 将平台输入查询收口到统一窗口输入边界,保持 GLFW 与 SDL2 的调用结构一致。
- 清理未完成的媒体模块,只保留实际可用的键盘与串口模块。
- 加强公共头文件的多翻译单元验证,降低外部项目使用完整便利头时的重复定义风险。
输入系统
- 使用通用
KeyEvent、InputKey、KeyAction和KeyModifiers代替大量按键布尔字段。 - 新增按键时不再需要同步扩展
KeyboardEvent中的一组专用字段,降低 GLFW、SDL2
和输入状态之间的修改扇出。 - SDL2 鼠标位置与按键状态改为按窗口保存,修复多窗口输入可能读取其他窗口状态的问题。
- 修复单行输入框文字下沿、Emoji 和带降部字形被裁切的问题。
外部项目接入
eui_neo_configure_app(target)现在会自动加入所选 GLFW/SDL2 应用入口、链接
eui::neo、设置平台链接参数并部署运行资源。- 外部项目不再需要引用
core/app/glfw_app_main.cpp或
core/app/sdl2_app_main.cpp。 add_subdirectory与安装后的find_package(EuiNeo CONFIG REQUIRED)使用同一套接入写法。- 安装包补全应用入口、公共头文件、运行资源、ShaderToy 脚本和 CMake package 配置。
- 支持单文件应用以及包含多个
.cpp和独立assets/的目录式应用。 - Quick Start 收敛为唯一推荐入口,集成指南只维护进阶配置,减少重复内容。
全局 UI 缩放
DslAppConfig新增uiScale,用于控制应用级 UI 密度。- 配置缩放会与系统 DPI 缩放组合,并统一应用于布局、渲染、输入命中测试和子窗口。
- 非正数缩放值自动回退为
1.0,GLFW 与 SDL2 使用相同的配置行为。
渲染与性能
- 新增稳定相邻元素的 sibling retained-layer 缓存,减少局部交互时对静态内容的重复绘制。
- OpenGL 新增基础图元批处理,将兼容的矩形、填充、边框和阴影提交合并为更少的 GPU draw call。
- Vulkan 新增对应的基础图元批处理管线和帧内顶点流,补齐与 OpenGL 的性能路径。
- 修复 retained layer 重建、渲染目标切换和脏区绘制中可能出现的黑块、空缓存及阴影裁切。
- 更新 retained-layer 探针、实现文档和中英文渲染架构说明。
ShaderToy
- ShaderToy graph 改为单一、无版本号的 JSON 配置契约。
- Vulkan SPIR-V 根据配置中声明的 pass 自动生成,不再在 JSON、CMake、xmake
和示例代码中重复维护 pass 数量与输出路径。 - 新增通用生成脚本,并接入 CMake 与 xmake 构建流程。
- 更新多 Pass、feedback、图片通道、打包资源和 retained-layer 相关测试。
- 完善 ShaderToy 文档及网站 Markdown 渲染。
构建与分发
- 顶层 CMake 构建使用单一共享资源目标,多个示例并行构建时公共
assets/只复制一次。 - 外部项目仍会按目标部署框架资源和应用自己的资源,不影响安装包接入。
- 新增四种后端组合的 CI:GLFW/SDL2 与 OpenGL/Vulkan。
- 修复 SDK 头文件安装层级、第三方头文件路径和 package consumer 验证。
- Xmake 编译产物统一输出到
.xmake/build,不再与 CMake 的build/目录混用。 - Xmake Debug/Release 示例目标和 Windows EXE 输出路径已写入 README、集成指南及开发发布文档。
- 项目版本由
0.5.5更新为0.5.6。
MinGW
- Windows Release 应用使用 GUI 子系统,启动时不再额外显示终端窗口。
- 默认静态构建自动链接 MinGW 运行库,生成的应用不再依赖
libstdc++、libgcc和winpthreadDLL。 - 自动探测默认 CRT 与 UCRT 静态链接方式,提高不同 MinGW 发行版之间的兼容性。
- 修复工具链位于带空格路径时
windres预处理失败的问题。 - 明确要求 MinGW-w64 GCC 12 或更高版本,旧工具链会在配置阶段给出清晰错误。
Linux 字体
- 增加 Fedora/RHEL 系列的 Noto Sans、Noto CJK、Noto Color Emoji、变量字体和
DejaVu 回退路径。 - 改善 Fedora、RHEL、CentOS 和 Rocky Linux 上中文、Emoji 与等宽字体的自动发现。
Xmake
- 新增
xmake.lua,覆盖源码构建、xrepo 接入、GLFW/SDL2、OpenGL/Vulkan、
静态/共享库、应用入口、资源部署和可选模块。 - 将延迟执行的构建逻辑改为直接传递全局 callback,修复 Xmake 3.x 隔离作用域下
eui_apply_compile_options、应用资源复制和 ShaderToy 构建函数为nil的问题。 - 目录式用户应用的 assets 路径改存于 target values,避免 callback 捕获循环变量。
- 使用 Xmake 官方包名
libsdl2与vulkansdk,修复 Windows 下 SDL2/Vulkan
配置无法解析依赖的问题。 - CI 安装阶段限定安装
eui_neoSDK 目标,不再要求先构建全部示例和串口模块。 - Windows 应用图标由 Xmake 在
.xmake自动生成目录中临时编译,不提交额外.rc或 helper 文件。 - Release 配置显式定义
NDEBUG,不再默认在标题栏显示 FPS/CPU/GPU 调试统计。 - C 源文件改用
sourcekind = "cc",全局 C 标准改为 C11,消除 MSVC/TP与/TC
冲突产生的D9025警告。 - 未增加兼容层或根目录项目,Xmake 逻辑仍集中在原有
xmake.lua。 - 已使用 Xmake 3.0.9 验证 GLFW/SDL2 与 OpenGL/Vulkan 四种组合;
eui_app、
shadertoy、gallery和核心库均构建成功,SDK 安装成功。
发布验证
- CMake Release 目标构建成功,
gallery无警告、无错误。 - CTest unit 测试 15/15 通过。
- CMake SDK 安装、
find_package(EuiNeo CONFIG REQUIRED)consumer 构建及测试通过。