这是一篇面向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 库,但一般并不默认安装,在我们的网站上提供了这个库的下载
http://www.directfb.org/download/contrib/
过去移植到 DirectFB的avifile和flash 视频功能已经被移植到扩展包中。
我们建议安装pkg-config,可以从 http://www.freedesktop.org/software/pkgconfig/取得,它将辅助您编译基于
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/bin PATH
配置 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 文档。
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 库,但一般并不默认安装,在我们的网站上提供了这个库的下载
http://www.directfb.org/download/contrib/
过去移植到 DirectFB的avifile和flash 视频功能已经被移植到扩展包中。
我们建议安装pkg-config,可以从 http://www.freedesktop.org/software/pkgconfig/取得,它将辅助您编译基于
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/bin PATH
配置 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 文档。