11、RK3399 Framebuffer应用编程

    科技2022-07-12  111

    目录

    1、硬件原理2、显示点坐标计算3、像素大小4、实例代码

    1、硬件原理

    2、显示点坐标计算

    3、像素大小

    4、实例代码

    #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <linux/fb.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <sys/ioctl.h> static int fd_fb; static struct fb_var_screeninfo var; /* Current var */ static int screen_size; static unsigned char *fb_base; static unsigned int line_width; static unsigned int pixel_width; /********************************************************************** * 函数名称: lcd_put_pixel * 功能描述: 在LCD指定位置上输出指定颜色(描点) * 输入参数: x坐标,y坐标,颜色 * 输出参数: * 值: * 修改日期 版本号 修改人 修改内容 * ----------------------------------------------- * 2020/05/12 V1.0 zh(angenao) 创建 ***********************************************************************/ void lcd_put_pixel(int x, int y, unsigned int color) { unsigned char *pen_8 = fb_base+y*line_width+x*pixel_width; unsigned short *pen_16; unsigned int *pen_32; unsigned int red, green, blue; pen_16 = (unsigned short *)pen_8; pen_32 = (unsigned int *)pen_8; switch (var.bits_per_pixel) { case 8: { *pen_8 = color; break; } case 16: { /* 565 */ red = (color >> 16) & 0xff; green = (color >> 8) & 0xff; blue = (color >> 0) & 0xff; color = ((red >> 3) << 11) | ((green >> 2) << 5) | (blue >> 3); *pen_16 = color; break; } case 32: { *pen_32 = color; break; } default: { printf("can't surport
    转载请注明原文地址:https://blackberry.8miu.com/read-4728.html
    最新回复(0)