linux,如何设置颜色格式为RGBT

zozowit 2007-11-21 02:59:40
我尝试用ioctl将默认的rgb565改成rgbt555,写进去再读出来,没有改变,哪位指点一下小弟或帮我调试一下,谢谢
源码如下,直接编译可过
#include <unistd.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <string.h>
#define IDX 0xff
int main (int argc ,char *argv[]) {
int fp=0;
int i;
int err = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;

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

if (fp < 0){
printf("Error : Can not open framebuffer device\n");
exit(1);
}

if (ioctl(fp,FBIOGET_FSCREENINFO,&finfo)){
printf("Error reading fixed information\n");
exit(2);

}
printf("\nblue: o=%d, l=%d, mr=%d\n", vinfo.blue.offset,vinfo.blue.length, vinfo.blue.ms
b_right);

vinfo.transp.offset = 15;
vinfo.transp.length =1;

vinfo.red.offset = 10;
vinfo.red.length = 5;

vinfo.green.offset = 5;
vinfo.green.length = 5;

vinfo.blue.offset = 0;
vinfo.blue.length = 5;

if (ioctl(fp,FBIOPUT_VSCREENINFO,&vinfo) == -1){
printf("Error setting variable information\n");
exit(3);
}

if (ioctl(fp,FBIOGET_VSCREENINFO,&vinfo)){
printf("Error reading variable information\n");
exit(3);
}

printf("\ntransp: o=%d, l=%d, mr=%d\n", vinfo.transp.offset,vinfo.transp.length, vinfo.t
ransp.msb_right);
printf("\nred: o=%d, l=%d, mr=%d\n", vinfo.red.offset,vinfo.red.length, vinfo.red.msb_ri
ght);
printf("\ngreen: o=%d, l=%d, mr=%d\n", vinfo.green.offset,vinfo.green.length, vinfo.gree
n.msb_right);
printf("\nblue: o=%d, l=%d, mr=%d\n", vinfo.blue.offset,vinfo.blue.length, vinfo.blue.ms
b_right);

close (fp);

}
...全文
116 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