目标
- 最小的内存占用
- 最大可能的硬件加速
- 支持高级图形操作,如 multiple alpha blending mode
- 无内核修改
- 无依赖库 (除了 libc)
- 满足 MHP 的需要
图形操作
DirectFB 支持以下图形功能,可硬件实现(若chipset driver 支持),也可软件实现
- 矩形填充/绘制
- 三角形填充绘制
- 画线
- 内存拷贝 (blitting)
- 基于 alpha 通道的混合
- 基于某个 alpha 元素的混合
- 支持 Porter/Duff 定义的所有混合
- colorizing
- source color keying
- Destination color keying
窗口系统
- 支持透明/半透明窗口
- ARGB surface
资源管理
- 显示层和输入设备可以被锁定 (用于游戏)
- 对显示层、窗口和其它 surface 进行了抽象,便于全屏和窗口之间的切换
图形驱动
使用可动态加载的驱动模块,实现硬件加速,目前支持的芯片有:
- Matrox Mystique/Millenium, G100, G200, G400/G450, G550
- Via CLE266
- ATI mach64/Rage Pro series
- ATI Rage 128
- ATI Radeon
- 3dfx Voodoo3/4/5/Banshee
- igs CyberPro 5xxx
- S3 Savage 3/4 series
- NeoMagic 220/2230/2360/2380
- nVidia TNT/GeForce series
- SiS 315
- Intel i810
- NSC Geode
其它芯片也可以工作,但不支持硬件加速。
输入驱动
支持下面的输入设备:
- standard keyboards
- serial and PS/2 mice
- joysticks
- devices using the linux input layer
- infrared remote controls (using lirc)
- iPAQ touchscreen
- ucb 1x00 touchscreen
- Microtouch touchscreen
- Sony PI Jogdial
图象装载
支持如下图象格式:
- JPEG (通过 libjpeg 实现)
- PNG (libpng2)
- GIF (内部实现)
- 其它各种格式 (通过Imlib2实现)
视频播放
支持如下格式:
- video4linux (/dev/video)
- mpeg1/2 (using libmpeg3)
- AVI (using avifile)
- MOV (using OpenQuicktime)
- macromedia (using libflash)
字体渲染
提供反锯齿文本绘制,支持如下字体:
- DirectFB bitmap font
- TrueType (using FreeType2)
体系结构
![]() |
directfb architecture |
访问图形硬件
- 通过 framebuffer 来访问图形硬件,一些特殊的芯片也可以在 VESA framebuffer 下工作
- 可在用户空间实现硬件加速
访问输入设备
使用 linux kernel 提供的标准设备接口