github sudoevolve/EUI-NEO v0.5.6
EUI-NEO v0.5.6

latest releases: v0.6.3, v0.6.2, v0.6.1...
3 months ago

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 和 winpthread DLL。
  • 自动探测默认 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_neo SDK 目标,不再要求先构建全部示例和串口模块。
  • 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 构建及测试通过。

Don't miss a new EUI-NEO release

NewReleases is sending notifications on new releases.