基于QNX操作系统的全屏开机动画驱动方法与流程

文档序号:15400563发布日期:2018-09-11 17:24阅读:821来源:国知局

本发明涉及显示领域,尤其涉及一种基于qnx操作系统的全屏开机动画驱动方法。



背景技术:

qnx操作系统是由加拿大qssl公司(qnxsoftwaresystemltd.)开发的分布式实时操作系统。该操作系统既能运行于以intelx86、pentium等cpu为核心硬件环境下,也能运行于以powerpc、mips等cpu为核心的硬件环境。qnx操作系统符合posix基本标准和实时标准,使其应用可以方便的进行移植。

现有的相关技术中,针对基于qnx操作系统的高分辨率液晶显示系统,缺乏全屏开机动画驱动的有效实现方法。



技术实现要素:

本发明提供一种基于qnx操作系统的全屏开机动画驱动方法,以解决缺乏全屏开机动画驱动的有效实现方法的问题。

根据本发明的第一方面,提供了一种基于qnx操作系统的全屏开机动画驱动方法,包括:

将动画的n个序列帧图像均转换为目标格式的图像文件;

利用主线程创建窗口,及其对应的窗口表面,并利用子线程将各图像文件读入内存;

对所述n个序列帧图像的图像文件进行逐帧的绘制处理,所述绘制处理包括:

解析当前的图像文件,获取所述当前的图像文件的图像数据与特征参数;

确定所述当前的图像文件对应的着色器;

根据所述当前的图像文件的图像数据和/或特征参数,得到顶点数据与纹理数据;

将所述顶点数据与所述纹理数据应用于所述着色器,执行对所述当前的图像文件对应的当前帧图像的绘制,以利用所述窗口及所述窗口表面显示所述当前帧图像。

可选的,所述目标格式的图像文件指的是ect1或ect2格式的.ktx文件。

可选的,所述将动画的n个序列帧图像均转化为目标格式的图像文件,包括:

将所述动画转化为图片格式的所述n个序列帧图像;

将所述n个序列帧图像导入armmali工具,对所述n个序列帧进行转换,得到各目标格式的图像文件。

可选的,还包括:若所述视频帧图像为无渐变色的图像,则在将其导入所述armmali工具时,确定其转换后的格式为为ect1或ect2;

若所述视频帧图像为有渐变色的图像,则在将其导入所述armmali工具时,确定其转换后的格式为ect2。

可选的,所述利用主线程创建窗口,及其对应的窗口表面,包括:

在主线程中,利用所述qnx操作系统的窗口管理服务与egl库,创建所述窗口,及其对应的窗口表面。

可选的,所述解析当前的图像文件,获取所述当前的图像文件的图像数据与特征参数,包括:

解析所述当前的图像文件,获取所述当前的图像文件的文件头与所述图像数据;

根据所述文件头,得到所述特征参数。

可选的,所述特征参数包括以下至少之一:

所述图像文件的图像长度;

所述图像文件的图像宽度;

所述图像文件的颜色格式;

所述图像文件的压缩信息;

所述图像文件的数据类型。

可选的,所述确定所述当前的图像文件对应的着色器,包括:

获取所述图像文件对应的着色器程序,并编译所述着色器程序;

创建程序对象;

链接所述程序对象与编译后的着色器程序,确定所述着色器;

其中,所述着色器包括顶点着色器与片段着色器。

可选的,所述将所述顶点数据与所述纹理数据应用于所述着色器,执行对所述当前的图像文件对应的当前帧图像的绘制之前,还包括:

确定所述着色器所使用的纹理单元,以及所述着色器的属性参数分量的标识;

所述将所述顶点数据与所述纹理数据应用于所述着色器,执行对所述当前的图像文件对应的当前帧图像的绘制,包括:

根据所述标识,以所述顶点数据与所述纹理数据配置所述着色器的属性参数分量;

根据所配置的属性参数分量,以及所确定的纹理单元,执行对所述当前的图像文件对应的当前帧图像的绘制。

可选的,所述动画的分辨率小于或等于1920*720,所述动画的帧率大于或等于40fps。

本发明提供的基于qnx操作系统的全屏开机动画驱动方法,通过利用主线程创建窗口,及其对应的窗口表面,并利用子线程将各图像文件读入内存;实现了窗口及窗口表面的确定,并可同时实现图像文件的读入;本发明还通过对所述n个序列帧图像的图像文件进行逐帧的绘制处理,所述绘制处理包括:解析当前的图像文件,获取所述当前的图像文件的图像数据与特征参数;确定所述当前的图像文件对应的着色器;根据所述当前的图像文件的图像数据和/或特征参数,得到顶点数据与纹理数据;将所述顶点数据与所述纹理数据应用于所述着色器,实现了当前帧图像的绘制与显示。故而,本发明针对基于qnx操作系统的高分辨率液晶显示系统,实现了全屏开机动画的驱动。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例中基于qnx操作系统的全屏开机动画驱动方法的流程示意图;

图2是图1中步骤s11的流程示意图;

图3是图1中步骤s14的流程示意图;

图4是本发明一实施例中实现基于qnx操作系统的全屏开机动画驱动方法的进程架构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

本实施例所涉及的方法可应用于对基于qnx操作系统的全屏开机动画进行驱动,其中的动画的分辨率可以小于或等于1920*720,所述动画的帧率可以大于或等于40fps。可见,本实施例或其可选方案可对高帧率的动画进行驱动。

图1是本发明一实施例中基于qnx操作系统的全屏开机动画驱动方法的流程示意图。

请参考图1,所述方法,包括:

s11:将动画的n个序列帧图像均转换为目标格式的图像文件。

动画,可理解为用于全屏开机的动画,其可以为高分辨率的动画,具体可以为包含连续的n个视频帧图像,其中的n个视频帧图像为具有先后顺序的各帧图像。

其中,所述目标格式的图像文件可以指的是ect1或ect2格式的.ktx文件。

图2是图1中步骤s11的流程示意图。

其中一种实施方式中,请参考图2,步骤s11,可以包括:

s111:将所述动画转化为图片格式的所述n个序列帧图像。其中的图片格式可以是png、bmp、psd、jpg等多种格式,领域中任意可导入armmali工具的格式均可理解为本实施例所描述的图片格式。

s112:将所述n个序列帧图像导入armmali工具,对所述n个序列帧进行转换,得到各目标格式的图像文件。

其中,若所述视频帧图像为无渐变色的图像,则在将其导入所述armmali工具时,确定其转换后的格式为为ect1或ect2。

具体可以为ect2rgb8_punchthrough_alpha1_ect2或者ect1格式。

若所述视频帧图像为有渐变色的图像,则在将其导入所述armmali工具时,确定其转换后的格式为ect2。

具体可以为rgb8_punchthrough_alpha1_ect2格式。该实施例中,rgb8_punchthrough_alpha1_ect2可提供较佳的画质,即显示效果较好。

n个序列帧图像经以上步骤s11,可批量进行转换,一张图片可以压缩至600k左右。

s12:利用主线程创建窗口,及其对应的窗口表面,并利用子线程将各图像文件读入内存。

其中一种实施方式中,所述利用主线程创建窗口,及其对应的窗口表面,可以包括:

在主线程中,利用所述qnx操作系统的窗口管理服务screen与egl库,创建所述窗口,及其对应的窗口表面surface。具体可指定opengles2.0版本实现。

具体实施过程中,可以先初始化egl配置参数;向窗口管理服务screen申请创建窗口;再创建渲染窗口表面surface。同时,可创建用于实现各图像文件读入的子线程,进而实现图像文件的读入。

在步骤s12之后,可实施:对所述n个序列帧图像的图像文件进行逐帧的绘制处理。步骤s13至步骤s16即为一次绘制处理的过程,本实施例可在步骤s12之后针对序列帧图像的图像文件逐帧重复执行步骤s13至步骤s16,完成每次的绘制处理。

s13:解析当前的图像文件,获取所述当前的图像文件的图像数据与特征参数。

步骤s13具体可以包括:

解析所述当前的图像文件,获取所述当前的图像文件的文件头与所述图像数据;根据所述文件头,得到所述特征参数。

其中的特征参数,可理解为对图像文件的属性进行描述的参数,其中一种实施方式中,所述特征参数包括以下至少之一:

所述图像文件的图像长度;

所述图像文件的图像宽度;

所述图像文件的颜色格式;

所述图像文件的压缩信息;

所述图像文件的数据类型。

其中的图像数据,可以指图像文件中所载图像本身的信息,例如其中点、线、色彩等信息。

获取所述当前的图像文件的文件头与所述图像数据之后,还可包括根据所述文件头判断图像文件的文件格式是否正确,也可理解为是否符合要求。

故而,在具体实施过程中,可将.ktx文件进行解析,检测出文件头,判断文件格式是否正确;若正确,再分离文件头与图像数据;然后,分析文件头参数,将参数保存在结构体中,包含图像的长、宽,图像数据大小,颜色格式,压缩算法名称等,该参数可理解为前文所涉及的特征参数。

s14:确定所述当前的图像文件对应的着色器。

图3是图1中步骤s14的流程示意图。

请参考图3,步骤s14可以包括:

s141:获取所述图像文件对应的着色器程序,并编译所述着色器程序;

s142:创建程序对象;

s143:链接所述程序对象与编译后的着色器程序,确定所述着色器。

其中,所述着色器包括顶点着色器与片段着色器。

以上过程可参照领域内对程序对象、着色器、着色器程序、顶点着色器、片段着色器的定义理解。

此外,其中,片段着色器的着色器程序中,配置有图像滤波算法,其可起到优化图片显示效果的作用。

可见,具体实施过程中,可以先编写顶点着色器和片段着色器程序算法,在片段着色器中增加图像滤波算法,优化图片显示效果;再编译着色器程序;然后,创建程序对象,链接程序对象与着色器。

其后,还可绑定当前纹理单元,获取着色器属性参数分量id。可见,在其中一种实施方式中,步骤s15之前,还可包括:

确定所述着色器所使用的纹理单元,以及所述着色器的属性参数分量的标识。

其中的标识可以为前文所涉及的id,也可以为其他可用于识别不同属性参数分量的数据,例如名称、其他编号,或其他认为设置的内容。

s15:根据所述当前的图像文件的图像数据和/或特征参数,得到顶点数据与纹理数据。

其中的顶点数据与纹理数据,可以为所定义的顶点和纹理坐标数组,在动顶点数组和纹理坐标数组后,可应用于绘制。

s16:将所述顶点数据与所述纹理数据应用于所述着色器,执行对所述当前的图像文件对应的当前帧图像的绘制,以利用所述窗口及所述窗口表面显示所述当前帧图像。

其中,所述将所述顶点数据与所述纹理数据应用于所述着色器,执行对所述当前的图像文件对应的当前帧图像的绘制,包括:

根据所述标识,以所述顶点数据与所述纹理数据配置所述着色器的属性参数分量;

根据所配置的属性参数分量,以及所确定的纹理单元,执行对所述当前的图像文件对应的当前帧图像的绘制。

在完成每一帧当前帧图像的绘制并显示后,可进入步骤s17与步骤s18,以满足逐帧绘制的需求。

s17:是否完成了所有所述n个序列帧图像的图像文件的绘制处理。

若是,则执行步骤s19:完成所述动画的开机驱动。

若否,则执行步骤s18:确定下一帧序列帧图像为当前帧图像,下一帧序列帧图像的图像文件为当前的图像文件。

可见,本实施例针对于基于qnx操作系统的高分辨率液晶显示系统,可能产生的全屏开机动画帧率低,占内存资源大的不足之处,提供了一种高帧率、节省内存与硬盘资源,显示效果较高的驱动方法。该方法通过gpu解码压缩纹理并反复绘制全屏图像,从而实现帧率较高、显示效果较好,容易进行项目移植的开机动画。

具体的,将序列帧图像转换为目标格式的图像文件,其有益效果在于:对于部分例如png或jpg格式的序列帧图像,其读入内存时需要解压成原图rgb888格式,这就会导致图像数据比较大,而以.ktx为例的目标格式的图像文件,在由gpu硬件解码时,其读入内存的过程无需转换格式,所以,可相对节省内存与硬盘资源。同时,以上可选方案中可利用gpu硬件解码,故而,其绘制一张图片的速度更快。

图4是本发明一实施例中实现基于qnx操作系统的全屏开机动画驱动方法的进程架构图。

本实施例及其可选方案所涉及的方法可利用图4所示的进程架构图来实现。

架构中可包括应用层、屏幕、qnx操作系统(qnxos)、板级支持包(boardsupportpackage),以及硬件(hardware)。

在应用层可提供界面api(screenapi)、eglapi、openglesapi。在屏幕中可提供混合管理器(compositionmanager)、传送器(blitter)、gpu驱动(gpudriver),以及显示驱动(displaydriver)。

其中,混合管理器(compositionmanager)可与界面api(screenapi)交互,传送器(blitter)可分别与界面api(screenapi)以及硬件(hardware)实现传输;gpu驱动(gpudriver)可接收eglapi与openglesapi的数据,并向硬件(hardware)发送数据;显示驱动(displaydriver)可接收openglesapi的数据,并向硬件(hardware)发送数据。

综上所述,本发明提供的基于qnx操作系统的全屏开机动画驱动方法,通过利用主线程创建窗口,及其对应的窗口表面,并利用子线程将各图像文件读入内存;实现了窗口及窗口表面的确定,并可同时实现图像文件的读入;本发明还通过对所述n个序列帧图像的图像文件进行逐帧的绘制处理,所述绘制处理包括:解析当前的图像文件,获取所述当前的图像文件的图像数据与特征参数;确定所述当前的图像文件对应的着色器;根据所述当前的图像文件的图像数据和/或特征参数,得到顶点数据与纹理数据;将所述顶点数据与所述纹理数据应用于所述着色器,实现了当前帧图像的绘制与显示。故而,本发明针对基于qnx操作系统的高分辨率液晶显示系统,实现了全屏开机动画的驱动。

同时,本发明或其可选方案还可具有高帧率、节省资源等积极的效果。从而克服了现有相关技术中针对普通显示系统的驱动方法帧率低,或者在应用于高分辨率液晶显示系统时可能产生的占内存大等情况。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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