显卡

来源:互联网 发布:魅蓝note6网络频段 编辑:程序博客网 时间:2024/04/25 13:58

 

//显卡:

#include<sys/types.h>

#include<sys/mman.h>

#include<sys/stat.h>

#include<sys/ioctl.h>

#include<sys/types.h>

#include<fcntl.h>

#include<stdlib.h>

#include<stdio.h>

#include<linux/fb.h>

#include<unistd.h>

#define RGB(r,g,b) ((r&0x1f)<<11)|((g&0x3f)<<5)|(b&0x1f)

typedef unsigned short uint16_t;

uint16_t *src;

void draw(int x,int y,uint16_t color){

uint16_t *buf;

buf=(uint16_t *)((size_t)src+x*2+y*480*2);

*buf=color;

}

void drawLine(int x1,int y,int x2,uint16_t color){

 

int i;

for(i=x1;i<=x2;i++){

draw(i,y,color);

}

}

int main(){

int fd;

int len;

//unsigned short *src;

struct fb_var_screeninfo vinfo;

fd=open("/dev/fb0",O_RDWR);

if(fd<0){

perror("open /dev/fb0");

exit(EXIT_FAILURE);

}

ioctl(fd,FBIOGET_VSCREENINFO,&vinfo);//获取频幕的属性

printf("width:%d,height:%d\n",vinfo.xres,vinfo.yres);

printf("bits_per_pixel:%d\n",vinfo.bits_per_pixel);

len = vinfo.xres*vinfo.yres*(vinfo.bits_per_pixel>>2);

src=mmap(0,len,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//映象到内存

drawLine(1,100,200,RGB(0,0x3f,0));

drawLine(100,200,300,RGB(0x1f,0,0));

munmap(src,len);

close(fd);

exit(0);

}

原创粉丝点击