显卡
2013-09-25 01:04
316 查看
//显卡:
#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);
}
#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);
}
相关文章推荐
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- My Big Project
- mmap
- 会话之session技术(转)
- Struts2系列——struts2的result
- IIS6如何开启Gzip压缩的方法
- 不同用户导出导入时,表空间的问题
- KVC和KVO实现监听容器类(数组等)的变化
- java获取当前类的绝对路径
- flock
- 算法视频库下载常用网址(转载)
- Android中的JSON详细总结
- property_get/property_set
- zoj Candies 贪心
- 混合高斯背景建模理解(原创)
- 软件工程第一次作业词频统计
- MyEclipse使用经验总结
- IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
- JitterBuffer对POS机的影响
- Cn m 组合数,输出!