飞漫软件于 2022 年 12 月 30 日宣布正式发布 MiniGUI 5.0.11 版本。
MiniGUI 5.0.11 是 MiniGUI 5.0 系列的最新版本,修复了若干缺陷。
同时,MiniGUI 官网升级为中英双语网站,并且对中文文档做了大量的整理工作,以方便用户阅读。详情请见:http://www.minigui.com/zh/documentation
升级到 MiniGUI 5.0 的三大理由
目前,很多 MiniGUI 早期用户,仍然在使用 MiniGUI 3.0/3.2 系列版本,我们建议大家及早升级到 MiniGUI 5.0。理由有三:
- MiniGUI 5.0 采用了优化的界面刷新技术,可有效降低频繁更新界面导致的屏幕闪烁。另外,MiniGUI 5.0 中引入了针对常用处理器架构(如 x86、ARM、ARM64 等)的汇编代码,使得某些图形接口的性能得到了极大提升。因此,升级到 MiniGUI 5.0,将给您带来肉眼可见的流畅效果。
- 在 MiniGUI 4.0/5.0 的研发过程中,我们引入了对 Unicode 的完整支持以及对合成图式的支持。如果您的产品有计划支持各种语言文字,或者需要用更炫的界面特效打动客户,MiniGUI 5.0 正是您所需。
- 研发团队利用二十年来持续研发所积累的各种单元测试程序,通过自动化测试手段,有效消除了代码中存在的内存泄露、并发访问等相关的缺陷和问题,确保了代码质量。
一言蔽之,MiniGUI 5.0 是 MiniGUI 的重要里程碑版本,这个版本将桌面电脑的窗口系统功能带给了嵌入式设备。
接下来带您了解一下 MiniGUI 5.0 的三个主要技术进步。
MiniGUI 5.0 的三大技术进步
1) 合成图式及窗口合成器
自 MiniGUI 5.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。
合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。
在不使用合成器的情形下,窗口切换时的动画效果只能作用于单个进程中的多个窗口,应用开发者要仔细编码来处理窗口切换动画的实现细节,这样,一方面让单个进程的执行逻辑变得更为复杂,程序更容易出现缺陷,另一方面无法充分利用 Linux 等通用操作系统内核提供的多进程管理能力。而有了合成器之后,每个进程只需创建窗口并在窗口中绘制,无需关心其中的内容是如何被展示到屏幕上的——这项工作由独立的合成器来完成。这样,应用开发者不必关心窗口切换动画的实现细节,于是大大简化了窗口切换动画的实现。
经过几个版本的迭代,MiniGUI 5.0 的合成图式已然成熟。由飞漫软件发起的开源操作系统项目 HybridOS 基于 MiniGUI 5.0 的合成图式。
下面的视频展示了基于 MiniGUI 5.0 合成图式的窗口切换效果(HybridOS 运行在 RK3308 开发板上)。
下面的视频展示了基于 MiniGUI 5.0 合成图式切换工作区的效果(HybridOS 运行在 RISC-V D1 开发板上)。
开发者可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。在整个系统的不同运行阶段,甚至可以在多个合成器之间进行切换。
2) 完整的 Unicode 支持
在 MiniGUI 4.0 的开发中,我们重构了 MiniGUI 的底层字符集、编码及字体支持模块:
- 提供了完整的 Unicode 支持接口,符合 Unicode 12.0.0 标准及相关规范。
- 提供了用于支持复杂书写系统(如阿拉伯文、泰文、印度语、蒙文、藏文等)的相关接口,用于复杂或者混合文字的排版、字体成型和渲染。
- 为支持复杂文字,在保持接口稳定性和兼容性的基础上增强了 MiniGUI 逻辑字体和设备字体的相关接口。
3) 支持多点触摸屏以及 GPU 加速
- 支持除键盘鼠标之外的其他输入设备,如多点触摸屏、手势、游戏杆、平板笔等。
- 新增
drm
图形引擎,可通过全新的 Linux DRI/DRM 图形栈支持现代的显示卡或者 GPU,用于实现硬件加速的 2D/3D 图形渲染。 - 通过汇编代码,针对 ARM (32 及 64 位)架构提供了基于矢量运算指令的优化。
除了以上三个主要的增强之外,MiniGUI 4.0/5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档并顺手点亮 MiniGUI 仓库的星星:
- MiniGUI 5.0 系列:https://github.com/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md
- MiniGUI 4.0 系列:https://github.com/VincentWei/minigui/blob/rel-4-0/RELEASE-NOTES.md
MiniGUI 和 HybridOS、HVML 的关系
很多朋友询问笔者主持的三个开源项目 MiniGUI、HybridOS、HVML 之间到底是什么关系,今天借此机会回答一下。
简单而言,这三个项目相互独立而又相互关联。
其中,MiniGUI 为嵌入式系统提供桌面级窗口系统的功能,也提供了基于 C 语言的 GUI Toolkit 库,开发者可独立使用而开发各类 GUI 应用。
HybridOS 是一个针对智能设备的操作系统,架构在 Linux 内核和 MiniGUI (合成图式)之上。目前,HybridOS 中集成了飞漫增强的 hiWebKit 引擎,可使用 Web 前端技术开发图形和多媒体应用。另外,通过飞漫开发的数据总线 hiBus,应用可以和其他模块完成数据交换及功能调用。因此,相比 MiniGUI 只提供窗口管理和 GUI 功能之外,HybridOS 则提供了完整的应用开发框架以及集成系统功能的基础设施。
HVML 最初是为了解决 MiniGUI 基于 C 语言的接口不利于开发者快速开发 GUI 应用这一问题而提出,是 HybridOS 的首选应用编程语言。然而,HVML 可以用于更加通用的场合,比如桌面应用、脚本程序以及云应用的开发当中。
目前 HVML 解释器已趋于成熟,预计 2022 年年底,我们便可以在 HybridOS 上使用 HVML 开发应用,此时,MiniGUI 是 HybridOS 的窗口系统以及图形栈的一部分,xGUI Pro 将作为 HVML 应用的渲染器内置在 HybridOS 中。当然,我们也可以在 Windows、macOS、Linux 桌面系统上使用 HVML 开发应用,此时,HVML 的运行时环境基于上述桌面操作系统,和 HybridOS、MiniGUI 无关。
要更详细地了解 HVML 的来龙去脉以及开发进展,推荐阅读 #HVML 话题 下的文章。
源代码包下载
最后,附上 MiniGUI 5.0.11 的源代码包下载页面:
http://www.minigui.com/download
亦可访问如下用于构建 MiniGUI 的仓库:
https://github.com/VincentWei/build-minigui-5.0
另外,欢迎点击此处或文章末尾的原文链接,赞助飞漫主持的开源项目 MiniGUI、HybridOS 和 HVML。