作者:EasyWave                                       时间:2014.09.13

类别:开源GUI系统-DirectFB简介           声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章......

***************************************************************************************************************************

一:DirectFB简介

DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示。它是一个用软件封装当前硬件无法支持的图形算法来完成硬件加速的层。DirectFB是为嵌入式系统而设计。它是以最小的资源开销来实现最高的硬件加速性能。

DirectFB是图形API存在于Frame Buffer层之上与高级图形管理层如GTK+等之下的。它可以以很小的系统资源占用来提供图形硬件加速功能,提供类如多路a通道渲染模型等高级图像操作。它不修改Linux内核,除了标准C库没有其他库的依赖。应用在了基于Linux系统的DTV显示系统的研发和其他有关Linux显示界面的项目上。支持市面上绝大多数显示卡,支持键盘、鼠标、遥控器、游戏手柄、触摸屏等输入设备。支持JPEG、PNG、GIF、mpeg1/2、AVI、MOV、Flash、Video4Linux、DirectFB bitmap font和TrueType等音视频文件和字体。

二:DirectFB在系统的位置
      从GUI整个系统架构来讲,对于一般的MMP,DTV和STB来说,下面图中是比较经典的结构。 DirectFB都处于QT,GTK+这样的高级GUI框架的下面,Linux系统驱动的上面。如下图所示:

从功能上面来讲,下面图中比较形象的说明了DirectFB的主要作用:图形,文字的处理(DirectFB把TS经过Decoder处理之后的码流,再加上图形和文字,一起传给视频的芯片),如下图所示:

三:DirectFB GUI的架构

对于上层的GUI高级框架来说,DirectFB是透明的,下图是一个更加细化的DirectFB的结构图:

对于底层的驱动来说,DirectFB里面负责和硬件打交道的显卡的驱动(gfxdriver)和显示系统(system),这里面gfxdriver是和各个硬件平台相关的,有可能需要自己写。 为了更易于理解DirectFB,需要先介绍几个DirectFB里面的概念:

  • Layers:代表互相独立的图形缓存。大多数嵌入式设备都有多个layer。多个layer根据对应的alpha值混合 在一起,从而显示出来。
  • Surface:代表一块预留的内存,来保存像素数据。DirectFB中的Drawing,Bilitting操作就是基于 surface的。Surface的内存根据设定,可以从系统中分配,也可以从显卡的内存中分配。
  • Primary Surface:代表一个特殊layer的特殊surface。如果primary surface是单缓冲的,任何对于 primary surface的操作都会直接反应到显示屏上。
  • Subsurface:是一个surfac的子集,但是自身并不占有任何内存。
  • Window/Windowstack:控制一个layer中的surface该显示什么。Window属于某个背景可以设定的layer。 每个window有自己的surface,window用这个surface来组合图像。

比如说下图中有三个Layer,最下面的Layer是一幅背景图,中间的Layer是一个透明的带有一个“igel”的Layer,最上面是一个透明的带有subtitle的Layer,最后我们在显示器中看到的就是各个Layer的混合。

再比如说下面这幅图,Lower Layer是一个全屏模式的Layer,它的背景图片渲染在自己的SurFace上面。Video area是一个SurFace,用来显示video。Upper Layer通过window stack/window 来显示应用程序的内容,而且Upper Layer是一个透明的Layer,这样混合之后,可以透过上面的Layer看到下面的video。

DirectFB的架构介绍相关推荐

  1. MindSpore Lite整体架构介绍

    MindSpore Lite整体架构介绍 MindSpore Lite框架的总体架构如下所示: • 前端(Frontend): 负责模型生成,用户可以通过模型构建接口构建模型,将第三方模型和MindS ...

  2. MindSpore整体架构介绍

    MindSpore整体架构介绍 MindSpore框架架构总体分为MindSpore前端表示层.MindSpore计算图引擎和MindSpore后端运行时三层. • MindSpore前端表示层(Mi ...

  3. 微服务架构介绍和RPC框架对比

    微服务架构介绍和RPC框架对比 1.微服务架构 1.1 特征 自动化部署,端点智能化,语言和数据的去中心化控制. 1.2架构 一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中 ...

  4. 伍哥原创之豆荚商城商品搜索架构介绍

    为什么80%的码农都做不了架构师?>>>    豆荚商城(www.dou55.com)商品搜索架构介绍 1,需求分析 伍哥所在的豆荚商城是一个家电行业的B2C网上零售平台.作为这样一 ...

  5. 12.1 LNMP架构介绍;12.2 MySQL安装;12.3-2.4 PHP安装(上下);12.5

    扩展: Nginx为什么比Apache Httpd高效:原理篇 http://www.toxingwang.com/linux-unix/linux-basic/1712.html apache和ng ...

  6. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  7. LAMP架构介绍、MySQL和MariaDB介绍、MySQL安装

    2019独角兽企业重金招聘Python工程师标准>>> LAMP架构介绍 Linux+Apache+MySQL+PHP 就是在linux系统上安装httpd. mysql .PHP, ...

  8. 互联网直播云计算架构介绍

    互联网直播云计算架构介绍 原文:互联网直播云计算架构介绍 思想 拆分 URL分层 模块化 云服务结构 ECS 云计算的优势 -------------------------------------- ...

  9. LNMP基础架构介绍与安装

    1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP  nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量.  nginx和LAMP不 ...

最新文章

  1. Linux文件与目录管理(文件查阅)
  2. Mac Oracle SQL Developer “欢迎使用“页卡死,解决办法
  3. dig+host+nslookup 域名解析命令
  4. 关于页面的多种自适应布局——两列布局
  5. bootstrap下载地址
  6. 自定义对话框(jDialog)
  7. python编码思维导图_Python入门之ATM+购物车代码版思维导图
  8. DataStream API及源算子
  9. 2 imwrite中文路径_如何为FreePBX/Asterisk配置中文语音支持
  10. 【ASP.NET Web API教程】6.1 媒体格式化器
  11. 应用程序图标丢失快捷方式没有图标怎么办
  12. python句柄无效_使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
  13. 微信小程序支付 退款 订单查询 退款查询
  14. 互联网供应链金融业务模式和未来发展,《互联网供应链金融》好书推荐
  15. POJ 2455 Secret Milking Machine 二分枚举 + 最大流
  16. Note For Linux By Jes(19)-Linux 备份策略
  17. 使用java Apache poi 根据word模板生成word报表
  18. 台达PLC从0到实战100%
  19. 桃源网络硬盘.Net sql注入漏洞
  20. docker限制容器内存

热门文章

  1. java中序列化的serialVersionUID解释
  2. todo已完成任务_重要主干街路已完成清雪任务
  3. 计算机软件系统包括应用软件和什么,计算机软件系统包括什么
  4. 学生签到系统c代码_C语言实现简单学生学籍管理系统
  5. 安卓怎么显示res文件夹中的html_android中自定义WebView显示网页或本地html文件 | 学步园...
  6. pb string最大长度_跑马备赛训练计划大盘点,助你跑出PB
  7. c swap方法在哪个库里面_swap
  8. 怎么往integer型数组添加数据_面试中经常问到的Redis七种数据类型,你都真正了解吗?...
  9. android 请求参数打印,Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题...
  10. java打星星_java实现星星图形的输出