您尚未登录。

楼主 # 2021-12-16 16:21:18

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

f1c100s跑rttt+lvgl画面有撕裂感

f1c100s跑rttt+lvgl画面有撕裂感,已经启用了双缓冲模式,
flush函数如下,在这个函数print发现每次这个函数的area并不是液晶屏的尺寸,而是控件的尺寸,不是说定义了2个全尺寸的缓冲区之后每次都会全屏刷新的吗,
static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
   
    int32_t x;
    int32_t y;
    for (y = area->y1; y <= area->y2; y++)
    {
        for (x = area->x1; x <= area->x2; x++)
        {
            /* Put a pixel to the display. For example: */
            /* put_px(x, y, *color_p)*/
            ((uint16_t *)lcd_layer0.vram)[y * lcd_layer0.width + x] = color_p->full;
            color_p++;
        }
 
}

离线

楼主 #5 2021-12-17 09:19:46

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: f1c100s跑rttt+lvgl画面有撕裂感

我仔细看了一下源代码,好像如果液晶屏旋转90度也就是从竖屏改成横屏,全尺寸双缓冲就不支持了..............哭...

离线

楼主 #6 2021-12-17 09:23:16

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: f1c100s跑rttt+lvgl画面有撕裂感

@armstrong
static void lv_refr_vdb_rotate(lv_area_t * area, lv_color_t * color_p)
{
    lv_disp_drv_t * drv = &disp_refr->driver;
    if(lv_disp_is_true_double_buf(disp_refr) && drv->sw_rotate) {
        LV_LOG_ERROR("cannot rotate a true double-buffered display!");


这个是lvtl7.11的源代码,而且7.11里面没有display_driver.full_refresh = 1;  /* 双完整帧缓存模式需要置1 */这个功能,

不知道8.0以上能不能支持旋转90的双缓冲

离线

页脚

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

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