EUI-NEO v0.6.0
本次版本新增外部 GPU 图像接入和音频播放,完善窗口配置与多行编辑,并优化虚拟列表滚动、渲染资源回收和 Vulkan 窗口缩放。
主要更新
外部 GPU 图像与渲染
- OpenGL 与 Vulkan 均支持通过
eui::image::importGpuImage()导入外部 GPU 图像,并通过图片 DSL 的.texture(gpuImage, revision)显示,无需 CPU 读回或重新上传像素。 - 保留图片组件的裁剪、圆角、透明度、适配和变换能力;增加设备身份校验、内容 revision 更新和 GPU 使用完成后的延迟释放。
- 新增
DslAppConfig::onShutdown(),用于在主窗口 GPU 设备销毁前释放应用资源。 - Vulkan 在重建交换链时传递旧交换链,完善创建失败后的清理与恢复,减少连续调整窗口大小的 CPU 开销。
- 修复内联 SVG 在 builder 链式调用中丢失来源的问题。
列表、输入框与颜色
- 虚拟列表通过 Runtime 滚动变换移动内容,仅在可见槽位范围变化时重新 compose。
- 延迟清理仍在使用的渲染层,复用文字图集存储,减少滚动时的资源重建和内存增长。
- 多行输入框新增
.scrollbar(),支持滚轮、轨道点击和滑块拖动,并保持输入焦点与选区。 - 多行编辑仅创建可见行的文本元素,局部编辑仅重新测量受影响段落;改善 IME 预编辑换行,避免与原文字重叠。
- 颜色支持
#RGB、#RGBA、#RRGGBB、#RRGGBBAA,并提供显式解析与校验接口。
窗口配置与音频
- 应用配置新增窗口位置、最小/最大尺寸、可调整大小、窗口边框、置顶和最大化选项,并接入 GLFW/SDL2 窗口后端。
- 增加调试标题更新间隔、自定义调试叠层开关与回调;调试默认值跟随 CMake 构建配置。
- 新增基于 miniaudio 的
eui::audio::Player,提供加载、播放、暂停、停止、跳转、播放时间与错误查询。
示例、构建与文档
- 新增 VCD 波形查看器,并修复横向滚动时波形消失和滚动内存增长问题。
- 新增音画同步宣传演示与多页表格快速入门示例。
- 完善 FetchContent 快速开始、Linux 依赖安装说明、外部 GPU 图像同步与资源生命周期文档。
- 可选模块在顶层构建默认开启,作为子项目接入时默认关闭,可通过
EUI_ENABLE_MODULES显式控制。 - 修复 Release 配置下 GPU 图像测试目标的异常编译选项,兼容 GCC/Clang 发布构建。
- 新增科学绘图路线图与验收清单;科学绘图模块及高吞吐波形实现尚未合入本版本。
升级说明
- FetchContent 用户可固定使用
GIT_TAG v0.6.0。 - 子项目需要可选模块时,请显式开启
EUI_ENABLE_MODULES。 - 外部 GPU 图像必须属于目标窗口的兼容上下文/设备;生产者负责同步,Vulkan 图像需保持约定的采样布局。本接口不提供跨 API、跨设备或任意队列资源共享。
- 外部纹理内容更新后应递增
revision,并在设备销毁前释放应用持有的 GPU 资源引用。 - 输入框仍采用完整字符串与撤销快照;首次加载、宽度变化和超长单段落的排版成本仍与文本规模有关。
- Vulkan 窗口缩放优化不代表共享 GPU 内存增长问题已经解决;性能取决于设备、驱动与场景。
验证
- GitHub Actions:Windows x64、Linux x64、macOS arm64 的 Release 构建、单元测试、SDK 安装、独立消费工程构建与附件上传均通过。
- Windows 本地 Release:GLFW/OpenGL 与 SDL2/Vulkan 完整构建通过,各 31 项单元与 probe 测试通过。
- 外部 GPU 图像 probe 在 GLFW/SDL2 × OpenGL/Vulkan 四种组合通过;Vulkan 测试启用 validation layer。
- 严格 bundled OpenGL 构建、SDK 安装与独立消费工程构建通过;Vulkan shader 生成头一致性检查通过。
- GLFW/Vulkan SDK 的独立消费工程构建通过,包括 ShaderToy SPIR-V 构建步骤。
发布产物
- Windows x64、Linux x64、macOS arm64 分别提供运行包和 SDK 包。
- 发布工作流对三个平台执行 Release 构建、单元测试、SDK 安装和独立消费工程构建。
- 运行包包含示例应用及配套资源;SDK 用于通过
find_package(EuiNeo CONFIG REQUIRED)接入。
完整变更:v0.5.9...v0.6.0