展会信息港展会大全

一种嵌入式GUI图形引擎的优化算法
来源:互联网   发布日期:2011-09-09 13:52:10   浏览:7210次  

导读:大型科技综合指导类期刊(旬刊)...

作者 李铁鹰,冀 鸣 来自 (太原理工大学信息工程学院,山西太原,030024) 人气 549 背景色

杏仁黄

 

秋叶褐

 

胭脂红

 

芥末绿

 

天蓝

 

雪青

 

灰

 

银河白(默认色)

字号 大 中 小

文章编号:1005-6033(2006)16-0216-02                      收稿日期:2006-04-03
摘 要:在研究MicroWindows的基础上,针对影响其绘图效率和显示性能的C/S系统架构和图形引擎层的区域裁剪算法,提出一种新的区域管理模式。
关键词:嵌入式GUI;MicroWindows;图形引擎
中图分类号:TP391.41    文献标识码:A
MicroWindows是一个开放源码的嵌入式GUI平台,用于把图形视窗环境引入到运行Linux的小型设备和平台上。MicroWindows因其体积小、定制性好、可移植性强以及对众多处理器芯片的广泛支持等优点,在嵌入式领域得到了广泛的应用。MicroWindows系统中采用Server/Client的架构。Server和Client通过Socket来通信,通信量的大小直接影响到图形系统的显示性能。窗口的管理需要Server和窗口管理器协同完成,Server和窗口管理器之间的协同以及频繁的通信必然会使系统显示效率的损失更加严重。同时,一些专业开发者和竞争对手也对MicroWindows的图形引擎提出了诸多批评:其区域管理和裁剪算法比较低级,效率不高,某些情况下甚至可能造成系统刷屏现象。
针对MicroWindows的以上问题,有人尝试改变其架构:绑定Client到Server上,使得具体的功能实现直接由Server端的函数来实现,如此省去了C/S之间Socket的通信。该方式能使系统运行效率明显提高,但是对应用设计者来说不仅要完全把握系统的实现流程,还要由自己对每一个细节进行编码实现,特别是对于多个应用程序的情况,必须由一个良好的窗口管理器来对他们进行协调和管理。最重要的是,这样做丧失了MicroWindows传统C/S结构的灵活性,仅能适用于某些低端嵌入式应用。
通过研究发现,许多嵌入式设备的CPU运算能力比较低,在窗口切换以及背景刷新时可能会导致明显的刷屏现象,因此,Microwindows的区域管理以及裁剪算法效率较低的现状极大影响了它的推广和发展,对其进行优化改进是很有必要的。本文提出了一种新的区域管理和裁剪算法,用以提高MicroWindows的绘图速度,从而从根本上提高MicroWindows的图形的显示性能。
1 MicroWindows的图形引擎简介
Microwindows 采用分层的软件体系结构,总体上可分为3层:设备驱动程序层、图形引擎层以及最上层的API层。Microwindows 的核心例程都集中在图形引擎层,在此只对这一层作简单分析。
图形引擎层通过调用输入、输出驱动程序与底层硬件接口,使用最底层提供的服务完成对画线、区域填充、文本、多边形、裁减区域、色彩等的支持。其中最主要的是区域管理和剪切算法的实现。图形引擎层函数的参数表中都包括一个指向SCREENDEVICE 结构(PSD)的指针作为其第一个参数。PSD参数指定底层的显示细节,比如显示屏的x 和y 向的尺寸及颜色模式等等。SCREENDEVICE 结构中有一个函数指针,该指针指向实际的绘图函数,完成具体的绘图操作。
1.1 区域
区域描述屏幕上像素点的分布;区域的像素点集由相应的数据结构来描述。在MicroWindows 中区域由一些非重叠的矩形组成的动态数组CLIPREGION来描述,存放在“y-x”类型的队列中,可动态地分配它所包含矩形的数量。在同一队列中,所有矩形的高度是一样的,只有宽度可变,这样就可以比较简单地实现对区域的操作,同时也导致在区域裁剪时只能横向优先(见图1)。G2区域被G1区域覆盖,裁剪后分解为R1,R2区域,CLIPREGION中将记录这两个矩形数组。区域的主要操作包括创建和删除:创建一个区域首先要为MWCLIPREGION 结构分配一块内存,然后对其初始化;删除一个区域,即将该分区对应的MWCLIPREGION结构所占有的内存空间释放。此外,对区域的操作还包括复制区域、合并区域、在两个区域的交集处创建新区域、在两个区域的差集处创建新区域等。
1.2 裁剪
裁剪操作是指识别区域内或区域外的图形部分的过程,用来裁剪对象的区域称为裁剪窗口。通俗地讲,如果点被包含在裁剪区内就能被绘制出来。MicroWindows的绘图算法中,作裁剪的函数是在GsSetClipWindow()中实现的,所有的绘图程序都要调用两个附加程序来决定是否画图。
第一, GdClipPoint 例程

赞助本站

相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港