挖坑网/填坑网 DebugDump Forum

别人挖坑默默填上,自己挖坑含泪填上。天下没有填不了的坑,只有不会填坑的人。来吧,加入我们,挖坑行,填坑你更行! 站长QQ: 516333132 点击这里给我发消息

您尚未登录。

#1 2018-03-02 09:57:31

F1F2
会员
注册时间: 2017-09-11
累计发帖: 96

有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

离线

#2 2018-03-02 11:41:54

daydayup
会员
注册时间: 2017-10-09
累计发帖: 268

Re: 有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

QQ20180302115828.png

刚刚我好奇试了一下, 居然没成功.


打开monitor.c把这个函数SDL_CreateTexture的参数改成SDL_PIXELFORMAT_RGB565
sdl的显示缓冲区配置应该就是rgb565了。

然后再把 lv_conf.h 改成这样

#define LV_COLOR_DEPTH     16

改完全部重新编译运行,就变成上面那副模样了。

离线

#3 2018-03-02 11:59:55

F1F2
会员
注册时间: 2017-09-11
累计发帖: 96

Re: 有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

谢谢楼上大神,我试一试。

离线

#4 2018-03-02 14:07:03

晕哥
Administrator
注册时间: 1970-01-01
累计发帖: 2,544

Re: 有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

我试了一下和2楼一样的问题,
单后来看了 SDL模拟器 monitor.c 的代码,

#if LV_COLOR_DEPTH != 24
    int32_t x;
    for(y = y1; y <= y2; y++) {
        for(x = x1; x <= x2; x++) {
            tft_fb[y * MONITOR_HOR_RES + x] = lv_color_to24(*color_p) | 0xFF000000;
            color_p++;
        }

    }
#else
    uint32_t w = x2 - x1 + 1;
    for(y = y1; y <= y2; y++) {
        memcpy(&tft_fb[y * MONITOR_HOR_RES + x1], color_p, w * sizeof(lv_color_t));

        color_p += w;
    }
#endif

发现模拟器不需要做任何修改,
因为如果把模拟器改成RGB565之后,
tft_fb在内存中的排列就不是 SDL_PIXELFORMAT_ARGB8888 这样了。
如果实在要改掉模拟成SDL_PIXELFORMAT_RGB565也不是不行,
但是要改下这部分代码而已。
@F1F2 你可以改改试一试哦。

离线

#5 2018-03-02 15:10:59

F1F2
会员
注册时间: 2017-09-11
累计发帖: 96

Re: 有没有办法把SDL设置成RGB565(16bit)颜色,然后再把 littlevgl也改成16bit ?

谢谢楼上两位, 终于解决这个问题了, 用SDL_PIXELFORMAT_RGB565 也可以了.

代码稍微改一点点,就是用那个 memcpy

QQ20180302150543.png

离线

页脚