直接操作Framebuffer来写简单的图形接口

本文介绍了在Linux环境下,为了提高效率和节省内存,如何直接操作Framebuffer设备文件来实现图形界面的方法。通过打开/dev/fb0设备,获取设备参数,进行内存映射,然后实现画点、画直线和八分法画圆等基本图形操作。这种方式避开了通用库如SDL,减少了中间拷贝,提高了性能。
摘要由CSDN通过智能技术生成

    以前在linux做图形界面的时候用的是SDL,我对于SDL的理解是一些算法在操作一些设备(fb,event等);如果在做嵌入式产品的时候,我们肯定得考虑内存和效率的问题;SDL毕竟是通用的,所以在特定的时候直接操作一定会比SDL效率高。原因是少了中间的拷贝过程

    下边介绍这样使用/dev/fb,其实linux的所以设备都是文件的形式,所以操作起来很方便:

   打开设备:fb=open("/dev/fb0", O_RDWR);

     得到设备参数:ioctl(fb, FBIOGET_FSCREENINFO, &finfo)    ioctl(fb, FBIOGET_VSCREENINFO, &vinfo)

   内存映射:void *fbuffer =mmap(NULL, finfo.smem_len, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fb, 0); 内存映射返回一个映射后的首地址,这个地址不占用物理内存而是虚拟的地址是操作系统来分配的;我们可以再返回的地址上直接写屏了

  画一个点:void pix(int x,in

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值