framebuffer为图形硬件提供抽象,关于这个资料网上很多,我得理解就是可以通过这个设备控制显卡,如果有一块显卡的话,它在文件系统中映射为/dev/fb0.两块的话映射为/dev/fb1,以此类推。很多图形GUI函数都是做了对framebuffer的操作。曾尝试将文本文件或字符直接写入framebuffer,屏幕上的显示是正常的,也曾尝试将图片直接写入framebuffer,虽然字符界面下会有所显示,但是图像明显被拉伸了很多,不成形了。可能对图像的显示要经过编码和处理吧。所以放弃了对framebuffer的直接操作,改为使用SDl。
对framebuffer信息的显示和设置可以用fbset命令,这个命令需要手动安装。
单独执行fbset命令可以得到屏幕的分辨率和色彩值。
如我得电脑:
king@ubuntu:~$ sudo fbset
[sudo] password for king:
mode "king@ubuntu:~$ sudo fbset
[sudo] password for king:
mode "640x480-60"
# D: 25.176 MHz, H: 31.469 kHz, V: 59.942 Hz
geometry 640 480 640 480 4
timings 39721 48 16 33 10 96 2
rgba 6/0,6/0,6/0,0/0
endmode
其中640x480为屏幕分辨率。60表示屏幕每秒刷新60帧。D: 25.176 MHz为depth (in bits per pixel),即色深。H: 31.469 kHz为horizontal resolution (in pixels),即水平分辨率。V: 59.942 Hz为垂直分辨率。