应用中的图像帧生成方法、装置、设备及存储介质与流程

文档序号:15095587发布日期:2018-08-04 14:29阅读:124来源:国知局

本申请实施例涉及计算机技术领域,特别涉及一种应用中的图像帧生成方法、装置、设备及存储介质。



背景技术:

应用中的图像帧可以包括多个面板,每个面板可以包括多个控件,终端通过对所有的控件进行渲染即可得到图像帧。这里的控件也可称为UI(User Interface,用户界面)部件。

上述的渲染涉及到第一渲染调用和第二渲染调用,这里的第一渲染调用是用户界面的渲染调用(UIDrawcall),每个控件可以对应各自的第一渲染调用;第二渲染调用是全局的渲染调用(Drawcall),每个图像帧可以对应多个第二渲染调用。在渲染时,通过第二渲染调用对所有的第一渲染调用进行渲染。

由于需要对所有的第一渲染调用进行分别渲染,导致生成图像帧的耗时较长。



技术实现要素:

本申请实施例提供了一种应用中的图像帧生成方法、装置、设备及存储介质,用于解决需要对所有的第一渲染调用进行渲染,导致生成图像帧的耗时较长的问题。所述技术方案如下:

一方面,提供了一种应用中的图像帧生成方法,所述方法包括:

创建待创建的图像帧中的至少两个面板,以及所述至少两个面板中的各个面板中的控件;

为所述控件创建第一渲染调用,并根据所述控件的层级生成所述第一渲染调用的层级;

对于各个所述第一渲染调用,获取所述第一渲染调用对应的控件的材质,在材质索引库中查找与所述层级和所述材质相匹配的材质实例,将所述材质实例填充到所述第一渲染调用中;

通过第二渲染调用对包含相同材质实例的第一渲染调用进行合并,并对合并后得到的第一渲染调用进行渲染,得到所述图像帧。

一方面,提供了一种应用中的图像帧生成装置,所述装置包括:

创建模块,用于创建待生成的图像帧中的至少两个面板,以及所述至少两个面板中的各个面板中的控件;

所述创建模块,还用于为所述控件创建第一渲染调用,并根据所述控件的层级生成所述第一渲染调用的层级;

处理模块,用于对于所述创建模块为各个所述第一渲染调用,获取所述第一渲染调用对应的控件的材质,在材质索引库中查找与所述层级和所述材质相匹配的材质实例,将所述材质实例填充到所述用户界面渲染调用中;

生成模块,用于通过第二渲染调用对包含相同材质实例的第一渲染调用进行合并,并对合并后得到的第一渲染调用进行渲染,得到所述图像帧。

一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的应用中的图像帧生成方法。

一方面,提供了一种应用中的图像帧生成设备,所述应用中的图像帧生成设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的应用中的图像帧生成方法。

本申请实施例提供的技术方案的有益效果是:

由于材质索引库中包括材质、层级和材质实例,所以,可以设置材质和层级相同的多个第一渲染调用共用材质索引库中的同一个材质实例,即,在多个第一渲染调用中填充的材质实例相同,而第二渲染调用在渲染第一渲染调用时,可以对包含相同材质实例的第一渲染调用进行合并,从而减少了待渲染的第一渲染调用的数量,减少了生成图像帧的耗时。

另外,由于合并之后的第一渲染调用的数量会变少,所以,还可以降低终端的功耗。

附图说明

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

图1是本申请一个实施例提供的图像帧、控件和层级之间的关系的示意图;

图2是本申请一个实施例提供的应用中的图像帧生成方法的方法流程图;

图3是本申请一个实施例提供的材质索引库的示意图;

图4是本申请另一实施例提供的应用中的图像帧生成方法的方法流程图;

图5是本申请另一实施例提供的创建用户界面渲染调用的示意图;

图6是本申请另一实施例提供的配置页面的示意图;

图7A至7D是另一实施例提供的游戏的界面示意图;

图8是本申请一个实施例提供的应用中的图像帧生成装置的结构框图;

图9是本申请再一实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作地详细描述。

下面对下文出现的名词进行解释:

1、控件:控件是图像帧中能够被显示的部件。

在一种应用场景中,控件是图像中的UI(User Interface,用户界面)部件,也可以被称为Widget。

