小结 frambuffer 原理及流程 (五)

本文的copyright归yuweixian4230@163.com 所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:yuweixian4230@163.com
博客:
yuweixian4230.blog.chinaunix.net  


  通过学习,加深对framebuffer的了解,现在记录下 对 framebuff 的了解 认识

framebuffer:

    1. framebuffer驱动程序的功能是什么??
         1.1 在内存中分配一段内存,当做显存使用
         1.2 对LCD 进行配置,  这样应用程序中,就可以得到 lcd 信息了


         
   2.流程:

     2.1 打开 /dev/fb0

     2.2 ioctl操作获取当前显示屏幕的参数,如屏幕分辨率、每个像素点的比特数和偏移。根据屏幕      参数可计算屏幕缓冲区的大小

     2.3 将屏幕缓冲区 映射到 用户空间

     2.4 直接读/写 屏幕缓冲区,进行绘图和图片显示了

  1.   
  2.     struct fb_var_screeninfo vinfo;
  3.     struct fb_fix_screeninfo finfo;
  4.     
  5. 2.1打开 设备

  6.     fdfd=open("/dev/fb0",O_RDWR);
  7.     
  8. 2.2 获取LCD参数

  9.     ioctl(fdfd,FBIOGET_FSCREENINFO,&finfo); //获取 固定参数

  10.     ioctl(fdfd,FBIOGET_VSCREENINFO,&vinfo); //获取可变参数

  11.     screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8; //计算一帧图片占了 多少字节

 2.3 映射 

  1.     fbp=(char *)mmap(NULL,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fdfd,0);

  2.    
  3. 2.4 绘制图片
  4.         
  5.     for(y=100;y<200;y++)
  6.         for(x=100;x<300;x++)
  7.         {
  8.             location=(x+vinfo.xoffset)*(vinfo.bits_per_pixel/8)+
  9.                  (y+vinfo.yoffset)*finfo.line_length;
  10.             /*
  11.             location=x*2+y*vinfo.xres*2;;
  12.             */

  13.             int b=(x-100)/6;
  14.             int g=31-(y-100)/16;
  15.             int r=10;
  16.             unsigned short int t=r<<11|g<<5|b;
  17.             *((unsigned short int *)(fbp+location))=t;
  18.         }
  19.         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值