您尚未登录。

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

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

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

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

离线

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

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

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

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

打开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
已发帖子: 99
积分: 99

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

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

离线

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

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,473
积分: 9207

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

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

#if LV_COLOR_DEPTH != 24int32_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
已发帖子: 99
积分: 99

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

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

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

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发