Linux Framebuffer 对显卡直接写屏 编程

在应用电脑时,你知道你应用的是操作系统么?一定会有人说微软的Windows,不过你了解Linux么?有人说Linux不如Windows,其实不然,这是因为你不懂Linux,本文介绍一些Linux知识,比如Linux Framebuffer编程问题,希望本文对你Linux Framebuffer编程有所帮助。Linux framebuffer设备文件名通常是/dev/fb0,1,2等。

控制framebuffer设备的一般步骤如下:1) 打开设备,映射framebuffer2)依照硬件要求,准备好数据3)把数据复制到framebuffer

例子程序如下:

1)打开设备,映射framebuffer

    staticvoid*fbbuf; intopenfb(char*devname) { intfd; fd=open(devname,O_RDWR); if(ioctl(fd,FBIOGET_VSCREENINFO,&fbvar)<0) return-1; bpp=fbvar.bits_per_pixel; screen_size=fbvar.xres*fbvar.yres*bpp/8; fbbuf=mmap(0,screen_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); returnfd; }

2)数据准备,假设lcd控制器被初始化为565,16bit格式的

    staticinlineintmake_pixel(unsignedinta,unsignedintr,unsignedintg,unsignedintb) { return(unsignedint)(((r>>3)<<11)|((g>>2)<<5|(b>>3))); }

3) 把想要显示的数据复制到framebuffer,假设把framebuffer填充成一种颜色

    staticvoidfill_pixel(unsignedintpixel,intx0,inty0,intw,inth) { inti,j; unsignedshort*pbuf=(unsignedshort*)fbbuf; for(i=y0;i<h;i++){ for(j=x0;j<w;j++){ pbuf[i*screen_width+j]=pixel; } } }

下面程序把lcd屏幕填充成蓝色

    fill_pixel(make_pixel(0,0,0,0xff),0,0,screen_width,screen_height);

以上就是Linux Framebuffer编程的过程。

人生没有彩排,只有现场直播,所以每一件事都要努力做得最好

Linux Framebuffer  对显卡直接写屏 编程

相关文章:

你感兴趣的文章:

标签云: