(转)Android屏幕Framebuffer绘图机制

Android屏幕绘制基本与linux相同,都是使用Framebuffer来绘制屏幕,设备为/dev/graphic/fb0

Framebuffer存储在内存或者显存中,比如一个800 × 600的屏幕,每个像素点为16位色,那么Framebuffer的大小就为(800 × 600 × 16/8) byte

手机的LCD屏幕通过显存中当前的Framebffer和缓存的framebuffer来绘制屏幕上的每一个像素点

具体顺序为:

1 打开framebuffer设备;

2 通过ioctl取得fixed screen information;(ioctl(fd, FBIOGET_FSCREENINFO, &finfo))

3 通过ioctl取得variable screen information;(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo))

4 通过mmap映射设备内存到进程空间;(记得区分内核空间和用户空间,用户空间是无法对物理内存直接读写的)

5 写framebuffer;

6 终止。(记得终止时一定要取消映射,并close掉句柄)



ioctl中request参数:

       FBIOGET_VSCREENINFO表示用户获取屏幕的可变参数;

       FBIOPUT_VSCREENINFO表示用户设置可变的屏幕参数;
       FBIOGET_FSCREENINFO表示用户获得屏幕的固定参数;
       FBIOBLANK表示调用sep4020fb_blank函数清空液晶屏;
       FBIOPUTCMAP表示设置屏幕的颜色表;
       FBIOGETCMAP表示获得颜色表。



其实也可以发现,android中的很多机制都是通过ioctl来实现的,比如binder等等:)


转自:http://blog.sina.com.cn/s/blog_64b54bce0100lmxz.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值