Gitee 上有个项目叫 GUILite,4 千行 C++ 代码。

单一头文件,0 依赖,能在 STM32 单片机上跑 3D 动画——24MHz 主频、29KB ROM、9KB 内存就够了。

这个大小什么概念?

现在随便一个前端框架打包完都几百 KB 起步,GUILite 整个库才 29KB,还能渲染 3D 波形、粒子效果、甚至超级马里奥。

打开网易新闻 查看精彩图片

单片机上的 3D

翻 GuiLite 的 Demo 案例,发现很多STM32的示例。

打开网易新闻 查看精彩图片

Hello3D、HelloWave、HelloParticle。。。十几个 Demo 全在单片机上跑,GIF 录屏看着挺流畅。

有个 3Ddonut 是旋转的甜甜圈,另一个 HelloMolecule 是分子运动模拟——你很难相信这是在一块几十块钱的开发板上渲染出来的。

打开网易新闻 查看精彩图片

这些 Demo 的 UI 代码大多只有 100 行左右。

GuiLite 把底层渲染逻辑全封好了,只用调 API 画界面。

全平台是真的全

Windows、Linux、macOS、iOS、Android、WatchOS。。。甚至 Windows Mixed Reality 和 Web 都支持。

打开网易新闻 查看精彩图片

有个 HostMonitor 的 Demo,同一套代码编译后能在所有这些平台上跑——Windows 桌面、Mac、Android 手机、Linux 服务器、iPhone、VR 头显,UI 长得一模一样。

打开网易新闻 查看精彩图片

更野的是它能跟第三方 GUI 框架共存。

你现在用 Qt 或 MFC 项目不用推倒重来,直接把 GuiLite.h 扔进去就能用,在 Qt 窗口里嵌个 GuiLite 渲染的 3D 控件 ,集成进来成本极低。

工控场景

GuiLite 的 README 里专门提了 IoT 和云端监控。

打开网易新闻 查看精彩图片

工控项目经常要在嵌入式设备上做个简单 HMI,以前要么用厂商配套的工具(贵且封闭),要么自己手撸像素级绘图(累)。

GuiLite 给了第三条路——开源、轻量、跨平台,关键是真能在资源受限的硬件上跑起来。

怎么上手

Gitee 仓库是 idea4good/GuiLite,代码示例在 GuiLiteSamples。

打开网易新闻 查看精彩图片

文档写得比较全,从如何使用到如何布局 UI到如何换肤都有。

先编译库,再跑 HelloXXX 实例,然后读那 100 行 UIcode.cpp,最后扩展自己的 GUI。

打开网易新闻 查看精彩图片

如果你只是想快速看看效果,项目提供了 Docker 镜像,一行命令就能跑:

sudo docker run -it --privileged -v /dev:/dev-share idea4good/gui-lite:latest bash /run.sh

还有个 GuiLitePreviewer 工具,所见即所得地拖拽布局,不用手写坐标。

4 千行代码能做到什么程度?

24MHz 的 STM32 能跑 3D,9KB 内存能渲染粒子效果。

很多时候不是硬件不够,是软件太臃肿了。

当然,GuiLite 也不是万能的——复杂交互、大量动画、高分辨率场景它肯定扛不住。但对于工控 HMI、IoT 设备界面、嵌入式监控这些场景,够了。