提高车载终端UI界面显示帧率的方法及其系统与流程

文档序号:15444850发布日期:2018-09-14 23:14阅读:452来源:国知局

本发明属于车载终端技术领域,尤其涉及一种提高车载终端ui界面显示帧率的方法及其系统。



背景技术:

随着电子、信息、通信等技术与汽车产业加速融合,汽车产品加快向着电子化、网联化、智能化方向发展,汽车前装中控承载的显示信息也越来越丰富了,不仅中控上的应用功能越来越多,而且画面显示不但有2d图像,还包含了3d动画,给用户界面带来炫酷体验的同时,也对软硬件系统的性能提出了越来越高的要求。整车厂由于出货量大,也出于降低硬件成本的考虑,中控使用的soc芯片的图形显卡往往处理能力有限,因此带来了诸多问题,最明显的问题就是ui画面显示的不够清晰和流畅,用户操作后画面响应慢。譬如某国外tier1供应商给国内某款国产车研发的前装中控在该车型量产后出现了一个问题,就是用户点击操作按键后画面有时候需要等待2秒钟左右才会响应,3d动画在旋转时能感觉到有明显的锯齿感,极大地影响了用户体验。



技术实现要素:

基于此,针对上述技术问题,提供一种提高车载终端ui界面显示帧率的方法及其系统。

为解决上述技术问题,本发明采用如下技术方案:

一种提高车载终端ui界面显示帧率的方法,包括:

提供多个窗体程序,通过该多个窗体程序在显示屏上分窗体显示用于构成ui界面的视觉元素,以组合成ui界面,并分别在对应的窗体捕捉、响应相应的用户动作;

在显示视觉元素时进行同步控制:车载终端系统第一次启动时,检测所述多个窗体程序是否均已完成渲染,当所述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示。

所述检测所述多个窗体程序是否均已完成渲染,当所述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示进一步包括:

每个所述窗体程序在渲染完成后,将渲染内容交给窗口合成器(screencompositor),同时每个所述窗体程序发送一个控制消息给系统服务程序windowsmananger;

当系统服务程序windowsmananger收集到各窗体程序渲染完成的控制消息后,调用窗口合成器(screencompositor)的start接口;

start接口被调用后,窗口合成器(screencompositor)向系统framebuffer缓存写入各窗体程序的渲染内容。

所述多个窗体程序为四个,分别为:

菜单窗体程序,用于以局部窗体显示菜单项,并在该局部窗体捕捉、响应用户动作;

用户操作窗体程序:用于以局部窗体旋转显示各个子操作菜单项,并在该局部窗体捕捉、响应用户动作;

画面显示窗体程序:用于以局部窗体显示动态变化的图像,并在该局部窗体捕捉、响应用户动作;

背景显示窗体程序:用于以全屏窗体显示整体的色彩风格以及不常变化的元素,并在该全屏窗体捕捉、响应用户动作。

本发明还涉及一种提高车载终端ui界面显示帧率的系统,包括存储模块,所述存储模块包括由处理器加载并执行的多条指令:

提供多个窗体程序,通过该多个窗体程序在显示屏上分窗体显示用于构成ui界面的视觉元素,以组合成ui界面,并分别在对应的窗体捕捉、响应相应的用户动作;

在显示视觉元素时进行同步控制:车载终端系统第一次启动时,检测所述多个窗体程序是否均已完成渲染,当所述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示。

所述检测所述多个窗体程序是否均已完成渲染,当所述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示进一步包括:

每个所述窗体程序在渲染完成后,将渲染内容交给窗口合成器(screencompositor),同时每个所述窗体程序发送一个控制消息给系统服务程序windowsmananger;

当系统服务程序windowsmananger收集到各窗体程序渲染完成的控制消息后,调用窗口合成器(screencompositor)的start接口;

start接口被调用后,窗口合成器(screencompositor)向系统framebuffer缓存写入各窗体程序的渲染内容。

所述多个窗体程序为四个,分别为:

菜单窗体程序,用于以局部窗体显示菜单项,并在该局部窗体捕捉、响应用户动作;

用户操作窗体程序:用于以局部窗体旋转显示各个子操作菜单项,并在该局部窗体捕捉、响应用户动作;

画面显示窗体程序:用于以局部窗体显示动态变化的图像,并在该局部窗体捕捉、响应用户动作;

背景显示窗体程序:用于以全屏窗体显示整体的色彩风格以及不常变化的元素,并在该全屏窗体捕捉、响应用户动作。

本发明在保证硬件系统配置和应用功能不变的情况下,可以大大提高局部渲染的帧率,明显提高了ui界面显示的流畅度和用户操作的响应速度。

附图说明

下面结合附图和具体实施方式本发明进行详细说明:

图1为本发明的窗体分布示意图。

具体实施方式

一种提高车载终端ui界面显示帧率的方法,包括:

一、提供多个窗体程序,通过该多个窗体程序在显示屏上分窗体显示用于构成ui界面的视觉元素,以组合成ui界面,并分别在对应的窗体捕捉、响应相应的用户动作。

其中,视觉元素是指用户能在显示屏上看到的元素。

在本实施例中,如图1所示,多个窗体程序为四个,分别为:

菜单窗体程序,用于以局部窗体a显示菜单项,并在该局部窗体a捕捉、响应用户动作,如多媒体、导航、电话、设置等视觉元素。

用户操作窗体程序:用于以局部窗体b旋转显示各个子操作菜单项,并在该局部窗体b捕捉、响应用户动作,此处的子操作菜单项也是视觉元素。

画面显示窗体程序:用于以局部窗体c显示2d、3d动态变化的图像,并在该局部窗体c捕捉、响应用户动作,如动态的地图、车模等视觉元素。

背景显示窗体程序:用于以全屏窗体d显示整体的色彩风格以及不常变化的元素,同样属于视觉元素,并在该全屏窗体d捕捉、响应用户动作。

二、在显示视觉元素时进行同步控制:车载终端系统第一次启动时,检测上述多个窗体程序是否均已完成渲染,当上述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示。

具体地,在本实施例中,每个窗体程序在渲染完成后,将渲染内容交给窗口合成器(screencompositor),同时每个窗体程序发送一个控制消息给系统服务程序windowsmananger。

当系统服务程序windowsmananger收集到各窗体程序渲染完成的控制消息后,即代表多个窗体程序均已完成渲染,此时,调用窗口合成器(screencompositor)的start接口。

start接口被调用后,窗口合成器(screencompositor)向系统framebuffer缓存写入各窗体程序的渲染内容。

其中,窗口合成器(screencompositor)的代码是直接从网上一个开源项目weston下载的,weston主要包含三部分功能,即窗口管理,窗口合成和输入管理。(下载链接为:

git://anongit.freedesktop.org/wayland/weston)

系统服务程序windowsmananger是为了管理多个窗口程序的同步、组合显示而开发的服务程序,包含的功能有:负责启动和关闭各窗口程序,设置各窗口程序的位置和大小,以及窗口的显示层级z和透明度。上述功能都是直接通过调用weston提供的api接口来实现的。

另外,windowsmanager还增加了动态控制各窗口显示帧率的功能,相关的实现流程分为以下几步:

1)windowsmanager通过ipc的方式发送显示帧率控制消息给相应的窗口程序。消息内容包含两部分:窗口id和休眠值。

2)当窗口程序的接收消息线程接收到来自windowsmanager发送的控制显示帧率的消息后,比较窗口id是否和本窗口的id值相同,如果不同,则什么都不做;如果相同,则对该消息进行解析并做下一步处理。

3)根据解析到的休眠值,在窗口程序的主线程中调用如下api:

sleep(休眠值),

休眠值为一个毫秒级的正整数,该数值越大则帧率越低,数值越小则帧率越高。

最后,windowsmanager为了能够在系统第一次启动后让所有的窗口程序在同一时刻同步显示的目的而增加了一个渲染完成控制消息,实现流程分为以下几步:(以窗体程序a,b,c为例)

1)windowsmanager依次启动各窗体程序a,b,c后,首先将windowsmanager内部定义的三个变量flag_a,flag_b,flag_c(这三个变量的类型都是布尔型,分别标识窗体程序a,b,c是否已渲染完成)置为false。例如flag_a=false;flag_b=false;flag_c=false。

2)窗体程序a的第一帧渲染完成后发送渲染完成的消息给windowsmanager,windowsmanager收到后将该窗对应的渲染完成标识置为true,其他窗体程序做类似处理。例如flag_a=true。

3)windowsmanager判断是否收到了所有窗体程序发送的渲染完成消息。如果收到了全部窗体的渲染完成消息(即flag_a,flag_b,flag_c都为true),就进入下一步流程。如果没有,就什么都不做。

4)将所有窗体例如a,b,c的渲染内容一次写入framebuffer缓存完成同步显示。

显示屏的显示就是将渲染的结果绘制到屏幕上,绘制这一步的输出是屏幕专用的存储,输入则是framebuffer缓存。

本方案还涉及一种提高车载终端ui界面显示帧率的系统,包括存储模块,所述存储模块包括由处理器加载并执行的多条指令:

一、提供多个窗体程序,通过该多个窗体程序在显示屏上分窗体显示用于构成ui界面的视觉元素,以组合成ui界面,并分别在对应的窗体捕捉、响应相应的用户动作。

其中,视觉元素是指用户能在显示屏上看到的元素。

在本实施例中,如图1所示,多个窗体程序为四个,分别为:

菜单窗体程序,用于以局部窗体a显示菜单项,并在该局部窗体a捕捉、响应用户动作,如多媒体、导航、电话、设置等视觉元素。

用户操作窗体程序:用于以局部窗体b旋转显示各个子操作菜单项,并在该局部窗体b捕捉、响应用户动作,此处的子操作菜单项也是视觉元素。

画面显示窗体程序:用于以局部窗体c显示2d、3d动态变化的图像,并在该局部窗体c捕捉、响应用户动作,如动态的地图、车模等视觉元素。

背景显示窗体程序:用于以全屏窗体d显示整体的色彩风格以及不常变化的元素,同样属于视觉元素,并在该全屏窗体d捕捉、响应用户动作。

二、在显示视觉元素时进行同步控制:车载终端系统第一次启动时,检测上述多个窗体程序是否均已完成渲染,当上述多个窗体程序均已完成渲染后,将各窗体程序渲染的内容交由显示屏显示。

具体地,在本实施例中,每个窗体程序在渲染完成后,将渲染内容交给窗口合成器(screencompositor),同时每个窗体程序发送一个控制消息给系统服务程序windowsmananger。

当系统服务程序windowsmananger收集到各窗体程序渲染完成的控制消息后,即代表多个窗体程序均已完成渲染,此时,调用窗口合成器(screencompositor)的start接口。

start接口被调用后,窗口合成器(screencompositor)向系统framebuffer缓存写入各窗体程序的渲染内容。

其中,窗口合成器(screencompositor)的代码是直接从网上一个开源项目weston下载的,weston主要包含三部分功能,即窗口管理,窗口合成和输入管理。(下载链接为:

git://anongit.freedesktop.org/wayland/weston)

系统服务程序windowsmananger是为了管理多个窗口程序的同步、组合显示而开发的服务程序,包含的功能有:负责启动和关闭各窗口程序,设置各窗口程序的位置和大小,以及窗口的显示层级z和透明度。上述功能都是直接通过调用weston提供的api接口来实现的。

另外,windowsmanager还增加了动态控制各窗口显示帧率的功能,相关的实现流程分为以下几步:

1)windowsmanager通过ipc的方式发送显示帧率控制消息给相应的窗口程序。消息内容包含两部分:窗口id和休眠值。

2)当窗口程序的接收消息线程接收到来自windowsmanager发送的控制显示帧率的消息后,比较窗口id是否和本窗口的id值相同,如果不同,则什么都不做;如果相同,则对该消息进行解析并做下一步处理。

3)根据解析到的休眠值,在窗口程序的主线程中调用如下api:sleep(休眠值),

休眠值为一个毫秒级的正整数,该数值越大则帧率越低,数值越小则帧率越高。

最后,windowsmanager为了能够在系统第一次启动后让所有的窗口程序在同一时刻同步显示的目的而增加了一个渲染完成控制消息,实现流程分为以下几步:(以窗体程序a,b,c为例)

1)windowsmanager依次启动各窗体程序a,b,c后,首先将windowsmanager内部定义的三个变量flag_a,flag_b,flag_c(这三个变量的类型都是布尔型,分别标识窗体程序a,b,c是否已渲染完成)置为false。例如flag_a=false;flag_b=false;flag_c=false。

2)窗体程序a的第一帧渲染完成后发送渲染完成的消息给windowsmanager,windowsmanager收到后将该窗对应的渲染完成标识置为true,其他窗体程序做类似处理。例如flag_a=true。

3)windowsmanager判断是否收到了所有窗体程序发送的渲染完成消息。如果收到了全部窗体的渲染完成消息(即flag_a,flag_b,flag_c都为true),就进入下一步流程。如果没有,就什么都不做。

4)将所有窗体例如a,b,c的渲染内容一次写入framebuffer缓存完成同步显示。

显示屏的显示就是将渲染的结果绘制到屏幕上,绘制这一步的输出是屏幕专用的存储,输入则是framebuffer缓存。

但是,本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明的权利要求书范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1