您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术DirectFB和Cairo的嵌入式图形开发实践 正文
DirectFB和Cairo的嵌入式图形开发实践

DirectFB和Cairo的嵌入式图形开发实践

点击数:7296 次   录入时间:03-04 11:41:32   整理:http://www.55dianzi.com   嵌入式系统-技术
引 言
    DirectFB是一个提供硬件图形加速、输入设备处理抽象并集成了透明功能窗体系统和多显示层处理的开源库。通过对底层硬件不支持的图形操作以回调函数实现,DirectFB实现硬件设备的完全抽象。另外DirectFB在设计之初就充分考虑嵌入式系统的固有特性,体积小巧,资源消耗低。作为嵌入式系统中强大的图形处理库,DirectFB成为Linux下图形处理的一个新的标准(CELF AVG 1.0标准)。
    使用DirectFB可以绕开X Window系统,让应用程序直接操作Frame Buffer,从而加速和简化图形操作。这对于嵌入式系统是很重要的,因为在资源有限的嵌入式系统中通常没有运行X Window。当然,DirectFB可以采用XDirectFB来开发,这样原来基于X Window开发的程序不需要修改就可以运行起来。
    DirectFB采用的是LGPL协议,因而可做商用开发库。LinuxTV、Palm Foleo等移动公司的项目均采用DirectFB作为底层图形库。
    值得一提的是,考虑跨平台、多语言等特定需求,开发者可以选择以DirectFB为后端的Cairo图形库进行2D图形操作。实践证明,这是一种嵌入式系统中高效、通用的解决方案。
    本文在介绍DirectFB相关特性之后,通过实例说明了其在嵌入式系统中的开发方法,并对基于DirectFB的Cairo图形库的使用关键点作了相关介绍。

1 轻量级图形处理库DirectFB
    DirectFB提供了丰富的图形操作方法,而且所有操作在芯片支持的前提下均可进行硬件加速。例如:矩形和三角形绘制和填充、BLIT、Porter/Duff规则混色等。Di—reetFB内部集成了一个简易的窗口系统,支持透明窗体。显示层和输入设备等资源可以通过加锁的方式访问。DirectFB对任何通用表面(surface)都提供了抽象,这使得窗口和全屏之间的切换只需要简单的设置合作级别即可。
1.1 DirectFB整体框图介绍
    DirectFB通过操作系统中Frame Buffer驱动程序提供的内核接口来访问图形硬件设备,这意味着DirectFB需要Frame Buffer驱动才可以工作。无论是否使用硬件加速,DirectFB都需要驱动完成设置分辨率、色深等视频模式,映射Frame Buffer等操作。对于特定的图形操作,DirectFB通过访问图形硬件的内存映射端口,提交命令给显卡加速引擎来实现。其整体框架如图1所示。

1.2 DirectFB接口框架
    DirectFB提供了一套C接口给用户调用DirectFB的各项功能。在DirectFB中,接口实质上是一个结构体,结构体中包含了功能函数指针,不同接口的函数指针指向不同的核心函数。比如IDireetFBSurface接口代表屏幕中可操作的区块,其中封装了BLIT、画框、画线和flip等核心操作。
    其中IDirectFB是整个库的顶层接口,可以通过DirectFBCreate函数来创建,其他接口可以通过这个接口创建。所有存在的接口也可以通过它来枚举访问。图2展示了DireetFB的接口框架。

    表1对主要接口模块的功能作了简单说明。具体的操作可以查看DirectFB官方网站的相关帮助文档。

2 DirectFB应用开发
   
下面通过一个例子说明使用DirectFB接口的开发方法:

   
   


本文关键字:嵌入式  开发  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术