当前位置: 首页 > news >正文

邳州城乡建设局网站网站怎样做优惠卷

邳州城乡建设局网站,网站怎样做优惠卷,初中生怎么提升学历,关键字优化framebuffer:帧缓冲,帧缓存 Linux内核为显示提供的一套应用程序接口。(驱动内核支持) framebuffer本质上是一块显示缓存,往显示缓存中写入特定格式的数据就意味着向屏幕输出内容。framebuffer驱动程序控制LCD显示设备&#xff0…

framebuffer:帧缓冲,帧缓存

Linux内核为显示提供的一套应用程序接口。(驱动内核支持)

framebuffer本质上是一块显示缓存,往显示缓存中写入特定格式的数据就意味着向屏幕输出内容。framebuffer驱动程序控制LCD显示设备,通过映射framebuffer设备到用户空间,应用程序可以直接对显存进行操作,从而控制LCD显示内容

framebuffer使用

显示屏:800*600(横向有800个像素点,纵向有600个像素点)

显卡(显存(保存像素点的值))

RGB

888(R,G,B各占八个比特)

PC,4412:RGB888

S3C2440:RGB565

显存空间不允许用户直接访问

所以可以采用内存映射,将用户空间与显存空间建立起一一对应的关系

根据显存的大小的多少,来申请空间

1.打开显示设备(/dev/fb0)

2.获取显示设备相关参数(分辨率、位深度)

3.建立内存映射

4.写入RGB颜色值

5.解除映射

6.关闭显示设备

和硬件有关的接口都只能用open打开

获取显示设备相关文件

/usr/include/linux/fb.h

偏移量:从什么位置开始映射

framebuffer使用:

1.获取显示设备相关参数

int init_fb(char *devname)
{int fd = open(devname, O_RDWR);	if (-1 == fd){perror("fail open fb");return -1;}int ret = ioctl(fd, FBIOGET_VSCREENINFO, &vinf);if (-1 ==ret){perror("fail ioctl");return -1;}printf("xres = %d, yres = %d\n", vinf.xres, vinf.yres);printf("xres_virtual = %d, yres_virtual = %d\n", vinf.xres_virtual, vinf.yres_virtual);printf("bits_per_pixel : %d\n", vinf.bits_per_pixel);size_t len = vinf.xres_virtual * vinf.yres_virtual * vinf.bits_per_pixel/8;pmem = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);if ((void *)-1 == pmem){perror("fail mmap");return -1;}return fd;
}

2.画点

void draw_point(int x, int y, unsigned int col)
{if (x >= vinf.xres || y >= vinf.yres){return ;}if (vinf.bits_per_pixel == RGB888_FMT){unsigned int *p = pmem;*(p + y * vinf.xres_virtual + x) = col;}else if (vinf.bits_per_pixel == RGB565_FMT){unsigned short *p  = pmem;	*(p + y * vinf.xres_virtual + x) = col;}return ;
}

3.清屏

void screen_clear(int color)
{int i = 0;int j = 0;for(i = 0;i < vinf.xres;++i){for(j = 0;j < vinf.yres;++j){draw_point(i,j,color);}}
}

4.划线

void draw_line(int x1,int x2,int y1,int y2,int color)
{if(x1 > 0 && x1 < vinf.xres_virtual && x2 > 0 && x2 < vinf.xres_virtual && y1 > 0 && y1 < vinf.yres_virtual && y2 > 0 && y2 < vinf.yres_virtual){int xmax = x1 > x2 ? x1 : x2;int xmin = x1 > x2 ? x2 : x1;int x = 0;int y = 0;if(x1 == x2){int ymax = y1 > y2 ? y1 : y2;int ymin = y1 > y2 ? y2 : y1;for(y = ymin;y < ymax;++y){draw_point(x1,y,color);}}for(x = xmin;x < xmax;x++){y = (x - x1)*(y2 - y1) / (x1 - x2) + y1;draw_point(x,y,color);}}
}

5.画圆

void draw_circle(int a,int b,int r,int color)
{int x = 0;int y = 0;int tmp;for(x = a -r;x < a + r;++x){tmp = sqrt(r*r - (x-a)*(x-a));int ymax = b + tmp;int ymin = b - tmp;for(y = ymin;y < ymax;++y){draw_point(x,y,color);}}
}

http://www.yayakq.cn/news/888769/

相关文章:

  • 凌云县城乡建设局网站台前网站建设费用
  • 如何建设网站公司五八同城找工作招聘信息
  • 学校网站建设的意见wordpress切换主题
  • 外贸网网站建设wordpress 图床域名
  • 如何进行网站宣传推广网站的服务器打不开
  • 门户网站建设成都成都装修网站制作价格
  • 网站建设公司北京华网天下实惠软件开发和app开发的区别
  • 阳朔县建设规划局网站北京网站维护浩森宇特
  • 在服务器网站上做跳转页面如何申请成立公司
  • 网站建站网站设计公司动易网站 首页模板修改
  • 贵州省住房和建设厅网网站wordpress菜单前图标
  • wordpress 文章版权 插件广州建站优化公司
  • 商业网站开发选题的目的做网站软件A开头的
  • 学习网站建设有前景没wordpress数据采集
  • 做网站设计可以参照别人的么网页设计素材螺蛳粉图
  • 网站上线前的准备工作哪个平台查企业是免费的
  • 开发一个小程序镇江关键词优化
  • 广东深圳广东深圳网站建设南宁网站seo公司哪家好
  • 自己做的网站容易被黑吗网站的360度全景图片怎么做
  • 网站页面建议网站目录结构设计
  • 怎样建立公司的网站Wordpress is快递 接口
  • 兴平住房和城乡建设局门户网站英文网站建设模板下载
  • 论坛型网站 建站北京vi设计方案
  • 网站加速cdn呼叫中心系统怎么收费
  • 海贼王路飞和女帝做的网站郑州网络公司联系方式
  • 用易语言做钓鱼网站wordpress 数据
  • 东莞商业网站建设常识大连关键词优化报价
  • 沈阳开发网站html所有代码大全
  • 网站广告布局软件站
  • 手机网站全屏代码网络设计公司有哪些