Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1867116
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2010-10-18 14:56:22

-------------------------------------------------------------------------------------------
DirectFB自述
*****************************************************************
这是一篇面向DirectFB开发者的文档 。
   DirectFB初衷是为嵌入式系统而设计的图形库,以最低限度的资源使用和开销,提供最大的硬件加速度性能。
   更多更新信息请浏览网址
   
目前支持的操作系统
*****************************************************************
-GUN/LINUX
应用SDL,以下系统同样支持,但没有硬件加速功能
- FreeBSD (FreeBSD 5.2,DirectFB 0.9.21 )
- NetBSD  (NetBSD 1.6)
- OpenBSD (OpenBSD 3.2)
如果在进行过程中,发生问题,请试运行./configure --disable-mmx解决
必须注意SDL目前还没有进行完全测试,旨在让开发者可以在各种环境中开发DirectFB应该程序

正进行尝试系统本身支持DirectFB有以下:
-Mac OS X (Mac OS X 10.3.5)

我们没有足够的资源确保每次发行的DirectFB都可以行很好地运行在受支持平台上,所以如果您是以上列出系统平台的使用者,
并有时间定时测试cvs版本,那么您的帮助是我们极大鼓励。

编译条件
-------------------------------------------------------------------------
-LINUX 内核2.2以上,并运行帧缓冲(FrameBuffer),可以查看proc/fb确认帧缓冲(FrameBuffer)是否运行。
-SDL系统(可选)
- freetype (version >= 2.0.1)
- libjpeg62
- libpng2 or libpng3
- zlib

多应用程序核同样需要,更详细请参考《运行多个DirectFB程序》

图象和字体功能可以不进行编译,但强烈建议不要这样做,因为代码例子
很多与及其他directfb应用依赖于这些功能的提供。
libmpeg3 video 功能依赖于libmpeg3 库,但一般并不默认安装,在我们的网站上提供了这个库的下载


过去移植到 DirectFB的avifile和flash 视频功能已经被移植到扩展包中。
我们建议安装pkg-config,可以从取得,它将辅助您编译基于
DirectFB的程序

运行(应用)条件
-------------------------------------------------------------------------
取决于您运行的DirectFB程序,可能需要以下一些或者所有条件。
-FrameBuffer驱动设备,可以使用命令 'fbset -i'检测是否正确运行.
-键盘,如果需要工作中控制台中。
-PS/2,串口鼠标可以很好支持,USB或是ADB的鼠标通过模拟PS/2,一样可以正常使用。

运行单个程序核时,总是需要访问 /dev/tty0,/dev/fb0 和鼠标(/dev/psaux, /dev/mouse)。
可以选择ROOT用户或是对这些资源有访问权限用户运行所有的DirectFB程序。一个可行的方法论是,增加到一个
用户到tty或其他相同的组中,并允许这个组可以对以下设备有读写功能:
       crw-rw----    1 root     tty       29,   0  /dev/fb0
       crw-rw----    1 root     tty       10,   1  /dev/psaux
       crw-r-----    1 root     tty        4,   0  /dev/tty0
如果运行多程序核,只有主程序需要访问这一些设备资源,另外一些辅进程只需要访问 /dev/fb0,与

       crw-rw----    1 root     fusion    29,   0  /dev/fusion/0
     
注意主进程创建一个'/dev/shm/fusion.0'共享文件,可以被任何匹配的用户或组进行读写。
   
一些DirectFB的应用例子有以下额外的需求条件
     df_video需要支持video4linux的显卡
     df_joystick需要游戏杆

同时运行多个DirectFB 程序
-------------------------------------------------------
DirectFB默认运行的是单程序核,但可以进行配置多程序核,在一个会话中运行多个DirectFB程序。
DirectFB程序间的通信通过一个称呼为联合层,这联合层以前实行了,完全在用户空间使用
信号量和消息队列。0.9.15 版本后联合内核要求完成临界区功能,这样联合层的功能更加强大与稳定。
目前只有在LINUX中可以得到支持,需要安装这个模块,可以从CVS版本中签出或在此发行版中PATCHES目录中找到。注意您不需要
把从CVS版本库中签出的联合层在内核中打补丁。
编译允许多程序核的DirectFB
     ./configure --enable-multi
确认您的LINUX系统内核中支持TMPFS,在内核的源代码Documentation/filesystems/tmpfs.txt文档中有说明
挂载/dev/shm文件系统
     mount tmpfs /dev/shm -ttmpfs

tmpfs项是一个可选的指定名,可以指定其他名称,参考directfbrc(5)。但所以程序必须指定同样的名称。

一个测试多程序核的方法是:安装lite工具包与DFBTerm,这是一个DirectFB终端,都可以从DirectFB 的CVS版本库中取得。
可以从dfbterm中运行DirectFB程序   
   
