DirectFB中的重要术语

 

1 Blitting
Blitting是在拷贝图像数据的进程中所引用。举一个最简单的例子就是当两个Surface有相同的大,颜色深度和像素格式时Blitting其中一个Surface到另一个Surface。在这个过程中内存只被复制而没有被处理(就像复制其他任何类型的数据一样)。???alpha通道的传输,或者从一种像素格式到另一种像素格式的传输。许多图形显卡包含了一个硬件Blitting来完成多种格式的传输。

2 Surface
Surface是内存中一个图像以一种具体的像素格式被保存的一块保留区域。一个Surface可以位于视频和/或系统内存中。可以在一个Surface上进行画图操作或者把一个Surface Blitting到另一个。(见1.21节)
在全屏模式下时,屏幕中的可视区表示为”主Surface”,所以可以直接在屏幕的可视区完成图形操作。
每个Surface都可以选择双缓冲,图形操作将首先在辅助缓冲区中执行然后在Flip()被调用之后变得合法。在许多情况下建议在主Surface中使用双缓冲来防止闪烁。

3 SubSurface
SubSurface使用和正规Surface相同的接口。它代表父类Surface的一个部分并且没有为自己分配任何系统或视频存储空间。

4 Layer
依靠于图形硬件可以有一个或者多个显示层。一个标准的PC显卡只有一个层,但是??就像机顶盒就可能支持2个或更多的层。不同的层在显存中占据着不同的区域,通常通过alpha混合来组合,这由显示硬件自动完成。如果最底层的内容发生了改变将不会被重绘,上一层的内容保持不变。今天,许多PC显卡也支持额外的可以缩放可以从YUV转为RGB的层(视频层)。这个层不能进行颜色混合和设置成保持完全的不透明。varios DirectFB图形驱动支持视频层。
5 Window / Windowstack

通常一个层的surface的内容受控于集成的窗体系统,这意味着属于这个层的窗体在一个可配置的背景上。每个窗体有它自己的一个 surface 这个surface 被窗体系统用来生成构成重叠窗体的图像。

6 IDirectFBDisplayer接口

依靠于图形硬件特性,DFB可以支持一个或多个层(layer),层数的多少完全取决于硬件的性能。不同的层在显存中占据着不同的区域,通常通过alpha混合来达到某种透明效果,并且这种透明效果由显示硬件自动完成,不需要重新计算处理。因为层对应的是显存中的不同区域,所以最底层的内容发生了改变将不会导致其他各层会被重绘,上一层的内容依然会保持不变。

7 IDirectFBScreen接口

DFB中Screen接口被用来描述显示设备的特性,例如分辨率。DFB也可以支持多个Screen,每个screen用来描述一个显示设备。Layer通常会被注册到Screen接口,一个Screen接口可以和几个layer相关联。如果在一个Screen上有多个layer,那么就可以完成各个layer之间的混合效果。并且layer提供了相关接口函数调整layer在screen上的相对位置

8 IDirectFBSurfce IDirectFBPalete

Surface是内存中一个图像以一种具体的像素格式被保存的一块保留区域,一个Surface可以位于视频或系统内存中。在全屏模式下时,可以通过创建primary surface来表达primary layer的可视区域。每个layer的可视区域可以通过IDirectFBDisplayLayer_GetSurface来获得,IDirectFBSu

Rfce提供了一系列的绘图操作用来达到各种图像处理的效果,IDirectFBPa

Lete在在一些特定的绘图操作中被使用到。

9 IDirectFBWindow

IDirectFBWindow接口通过IDirectFBDisplayer创建。在每个layer上可以创建多个窗口形成一个窗口栈,多个窗口依据其优先级在layer上显示层叠的效果。当某个窗口的内容被更新时,窗口系统会根据窗口之间的覆盖关系以及Blend因子来确定layer可视区域需要重绘的部分。目前DFB提供了3个窗口管理系统:Default,Unique,Sawman,Default提供常用的窗口功能,响应鼠标键盘事件。Unique,Sawman可以用来定制个人风格的窗口管理系统,用户可以用其提供的接口为多个应用程序提供个性化的布局。

10 IDirectFBImageProvider,IDirectFBVideoProvider,IDirectFBF

ont,DirectFBDataBuffer

DFB本身并不提供图像,视频,字体的支持接口,而是把第三方组件纳入DFB接口,这样做一方面可以减少DFB本身的大小,另一方面可以使DFB具有更好的可扩展性,可以更好的利用硬件所提供的多媒体功能。IDirectFBDataBuffer能对视频图像数据提供读、写、定位等操作。

11图片

图片格式的种类很多,像BMP之类的位图处理可能比较简单,而像JPG和PNG等的图片,采用了高级的压缩技术,解压算法比较复杂,通常需要第三方程序库的支持。DFB定义了IDirectFBImageProvider接口来处理图片,在第三方图片程序库上加上一个adapter就可以在DFB中使用了。

12视频

视频格式更多,解压算法也更复杂,在实际应用中为了提高帧率,通常都是用硬件来加速解码。DFB定义了IDirectFBVideoProvider接口来处理视频,在第三方视频程序库上加上一个adapter就可以在DFB中使用了。

13字体

字体有点阵字体和矢量字体之分,矢量字体又有诸如truetype之类几种格式。前者可能比较简单,而后者的处理相当复杂,要借助如freetype等第三方程序库来实现。DFB定义了IDirectFBFont接口来处理字体,在第三方字体程序库上加上一个adapter就可以在DFB中使用了。

14 IDirectFBInputDevice IDirectFBEventBuffer

IDirectFBInputDevice并不是真正的设备驱动。它主要是从设备文件中读到事件然后转换成DFB自己的事件格式,然后在后台通过dfb_input_di

Spatch把事件分发出去给EventBuffer。目前系统中常用的输入设备有鼠标、键盘、遥控器。关联窗口可以从EventBufer中读取DFB事件并进行相应的操作。

3 基于DFB的一个应用实例

图中的图像系统使用了两个layer层,底层layer层被设置为全屏模式,被用来显示video视频。顶层layer层被设置为窗口模式,应用程序已经用一个窗口来显示文本内容。通过设置顶层layer的Alpha值,使得底层layer的video视频依然是可见的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值