控件内部包含了渲染所需的所有原材料,包括形状、材质和位置信息中的至少一种。其中,控件的形状可以是三角形、正方形、圆形中的至少一种,本实施例不作限定。请参考图1,图1中以每个三角形表示一个控件。

2、材质:材质是控件的表面中各可视属性的结合,可视属性是指表面的纹理、色彩、光滑度、透明度、反射率、折射率、发光度中的至少一种。

在一种应用场景中,材质用于生成材质实例。

3、材质实例:材质实例是对材质进行实例化后得到的一组参数集合。每组参数集合被GPU(Graphics Processing Unit,图形处理器)渲染后,即可得到在用户界面中显示的对象,比如,对象可以是一座白色的雪山、一棵绿色的树。

4、控件的层级:控件的层级用于指示控件的渲染顺序,且控件的层级越大的渲染顺序越早,控件的层级越小的渲染顺序越晚。

请参考图1,若以最左侧的矩形表示图像帧所在平面,则渲染顺序为从右向左,控件1的层级为4;控件2的层级为3;控件3和4位于同一平面(图中以虚线框表示)上,层级均为2;控件5的层级为1。

5、面板:面板是图像帧中具有相同属性的控件的集合,从而整体操作这些控件。

在一种应用场景中,面板是NGUI(Unity引擎)封装的控件的集合,也可以被称为Panel。

图1中,假设将控件1和3封装成一个集合,将控件2、4和5封装成一个集合,则可以将控件1和3的集合称为面板1,将控件2、4和5的集合称为面板2。

6、面板的层级:面板的层级用于指示其所包括的控件集合的整体渲染顺序。

图1中,假设面板1的层级为1,面板2的层级为2,且面板1包括控件1和3,控件1的层级大于控件3的层级,面板2包括控件2、4和5,控件2的层级大于控件4的层级,控件4的层级大于控件5的层级,则控件2、4和5所组成的集合的渲染顺序早于控件1和3所组成的集合的渲染顺序。即,控件的渲染顺序为:2、4、5、1和3。

7、第一渲染调用:第一渲染调用是用户界面的渲染调用。

在一种应用场景中,第一渲染调用是NGUI封装的一个渲染单元,此时的第一渲染调用也可以被称为UIDrawcall。

终端对每个控件创建一个第一渲染调用,则第一渲染调用的数量与控件的数量相等。比如,终端为图1中5个控件中的每个控件分别创建一个第一渲染调用,则第一渲染调用的数量是5个。

8、第一渲染调用的层级:第一渲染调用的层级用于指示第一渲染调用的渲染顺序,且第一渲染调用的层级越大渲染顺序越早,第一渲染调用的层级越小渲染顺序越晚。

本实施例中,第一渲染调用的层级与其对应的控件的层级相关,与该控件所属的面板的层级无关。第一渲染调用的层级的生成流程详见步骤402中的描述,此处不作赘述。

9、第二渲染调用:第二渲染调用是全局的渲染调用。

在一种应用场景中,Unity引擎准备数据并通知GPU的过程称为一次第二渲染调用,此时的第二渲染调用也可以被称为Drawcall。

其中,终端可以对每个第一渲染调用产生一个第二渲染调用,则第二渲染调用的数量与第一渲染调用的数量相等。比如,若终端为图中5个控件中的每个控件分别创建了一个第一渲染调用,则第二渲染调用的数量也是5个。

相关技术中,每个第一渲染调用中包含一个材质实例,该材质实例是根据第一渲染调用对应的控件的材质生成的,且不同面板之间按照控件所属的面板的层级来确定对应的第一渲染调用的层级,同一面板内按照控件的层级来确定对应的第一渲染调用的层级,若同一面板内层级相同的控件对应的第一渲染调用中的材质实例相同,则可以对这两个控件对应的第一渲染调用进行合并。但是,由于相关技术无法对不同面板之间具有相同材质实例的第一渲染调用进行合并,导致生成图像帧的耗时较长,本实施例可以解决上述问题。

请参考图2,其示出了本申请一个实施例提供的应用中的图像帧生成方法的方法流程图,该应用中的图像帧生成方法可以应用于终端中。该应用中的图像帧生成方法,包括:

步骤201,创建待生成的图像帧中的至少两个面板,以及该至少两个面板中的各个面板中的控件。

终端可以按照帧率生成应用中的图像帧,也可以接收用户触发的用于指示生成应用中的图像帧的操作信号,根据该操作信号生成一个图像帧,本实施例不对生成应用中的图像帧的触发方式作限定。

本实施例中,终端可以在每创建完一个面板和该面板中的控件后,执行步骤202和203,直至创建完图像帧中的所有面板和控件后,再执行步骤204。或者,终端可以在创建完所有的面板和控件后,再执行步骤203-204。

步骤202,为控件创建第一渲染调用,并根据控件的层级生成第一渲染调用的层级。

可选的,该第一渲染调用的层级与该至少两个面板的层级无关。

终端为步骤201中创建的每个控件创建一个第一渲染调用,再根据控件的层级生成该第一渲染调用的层级。其中,第一渲染调用的层级的生成流程详见步骤402中的描述,此处不作赘述。

本实施例中,第一渲染调用的层级与控件的层级相关,与控件所属的面板的层级无关;而相关技术中,第一渲染调用的层级与控件的层级和控件所属的面板的层级都相关,所以,本实施例中第一渲染调用的层级与相关技术中第一渲染调用的层级不同。

步骤203,对于各个第一渲染调用,获取第一渲染调用对应的控件的材质,在材质索引库中查找与该层级和该材质相匹配的材质实例,并将材质实例填充到该第一渲染调用中。

材质索引库包括至少一种材质、每种材质的层级列表和层级列表中每个层级对应的材质实例。请参考图3,图中以4种材质进行举例说明,材质1的层级列表包括4个第一渲染调用的层级,材质2的层级列表包括3个第一渲染调用的层级,材质3的层级列表包括1个第一渲染调用的层级,材质4的层级列表包括2个第一渲染调用的层级,图3中每个层级都对应于一个材质实例(图3中未示出材质实例)。

初始时,材质索引库是空的,在终端查找与第一渲染调用的材质和层级相匹配的材质实例的过程中,如果终端未查找到该材质实例,则会根据该材质和层级创建该材质、该层级和对应的材质实例。可见,材质索引库是在创建第一渲染调用的过程中生成的,具体生成过程详见步骤408和410中的描述,此处不作赘述。

在查找与第一渲染调用的材质和层级相匹配的材质实例时,终端可以先在材质索引库中查找与第一渲染调用的材质相同的材质,再在该材质的层级列表中查找与第一渲染调用的层级相同的层级,将该层级对应的材质实例填充到第一渲染调用中,此时的第一渲染调用相当于一个容纳材质实例的容器。

步骤204,通过第二渲染调用对包含相同材质实例的第一渲染调用进行合并,并对合并后得到的第一渲染调用进行渲染,得到图像帧。

当合并的第一渲染调用中,存在至少两个第一渲染调用对应于同一面板中的不同控件时,说明可以对同一面板中不同控件的第一渲染调用进行合并;当合并的第一渲染调用中,存在至少两个第一渲染调用对应于不同面板中的控件时,说明可以对不同面板中不同控件的第一渲染调用进行合并。这样,可以通过合并第一渲染调用来减少待渲染的第一渲染调用的数量,而不必对所有的第一渲染调用进行渲染,可以减少生成图像帧的耗时。

仍然以图1为例,假设面板1包括控件1和3,面板2包括控件2、4和5,则终端需要创建5个第一渲染调用,若控件3对应的第一渲染调用和控件4对应的第一渲染调用包含相同的材质实例,那么,可以对控件3对应的第一渲染调用和控件4对应的第一渲染调用进行合并来产生一个第二渲染调用,对剩余3个第一渲染调用中的每个第一渲染调用分别产生一个第二渲染调用,总共产生4个第二渲染调用,对这4个第二渲染调用进行渲染即可得到图像帧。

综上所述,本申请实施例提供的应用中的图像帧生成方法,由于材质索引库中包括材质、层级和材质实例,所以,可以设置材质和层级相同的多个第一渲染调用共用材质索引库中的同一个材质实例,即,在多个第一渲染调用中填充的材质实例相同,而第二渲染调用在渲染第一渲染调用时,可以对包含相同材质实例的第一渲染调用进行合并,从而减少了待渲染的第一渲染调用的数量,减少了生成图像帧的耗时。

当填充有相同的材质实例的第一渲染调用对应于不同的面板中的控件时,还可以对不同面板对应的第一渲染调用进行合并,以减少第二渲染调用所渲染的第一渲染调用的数量,从而减少生成图像帧的耗时。

另外,由于合并之后第一渲染调用的数量会变少,所以,还可以降低终端的功耗。

请参考图4,其示出了本申请另一实施例提供的应用中的图像帧生成方法的方法流程图,该应用中的图像帧生成方法可以应用于终端中。该应用中的图像帧生成方法,包括:

步骤401,创建待生成的图像帧中的至少两个面板,以及该至少两个面板中的各个面板中的控件。

其中,生成图像帧的触发方式、面板和控件的创建方式详见步骤201中的描述,此处不作赘述。

在生成图像帧时,若首次生成图像帧,则终端需要创建该图像帧中的所有面板以及每个面板中的所有控件,此时,终端创建的控件是面板中的所有控件。若待生成的图像帧是非首次生成的图像帧,则可能待生成的图像帧与前一个图像帧相比,画面只有局部变化,此时可以只更新图像帧中变化的部分,以提高图像帧的生成效率。此时,终端创建的控件是与上一次生成的图像帧相比,面板中发生变化的控件。

步骤402,为控件创建第一渲染调用,并根据控件的层级生成第一渲染调用的层级,该第一渲染调用的层级与该至少两个面板的层级无关。

终端为步骤201中创建的每个控件创建一个第一渲染调用,再根据控件的层级生成该第一渲染调用的层级。其中,为控件创建第一渲染调用,并根据控件的层级生成第一渲染调用的层级,可以包括如下几个子步骤:

子步骤1,对于至少两个面板中的各个面板,获取面板中的各个控件的材质。

由于控件在创建时已具有材质的属性,所以,终端可以直接从面板中的每个控件中读取对应的材质。

子步骤2,对于每种材质,获取具有该材质的各个控件的层级,得到材质对应的层级区间。

在一种实现方式中,终端可以先对面板中的各个控件进行编号;再对每种材质创建一个分组;再将具有相同材质的控件的编号分类到同一分组中;最后对于每个分组,读取该分组中每个编号所表示的控件的层级,得到该分组对应的层级区间,该层级区间即为该材质对应的层级区间。

假设面板包括控件1-5,且控件1和2的材质为材质1,控件3和4的材质为材质2,控件5的材质为材质3,则终端可以生成材质1对应的分组1,并将编号1和2添加到分组1中;生成材质2对应的分组2,将编号3和4添加到分组2中;生成材质3对应的分组3,将编号5添加到分组3中。

假设控件1-5的层级分别为1-5,则分组1对应的层级区间为[1,2],分组2对应的层级区间为[3,4],分组3对应的层级区间为[5]。

子步骤3,当该层级区间内的数值连续时,对具有材质的各个控件创建对应的第一渲染调用,并根据该层级区间确定第一渲染调用的层级。

若层级区间内的数值连续,则终端可以对每个分组中的控件创建一个第一渲染调用。在确定第一渲染调用的层级时,终端可以先按照层级区间中数值的大小对层级区间进行排序,按照层级区间的序号确定对应的第一渲染调用的层级,该序号与第一渲染调用的层级呈正相关关系。即,序号越小,第一渲染调用的层级越小;当序号越大,第一渲染调用的层级越大。

假设按照层级区间中数值的大小对层级区间排序后,确定分组1-3的序号分别是1-3,则终端可以对控件1和2创建一个第一渲染调用,将该第一渲染调用的层级设为1;对控件3和4创建一个第一渲染调用,将该第一渲染调用的层级设为2;对控件5创建一个第一渲染调用,将该第一渲染调用的层级设为3。

需要说明的是,终端可以为编号属于同一个分组的控件创建同一个第一渲染调用,即,同一面板内层级相邻且材质相同的控件对应于同一个第一渲染调用,相对于相关技术中对每个控件创建一个第一渲染调用来说,这里已经可以减少待渲染的第一渲染调用的数量。

子步骤4,当层级区间内的数值不连续时,将层级区间划分为至少两个层级子区间,对具有该材质且层级属于同一层级子区间的各个控件创建对应的第一渲染调用,并根据该层级子区间确定第一渲染调用的层级,该层级子区间中的数值连续。

若层级区间内的数值不连续,则终端可以将层级区间划分为至少两个层级子区间,对分组中对应于同一层级子区间的控件创建一个第一渲染调用。假设分组1对应的层级区间为[1,2],分组2对应的层级区间为[3,5],分组3对应的层级区间为[4],则终端可以将分组2的层级区间拆分为层级子区间[3]和[5],对控件1和2创建一个第一渲染调用,对控件3创建一个第一渲染调用,对控件4创建一个第一渲染调用,对控件5创建一个第一渲染调用。

在确定第一渲染调用的层级时,终端可以按照数值大小对层级区间和层级子区间进行排序,按照序号确定对应的第一渲染调用的层级,该序号与第一渲染调用的层级呈正相关关系。即,序号越小,第一渲染调用的层级越小;当序号越大,第一渲染调用的层级越大。

假设分组1的序号为1,分组2中层级子区间[3]的序号为2,分组3的序号为3,分组2中层级子区间[5]的序号为4,则终端将控件1和2对应的第一渲染调用的层级设为1,将控件3对应的第一渲染调用的层级设为2,将控件4对应的第一渲染调用的层级设为3,将控件5对应的第一渲染调用的层级设为4。

根据上述算法可知,第一渲染调用的层级与控件的层级相关,与控件所属的面板的层级无关;而相关技术中,第一渲染调用的层级与控件的层级和控件所属的面板的层级都相关,所以,本实施例中第一渲染调用的层级与相关技术中第一渲染调用的层级不同。

步骤403,对于各个第一渲染调用,获取第一渲染调用对应的控件的材质。

由于控件在创建时已具有材质的属性,所以,终端可以直接从第一渲染调用对应的控件中读取对应的材质。

步骤404中,检测材质索引库中是否包括该材质,当材质索引库中包括该材质时,执行步骤405;当材质索引库中不包括该材质时,执行步骤408。

步骤405,检测该材质对应的层级列表中是否包括该层级,当该层级列表中包括该层级时,执行步骤406;当该层级列表中不包括该层级时,执行步骤409。

步骤406,检测材质索引库中是否包括该层级对应的材质实例,当材质索引库中包括该层级对应的材质实例时,执行步骤407;当材质索引库中不包括该层级对应的材质实例时,执行步骤410。

步骤407,将该层级对应的材质实例确定为与该层级和该材质相匹配的材质实例。

步骤408,在材质索引库中创建该材质和该材质的层级列表,执行步骤406。

终端在材质索引库中创建该材质,并创建该材质的层级列表,将该第一渲染调用的层级添加到该层级列表中。

在一种可能的实现方式中,材质可以用参数V表示,层级可以用参数K表示,则层级列表可以是多个参数K的组合。终端可以创建一个参数值用于指示该材质的参数V,再创建一个参数值用于指示该层级的参数K,再创建该参数V和该参数K的对应关系,得到材质和层级列表的对应关系。其中,参数V可以包括纹理、色彩、光滑度、透明度、反射率、折射率、发光度中的至少一种,参数K可以包括第一渲染调用的层级。

步骤409,在层级列表中创建该层级,执行步骤406。

终端将该第一渲染调用的层级添加到该层级列表中。

步骤410,根据该材质在材质索引库中创建对应于该层级的材质实例,并将该材质实例确定为与该层级和该材质相匹配的材质实例。

终端可以根据材质创建材质实例,并将该材质实例对应于层级存储到材质索引库中。

需要说明的是,为了简化程序实现,可以在步骤408和409之后都执行步骤406。或者,由于当材质索引库中没有该第一渲染调用对应的材质和层级列表时,必然没有对应的材质实例,所以,终端还可以在步骤408之后执行步骤410。同理,当材质索引库中没有该第一渲染调用对应的层级时,必然没有对应的材质实例,所以,终端还可以在步骤409之后执行步骤410。

步骤411,将该材质实例填充到该第一渲染调用中。

步骤412,通过第二渲染调用对包含相同材质实例的第一渲染调用进行合并,并对合并后得到的第一渲染调用进行渲染,得到图像帧。

当合并的第一渲染调用中,存在至少两个第一渲染调用对应于同一面板中的不同控件时,说明可以对同一面板中不同控件的第一渲染调用进行合并;当合并的第一渲染调用中,存在至少两个第一渲染调用对应于不同面板中的控件时,说明可以对不同面板中不同控件的第一渲染调用进行合并。这样,可以通过合并第一渲染调用来减少待渲染的第一渲染调用的数量,而不必对所有的第一渲染调用进行渲染,可以减少生成图像帧的耗时。

请参考图5,其中,面板1对应的第一渲染调用1和面板2中的第一渲染调用1相同,可以对这两个第一渲染调用进行合并来产生一个第二渲染调用;面板1对应的第一渲染调用3和面板2对应的第一渲染调用2相同,可以对这两个第一渲染调用进行合并来产生一个第二渲染调用,其余每个第一渲染调用产生一个第二渲染调用,最终终端可以将原来的7个第二渲染调用降为5个第二渲染调用。

本实施例提供的方法可以应用于所有使用Unity+NGUI进行封装的项目中,通过对底层代码的进行修改,并保留逻辑层以及资源制作层面的制作流程,可以降低第一渲染调用和第二渲染调用的数量,从而提升图像帧的生成效率和降低终端功耗。当本实施例应用于游戏时,可以提升游戏的性能。

请参考图6,其示出了在一个游戏项目中使用本实施例的配置页面,可以在用户界面资源的预制件(prefab)上,给面板配置共享材质索引的分组,详见图6中虚线框内的内容。

综上所述,本申请实施例提供的应用中的图像帧生成方法,由于材质索引库中包括材质、层级和材质实例,所以,可以设置材质和层级相同的多个第一渲染调用共用材质索引库中的同一个材质实例,即,在多个第一渲染调用中填充的材质实例相同,而第二渲染调用在渲染第一渲染调用时,可以对包含相同材质实例的第一渲染调用进行合并,从而减少了待渲染的第一渲染调用的数量,减少了生成图像帧的耗时。

当填充有相同的材质实例的第一渲染调用对应于不同的面板中的控件时,还可以对不同面板对应的第一渲染调用进行合并,以减少第二渲染调用所渲染的第一渲染调用的数量,从而减少生成图像帧的耗时。

另外,由于合并之后第一渲染调用的数量会变少,所以,还可以降低终端的功耗。

在非首次生成图像帧时,只需要创建图像帧中产生变化的控件,再对这些控件进行渲染,而不需要创建并渲染图像帧中所有的控件,可以提高图像帧的生成效率。

以应用是魂斗罗应用为例,则在用户启动魂斗罗应用时,终端按照上述方法生成魂斗罗应用的首页。此后,用户可以在首页中发起比赛,在比赛过程中,终端按照上述方法,根据帧率和用户触发的操作信号生成比赛过程中的图像帧,该操作信号用于指示游戏角色在比赛中进行攻击、防守。

以生成比赛过程中的图像帧为例,请参考图7A和图7D,图7A是使用相关技术时图像帧的线条示意图,图7B是使用相关技术时图像帧的灰度示意图。

1)在创建该图像帧时,终端创建操作面板710(以图7A中未加粗的虚线框表示)和操作面板710中的各个操作控件,以及属性面板720(以图7A中加粗的虚线框表示)和属性面板720中的各个属性控件。其中,操作控件是用于供用户操纵游戏人物的控件,比如,前进后退控件711、跳起控件712、攻击控件713,属性控件是用于展示游戏人物的属性的控件,比如,人物名称721、血条722。

2)终端再对每个操作控件和属性控件创建一个第一渲染调用。

3)对于每个第一渲染调用,根据该第一渲染调用对应的操作控件或属性控件的材质生成材质实例,将材质实例填充到第一渲染调用中。

4)对每个第一渲染调用产生一个第二渲染调用。

5)通过第二渲染调用对第一渲染调用进行渲染,得到图像帧。

根据图7A和图7B可知,此时的第二渲染调用的数量是426个。

请参考图7C和图7D,图7C是使用本实施例提供的方法时图像帧的线条示意图,图7D是使用本实施例提供的方法时图像帧的灰度示意图。

1)在创建该图像帧时,终端创建操作面板710(以图7C中未加粗的虚线框表示)和操作面板710中的各个操作控件,以及属性面板720(以图7C中加粗的虚线框表示)和属性面板720中的各个属性控件。其中,操作控件是用于供用户操纵游戏人物的控件,比如,前进后退控件711、跳起控件712、攻击控件713,属性控件是用于展示游戏人物的属性的控件,比如,人物名称721、血条722。

2)终端再对每个操作控件和每个属性控件创建一个第一渲染调用,并根据对应的控件的层级确定第一渲染调用的层级。其中,第一渲染调用的层级与渲染顺序呈正相关关系。比如,图7C中,属性控件8对应的第一渲染调用的层级大于属性控件4对应的第一渲染调用的层级,若属性控件8与属性控件4的显示区域相交,则渲染后,属性控件4会覆盖在属性控件8之上。

3)对于每个第一渲染调用,获取该第一渲染调用对应的控件的材质,在材质索引库中查找与该层级和材质相匹配的材质实例,将该材质实例填充到该第一渲染调用中。

4)对包含相同材质实例的第一渲染调用进行合并,并对合并后得到的每个第一渲染调用产生一个第二渲染调用。

5)通过第二渲染调用对第一渲染调用进行渲染,得到图像帧。

根据图7C和图7D可知,此时的第二渲染调用的数量是365个。与生成图7A和图7B的图像帧相比,整体的第二渲染调用的数量下降了61个,即,合并了61个第一渲染调用。

请参考图8,其示出了本申请一个实施例提供的应用中的图像帧生成装置的结构框图,该应用中的图像帧生成装置可以应用于终端中。该应用中的图像帧生成装置,包括:

创建模块810,用于实现上述步骤201和202及各个步骤中隐含的有关创建的功能,或者,用于实现上述步骤401和402及各个步骤中隐含的有关创建的功能。

查找模块820,用于实现上述步骤203及各个步骤中隐含的有关查找的功能,或者,用于实现上述步骤403-411及各个步骤中隐含的有关查找的功能。

生成模块830,用于实现上述步骤204及各个步骤中隐含的有关生成的功能,或者,用于实现上述步骤412及各个步骤中隐含的有关生成的功能。

综上所述,本申请实施例提供的应用中的图像帧生成装置,由于材质索引库中包括材质、层级和材质实例,所以,可以设置材质和层级相同的多个第一渲染调用共用材质索引库中的同一个材质实例,即,在多个第一渲染调用中填充的材质实例相同,而第二渲染调用在渲染第一渲染调用时,可以对包含相同材质实例的第一渲染调用进行合并,从而减少了待渲染的第一渲染调用的数量,减少了生成图像帧的耗时。

当填充有相同的材质实例的第一渲染调用对应于不同的面板中的控件时,还可以对不同面板对应的第一渲染调用进行合并,以减少第二渲染调用所渲染的第一渲染调用的数量,从而减少生成图像帧的耗时。

另外,由于合并之后第一渲染调用的数量会变少,所以,还可以降低终端的功耗。

在非首次生成图像帧时,只需要创建图像帧中产生变化的控件,再对这些控件进行渲染,而不需要创建并渲染图像帧中所有的控件,可以提高图像帧的生成效率。

图9示出了本申请一个示例性实施例提供的终端900的结构框图。该终端900可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端900包括有:处理器901和存储器902。

处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的应用中的图像帧生成方法。

在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、触摸显示屏905、摄像头906、音频电路907、定位组件908和电源909中的至少一种。

外围设备接口903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。

摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。

定位组件908用于定位终端900的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件908可以是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。

加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3D动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器913可以设置在终端900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商Logo时,指纹传感器914可以与物理按键或厂商Logo集成在一起。

光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。

接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的应用中的图像帧生成方法。

本申请一个实施例提供了一种应用中的图像帧生成设备,所述应用中的图像帧生成设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的应用中的图像帧生成方法。

需要说明的是:上述实施例提供的应用中的图像帧生成装置在进行图像帧生成时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将应用中的图像帧生成装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用中的图像帧生成装置与应用中的图像帧生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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