发布网友
共1个回答
热心网友
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掉句柄)