技术分享 | 2022-09-29
图形绘制系统的国产化第一步

从工业控制中控台到智能车载仪表盘,从智能家居控制面板到智慧楼宇大屏监控,在我们身边,图形用户界面(GUI)无处不在,它在用户和设备之间建立着直观的联系,用户只需操作屏幕上的按钮等界面元素,即可向机器设备传递信息和指令,同时获取实时反馈,从而实现便捷的人机交互通信。

合迅智灵一体化智能开发平台已实现了涵盖软渲染引擎在内的完整图形绘制系统,并支持跨平台场景下的 GUI 图形界面构建。用户只需在代码中简单调用绘制图元、位图或文本等 API,便可以在屏幕上绘制任意图形,快捷且不受硬件环境的限制。

图1:合迅智灵图形绘制系统简图


图形用户界面是如此常见但也十分神秘,以至于让用户和上层应用开发者可能很少真正的深入思考这样一个问题:图形用户界面究竟是通过什么方式绘制到屏幕上的呢?合迅智灵在这中间又做了哪些重要的工作?

图2:老版 Windows 操作系统的图形用户界面


世界上有各种各样的硬件设备,上面运行着五花八门的操作系统,其中有很大一部分为用户提供了图形用户界面。例如:桌面端的 Windows、Mac 以及各种 Linux 发行版,移动端的 iOS、安卓以及各种嵌入式设备上搭载的系统等。但无论什么样的设备,什么样的系统,提供图形显示的机理都是基本一致的。在任何时代,“屏幕”都可以被描述为一个二维的像素矩阵,每一个像素也可作为单独的一个颜色加以描述。无论是简单的点、线、面还是复杂的图形、炫目的特效,都可以被分解并建立成一个又一个图元对象,投射到这整齐的像素矩阵之上。这就是图形绘制系统的工作,而这个“投射”的过程,我们则称之为“光栅化”。

所谓的“光栅化”是指将待绘制的实体,例如:点线面、文本、位图等,转换为光栅上的像素点集合的过程。

图3:光栅化流程示意


图形用户界面的的所有组件,例如:按钮、文本框、复选框等。无论简单或复杂,最终都可以按照上述思路,分解为点线面、位图和文本这些元素的组合。

图4:一个 Macintosh 系统的图标的光栅化


毋庸置疑的是,光栅化正是图形绘制系统中最核心的步骤。显示屏并不认识按钮、菜单、图形,然而一个好的图形绘制系统,就类似一个尽责的翻译官,将显示屏不认识的 UI 组件组合到一起,然后转换为可以直接交给屏幕处理的一整张光栅图。我们只需将这张光栅图,交给操作系统下层的图形绘制接口,例如:Linux 下的 X11 或 Wayland 协议接口,操作系统将会替我们完成接下来的绘制工作。这便是图形绘制系统的全部流程。


合迅智灵正是实现了上述工作,并将这些流程全部写在了源代码中,这也就是所谓的“软件渲染引擎”。软件渲染又称软渲染,它是一种内置在源代码之中的,完全脱离对硬件环境的依赖,保证无论在什么样的外部硬件环境下,都可以从容应对跨平台图形界面软件开发的需求的一种技术。

我们将合迅智灵的国产化跨平台渲染引擎分为三个“层”讨论,分别是用户层、开发平台层、操作系统层:

用户层 

即用户应用程序所在的层。用户可以在应用程序中直接调用高度封装的绘制函数,用以绘制图元、文本和位图,组合成按钮、文本框等具体的图形组件;

开发平台层 

即合迅智灵国产化图形渲染引擎,负责提供抽象的绘图引擎接口,管理帧缓冲数据区。绘图上下文调用绘图引擎,通过具体的光栅化算法更新帧缓冲数据区的数据,并将缓冲区数据交给操作系统的下层绘制接口,从而完成“一帧”图形的绘制;

操作系统层 

开发平台准备好的帧缓冲数据区的格式是与操作系统和硬件不相关的,因此操作系统只需要准备好待绘制的窗口,接受平台层传来的数据,即可完成绘制。

图5:完全使用国产图形所引擎绘制的软件界面,Linux 平台



小结

为保证自主可控性,国产化软件的开发者们如果放弃便捷的国外图形用户界面库,而不得不直接使用系统底层的图形接口来开发 GUI 程序,这将导致软件开发的难度和时间成本剧增。然而目前,国内在软件开发平台领域的缺失,导致国内各行业在开发软件时,没有一个很好的国产开发平台可用。为了高效开发交付图形界面的应用程序,从而不得不继续选用国外厂商的开发平台。受国外开发平台的现实因素,国内软件行业尤其是关基行业普遍存在使用国外代码库而导致的信息安全隐患和国产操作系统适配性差等问题。

合迅智灵的诞生,正是在极大程度上弥补了国产软件开发平台的空白,消除了安全隐患和版权威胁,从根本上致力于解决国产软件的“卡脖子”问题。在这条道路上,我们必将砥砺前行,不畏风雨,与国家发展同行,彰显技术报国的雄心。


推荐新闻
返回列表
试用申请
立即申请
试用申请