建议
---------------
为充分利用硬件加速功能,迈拓(matrox)的g200/g400/g450/g550显卡推荐在这个发行版directfb 。
ati128 ,Voodoo3/4/5/banshee ,NeoMagic 和 S3的显卡 在这个发行版本中都有很大改进,但只支持部分可行的加速功能。

安装
------------

1) In the DirectFB directory type:
在DirectFB包目录下,运行以下命令
        ./configure
        make
        make install (as superuser)
运行'./configure --help'要以获得者更多的可用选项
重要选项包括:
        --enable-multi   允许多程序核
        --enable-debug   允许调试信息与断言
        --enable-trace   允许运行时堆栈跟踪
      调试与堆栈跟踪将产生影响,会导致某一些功能领域功能下降,例如显示文字
      You may use the options "no-debug" and "no-trace" by default, e.g.
      in '/etc/directfbrc', and use "--dfb:debug,trace" on the command
      line if needed.
      在'/etc/directfbrc'默认使用"no-debug" and "no-trace"选项,关闭调试与堆栈跟踪功能。
      在需要时可以在命令行中使用--dfb:debug,trace恢复。
2 )确保/etc/ld.so.conf中加入"/lib"
      默认是"/usr/lib" 。加上后,必须
      运行' ldconfig '。
      同样,可以在加在环境变量LD_LIBRARY_PATH 中。临时切换到另一个安装版本,这是一个很有效的方法。
3) You might want to copy fb.modes to /etc or merge it with your
      existing /etc/fb.modes file. The first entry will be used by
      default - copy other entries you may need.

4)如果需要使用串口鼠标,创建一个名称为/dev/mous文件链接指向串口号设备(例如 /dev/ttyS0)
   然后在/etc/directfbrc 或 ~/.directfbrc中增加一行:"mouse-protocol=[ms|ms3|mouseman|mousesystems]"
   描述所用鼠标的接口(协议)

5)如果进行交叉编译,同时已经安装了依懒库,确保那一些库一定要在'PATH'环境变量最前面增加bin目录
例如,如果使用的配置是:--prefix=/dfb/usr/local
那么,在要编译与安装时,确定要export PATH=/dfb/usr/local/binPATH

配置 DirectFB
--------------------

   有比较多东西,可以配置。可以使用默认值,跳过配置,但你可能要设置的一些好东西。有
   几种方式做到这一点。你可以编辑系统配置/etc/directfbrc或$HOME/.directfbrc文件。有一个称为 directfbrc(5)
   手册中说明了所有设定项。该手册还介绍了如何通过命令行配置directfb运行。
   
配置 Linux 帧缓冲(frame buffer)设备
-----------------------------------------
    DirectFB需要Linux内核支持帧缓冲(frame buffer),查看内核文档(/usr/src/linux/Documentation/fb/)
    了解如果启动你的显卡的帧缓冲(frame buffer)驱动。
   一般VESA的帧缓冲(frame buffer)驱动不支持模式切换,这样发挥不了硬件的加速功能。
   要使DirectFB用运行在veasfb上,要在/etc/lilo.conf增加到以下几行:
          append="video=vesa:ywrap,mtrr"
   #'ywrap'允许圈画功能.
   #'mtrr' 允许为帧缓冲(frame buffer)设置缓冲功能进行write-combining

         vga=791
  #设置系统启动时的模式。791代表1024x768@16, 788 代表 800x600@16.
   
   以下是 VESA的所有显示模式
   位    640x480 800x600 1024x768 1280x1024 1600x1200
   8       769     771     773      775       796
   16      785     788     791      794       798
   32      786     789     792      795       799
   有一些帧缓冲(frame buffer)驱动支持模式转换.DirectFB支持在/etc/fb.modes文件列出的模式,默认是第一个找到入口
   被使用。
   
   如果拥有matrox显卡,可能想尝试 补丁目录下的vsync进行修补
  ,让应用为垂直仿造。"闲置等待" 。
  
  
使用内置"窗口管理系统"
----------------------------------

    directfb缺乏一个真正的窗口管理系统,我们增加了一个窗口栈架构允许基本窗口管理。当处理按键或加速键时,
   可以按以下方式进行操作:
   如下:
     -移动改变选择焦点窗口
     -拖拉改变焦点窗口的大小
     -拖拉改变焦点窗口的透明度
     -按C关闭焦点窗口
     -按A降低焦点窗口到底部
     -按X窗口循环取得焦点
     -按S提升焦点窗口到顶部
     -按P允许显示鼠标光标
     -按Escape退出全屏,返回桌面。
      (如果全屏程序还在刷新中,目前这种方法行不通)
   如果你没有键盘,需要使用 "capslock-meta"选项(参考 directfbrc(5))
   
文档
-------------
   这个版本完整的HTML格式API手册,位于docs目录中,API手册可当作概念来浏览。登陆http://www.directfb.org/documentation/
   在线浏览教程和FAQ 文档。
阅读(910) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-18 15:24:34

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com