自从上次发布了第一个 3D 程序,导演就跟我说了:“这就是个网页程序,跟 GuiLite 又没有啥关系,这也不是啥绝活呀”。所以,我们又作了另一个 3D 程序:![]() 对 GuiLite 比较熟悉的同学,可能会发现,立方体的四个面上贴的是:GuiLite 的两个单片机实例(HelloWave 和 HelloParticle);具体实现部分大家看代码就好,这里不多赘述 (老规律,代码在 100 行左右) 耳边,似乎又听到导演的声音:“这也不是啥绝活呀~难道你还要用 GuiLite 代替宇宙第一前端编程语言 – JavaScript 不成?” 答案当然是否定的!GuiLite 不仅不能代替 JavaScript,也不能代替 Qt,MFC、Winforms;不说能力如何,光生态圈也不答应。开发者的时间非常宝贵,推倒以前的代码,换个框架再写一遍,这是伤筋动骨之痛。但 GuiLite 可以嵌入在 Qt,MFC,Winforms,Web 里面,成为它的一部分,去解决以下问题: 1. 资源占用问题:大型 GUI 框架,往往对资源要求很高,可以用 GuiLite 重构资源消耗量较大的重模块 2. 刷新效率问题:对于有实时性要求的复杂控件,或刷新量比较大的控件,可以用 GuiLite 重构一下,在没有硬件加速的情况下,GuiLite 的绘制效率非常可观;另外对于普通 2D 的点线绘制,硬件加速的效果并不明显 相信熟悉界面编程的同学,都知道上面两个问题,算是老大难问题了;凭什么 GuiLite 能解决呢?我们的回答是:小,往往意味着快;小,往往也意味着更抗饿;不妨再看看上面的 3D 程序,如果完全用 JavaScript 编写,立方体转一圈,可能要几分钟;但在 GuiLite 的帮助下,是不是流畅许多呢? 为了能让 GuiLite 更有效的与其他 GUI 框架合作,我们在这个版本还做了以下工作: 1. 代码优化至 4703 行:用更小的体积,换取更快的速度;更小的资源消耗 2. 再次升级可移植性:通过运行 1h-1cpp.sh 脚本,迅速合并出 GuiLite 的统一头文件(GuiLite.h)及实现文件(GuiLite.cpp);有了这两个文件,开发者可以随心所欲的把 GuiLite 嵌入/移植到任意平台 最后,向 header only 的提出者致敬;向积极验证代码的同学致敬:是每天上百次的编译/运行,才换来了代码的快速稳定! ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Linux伊甸园开源社区,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |