- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
引 言
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 图形库的使用关键点作了相关介绍。
轻量级图形处理库DirectFB
DirectFB 提供了丰富的图形操作方法,而且所有操作在芯片支持的前提下均可进行硬件加速。例如:矩形和三角形绘制和填充、BLIT、Porter/Duff 规则混色等。Di—reetFB 内部集成了一个简易的窗口系统,支持透明窗体。显示层和输入设备等资源可以通过加锁的方式访问。DirectFB 对任何通用表面(surface)都提供了抽象,这使得窗口和全屏之间的切换只需要简单的设置合作级别即可。
DirectFB 整体框图介绍
DirectFB 通过操作系统中 FrAME. Buffer 驱动程序提供的内核接口来访问图形硬件设备,这意味着 DirectFB 需要 Frame. Buffer 驱动才可以工作。无论是否使用硬件加速, DirectFB 都需要驱动完成设置分辨率、色深等视频模式,映射 Frame. Buffer 等操作。对于特定的图形操作,DirectFB 通过访问图形硬件的内存映射端口,提交命令给显卡加速引擎来实现。其整体框架如图1所示。
DirectFB 接口框架
DirectFB 提供了一套 C 接口给用户调用 DirectFB 的各项功能。在 DirectFB 中,接口实质上是一个结构体,结构体中包含了功能函数指针,不同接口的函数指针指向不同的核心函数。比如IDireetFBSurface 接口代表屏幕中可操作的区块,其中封装了BLIT、画框、画线和 FLIP 等核心操作。
其中 IDirectFB 是整个库的顶层接口,可以通过DirectFBCreate 函数来创建,其他接口可以通过这个接口创建。所有存在的接口也可以通过它来枚举访问。图2展示了 DireetFB 的接口框架。
表1对主要接口模块的功能作了简单说明。具体的操作可以查看 DirectFB*****的相关帮助文档。
表 1 DirectFB 接口描述表
接 口
说明
IDirectFB 主接口
DirectFB 的主接口,由 DirectFBCreat e 创建
平面接口对象
_,
图片内容绘制与状态控制,缓冲操作,调色板访问与
子域剪切逻辑
配詈层接口
窗口堆栈或直接共享,i'独占访问平面内容
窗口对象接口
控制外表与焦点,位置与堆栈,事件缓冲与平面访问
事件缓存接口
本地平件缓冲,发 送/接收事件,等待本件,中止等待或重置缓冲
字体接口
用于测量字体的接口,计昼字符串或单个字符补查
询/选择编码
|
图片容器接口
图片装备容器的接口,接收有关图片的信息与绘制到平面中
,`_
视频容器接口
视频装备容器接口,提供高级播放控制与基本法流信息 W,四 沉谁庄
DirectFB 应用开发
下面通过一个例子说明使用DirectFB 接口的开发方法:
I D 让 ec t F B IDirectFBDisplayLayer lDirectF. BW indow IDireetFBSur.face IDirect FBE·ve11tBu ff er
升 dfb ;
layer;
window;
window_surf.ac,e ;
buffer; , 协 四 五
上面几行代码分别声明了DirectFB 的主接口、显示层接口、窗口接口、绘图表面接口和消息缓冲接口。然后通过下列代码对
原创力文档


文档评论(0)