首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>Linux 嵌入式>文章内容
嵌入式Linux系统下图形库讲解及图形用户界面
来源:http://www.unix5.com 作者:riechelr_hl 发布时间:2007-07-17  

PCI 设备可以把自己的控制寄存器映射到物理内存空间,而后,对这些控制寄存器的访问,给变成了对物理内存的访问。因此,这些寄存器又被称为“memio”。一旦被映射到物理内存,Linux 的普通进程就可以通过 mmap 把这些内存 I/O 映射到进程地址空间,这样就可以直接访问这些寄存器了。

当然,因为不同的显示芯片具有不同的加速能力,对memio 的使用和定义也各自不同,这时,就需要针对加速芯片的不同类型来编写实现不同的加速功能。比如大多数芯片都提供了对矩形填充的硬件加速支持,但不同的芯片实现方式不同,这时,就需要针对不同的芯片类型编写不同的用来完成填充矩形的函数。

说到这里,读者可能已经意识到 FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。所以,对于应用程序而言,如果希望在 FrameBuffer 之上进行图形编程,还需要完成其他许多工作。举个例子来讲,FrameBuffer 就像一张画布,使用什么样子的画笔,怎么样画画,还需要你自己动手完成。

1.4 LibGGI

LibGGI 试图建立一个一般性的图形接口,而这个抽象接口连同相关的输入(鼠标、键盘、游戏杆等)抽象接口一起,可以方便地运行在 X Window、SVGALib、FrameBuffer 等等之上。建立在 LibGGI 之上的应用程序,不经重新编译,就可以在上述这些底层图形接口上运行。但不知何故,LibGGI 的发展几乎停滞。

2 Linux 图形领域的高级函数库

2.1 Xlib 及其他相关函数库

在 X Window 系统中进行图形编程时,可以选择直接使用 Xlib。Xlib 实际是对底层 X 协议的封装,可通过该函数库进行一般的图形输出。如果你的 X Server 支持 DGA,则可以通过 DGA 扩展直接访问显示设备,从而获得加速支持。对一般用户而言,由于 Xlib 的接口太原始而且复杂,因此一般的图形程序选择其他高级一些的图形库作为基础。比如,GTK、QT 等等。这两个函数同时还是一些高级的图形用户界面支持函数库。由于种种原因,GTK、QT 等函数库存在有庞大、占用系统资源多的问题,不太适合在嵌入式系统中使用。这时,你可以选择使用 FLTK,这是一个轻量级的图形函数库,但它的主要功能集中在用户界面上,提供了较为丰富的控件集。

2.2 SDL

SDL(Simple DirectMedia Layer)是一个跨平台的多媒体游戏支持库。其中包含了对图形、声音、游戏杆、线程等等的支持,目前可以运行在许多平台上,其中包括 X Window、X Window with DGA、Linux FrameBuffer 控制台、Linux SVGALib,以及Windows DirectX、BeOS 等等。

因为 SDL 专门为游戏和多媒体应用而设计开发,所以它对图形的支持非常优秀,尤其是高级图形能力,比如 Alpha 混和、透明处理、YUV 覆盖、Gamma 校正等等。而且在 SDL 环境中能够非常方便地加载支持 OpenGL 的 Mesa 库,从而提供对二维和三维图形的支持。

可以说,SDL 是编写跨平台游戏和多媒体应用的最佳平台,也的确得到了广泛应用。

2.3 Allegro

Allegro 是一个专门为 x86 平台设计的游戏图形库。最初的 Allegro 运行在 DOS 环境下,而目前可运行在 Linux FrameBuffe 控制台、Linux SVGALib、X Window 等系统上。Allegro 提供了一些丰富的图形功能,包括矩形填充和样条曲线生成等等,而且具有较好的三维图形显示能力。由于 Allegro 的许多关键代码是采用汇编编写的,所以该函数库具有运行速度快、资源占用少的特点。然而,Allegro 也存在如下缺点:

1)对线程的支持较差。Allegro 的许多函数是非线程安全的,不能同时在两个以上的线程中使用。

2)对硬件加速能力的支持不足,在设计上没有为硬件加速提供接口。

2.4 Mesa3D

Mesa3D 是一个兼容 OpenGL 规范的开放源码函数库,是目前 Linux 上提供专业三维图形支持的惟一选择。Mesa3D 同时也是一个跨平台的函数库,能够运行在 X Window、X Window with DGA、BeOS、Linux SVGALib 等平台上。

2.5 DirectFB

DirectFB 是专注于 Linux FrameBuffer 加速的一个图形库,并试图建立一个兼容 GTK 的嵌入式 GUI 系统。它以可装载函数库的形势提供对加速 FrameBuffer 驱动程序的支持。目前,该函数库正在开发之中(最新版本 0.9.97),详情可见 http://www.directfb.org/

3 面向嵌入式Linux 系统的图形用户界面

3.1 MicoroWindows/NanoX

MicroWindows(http://microwindows.censoft.com)是一个开放源码的项目,目前由美国 Century Software 公司主持开发。该项目的开发一度非常活跃,国内也有人参与了其中的开发,并编写了 GB2312 等字符集的支持。但在 Qt/Embedded 发布以来,该项目变得不太活跃,并长时间停留在 0.89Pre7 版本。可以说,以开放源码形势发展的 MicroWindows 项目,基本停滞。

MicroWindows 是一个基于典型客户/服务器体系结构的 GUI 系统,基本分为三层。最底层是面向图形输出和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于 X Window 和 Windows CE(Win32 子集)的 API。

该项目的主要特色在于提供了类似 X 的客户/服务器体系结构,并提供了相对完善的图形功能,包括一些高级的功能,比如 Alpha 混合,三维支持,TrueType 字体支持等。但需要注意的是,MicroWindows 的图形引擎存在许多问题,可以归纳如下:

共4页: 上一页 [1] 2 [3] [4] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·Qt/Embedded在嵌入式Linux中的应
·嵌入式Linux:uClinux操作系统移
·嵌入式系统 Boot Loader 技术内
·嵌入式 用户图形接口uC/GUI的简
·基于GTK+和X的GUI在嵌入式Linux
·嵌入式Linux系统下的MiniGUI研究
·Linux串口上网的简单实现 (图解)
·在Ubuntu上建立Arm Linux的开发
·嵌入式Linux操作系统启动信息完
·Linux 2.6 内核的嵌入式系统应用
·嵌入式Linux在Blackfin处理器上
·嵌入式uClinux的内核结构和开发
  相关文章
·嵌入式Linux操作系统名词资源讲
·嵌入式Linux系统下的MiniGUI研究
·Sharp Zaurus 手持式系统是嵌入
·文档分析__嵌入式Linux在网络处
·嵌入式Linux移植实时设备驱动程
·基于嵌入式Linux的PMP系统设计与
·嵌入式Linux的DiskOnChip设备驱
·嵌入式Linux系统的低功耗策略研
·嵌入式Linux系统的触摸屏驱动开
·一种嵌入式Linux平台的软硬件设
·Qt/Embedded在嵌入式Linux中的应
·用Linux构造嵌入式实时应用系统

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!