CN117909000A - 界面生成方法及电子设备 - Google Patents

界面生成方法及电子设备 Download PDF

Info

Publication number
CN117909000A
CN117909000A CN202211281882.4A CN202211281882A CN117909000A CN 117909000 A CN117909000 A CN 117909000A CN 202211281882 A CN202211281882 A CN 202211281882A CN 117909000 A CN117909000 A CN 117909000A
Authority
CN
China
Prior art keywords
interface
animation
electronic device
rendering
rendering instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211281882.4A
Other languages
English (en)
Inventor
廖恒
陆壬淼
李煜
刘道勇
周越海
徐俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211281882.4A priority Critical patent/CN117909000A/zh
Priority to PCT/CN2023/123558 priority patent/WO2024082987A1/zh
Publication of CN117909000A publication Critical patent/CN117909000A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请公开了界面生成方法及电子设备,涉及电子技术领域。本申请提供的界面生成方法包括:在电子设备通过应用程序显示动画的过程中,考虑到动画过程中界面的连续性,在生成第一渲染指令并基于第一渲染指令生成动画的一帧界面后,基于动画的逻辑直接修改第一渲染指令为第二渲染指令,并基于第二渲染指令生成动画的另一帧界面,无需UI线程执行测量、布局、绘制录制,也无需渲染线程生成动画过程中的每一帧界面,进而提升界面生成的能效比。其中,界面的连续性是指,在动画过程中虽然控件的大小、位置、透明度和/或颜色等属性变化,但是该控件存在于动画过程中。

Description

界面生成方法及电子设备
技术领域
本申请涉及电子技术领域,尤其涉及界面生成方法及电子设备。
背景技术
随着电子技术的发展,电子设备的屏幕的分辨率和刷新率越来越高,其中,屏幕的分辨率影响一帧界面中包含的像素,刷新率影响生成一帧界面的时间。
在电子设备显示第一帧界面前,电子设备需要花费计算资源生成该第一帧界面;在电子设备显示第二帧界面前,电子设备需要重新花费计算资源生成该第二帧界面。
当电子设备未及时生成该第二帧界面时,电子设备的屏幕上显示的内容会发生卡顿。而电子设备为了保障能够及时生成该第二帧界面,往往通过提高CPU的工作频率以提升电子设备的计算能力,进而导致电子设备生成一帧界面的能耗较高,降低了界面生成的能效比。
发明内容
本申请实施例提供了界面生成方法及电子设备,考虑到动画的连续性,在电子设备生成第一渲染指令后,可以直接基于动画的逻辑更新第一渲染指令,并基于更新后的第一渲染指令生成动画过程中的界面。进而,本申请实施例提供的界面生成方法,可以通过减少应用程序遍历视图和渲染生成位图的次数,进而提升生成界面的能效比。
第一方面,本申请实施例提供了一种界面生成方法,应用于电子设备,该电子设备上安装有第一应用,该方法包括:在该电子设备接收到第一操作后,该电子设备确定第一动画过程中界面的描述信息,该第一操作用于触发该电子设备通过该第一应用显示该第一动画;该电子设备生成第一渲染指令,渲染指令为用于被GPU执行以生成第一界面的数据,该第一界面为该第一动画过程中的一帧界面;该电子设备基于该动画过程中界面的描述信息更新该第一渲染指令为第二渲染指令;该电子设备基于该第二渲染指令生成该第二界面,该第二界面与该第一界面不同,该第二界面为该第一动画过程中的一帧界面。
在上述实施例中,电子设备通过基于动画的逻辑直接修改第一渲染指令为第二渲染指令,减少了生成第二指令的开销,进而提升了生成界面的能效比。
结合第一方面的一些实施例,在一些实施例中,该电子设备基于该动画过程中界面的描述信息更新该第一渲染指令为第二渲染指令,具体包括:该电子设备基于该第一动画过程中界面的描述信息确定第一参数,该第一参数用于描述第一控件在该第二界面中的发生变化的属性,该第一控件为在该第二界面中显示效果发生变化的视图;该电子设备基于该第一参数更新该第一渲染指令得到该第二渲染指令。
在上述实施例中,电子设备可以确定发生变化的控件,并确定第二控件发生变化的属性,然后修改第一渲染指令为第二渲染指令。
结合第一方面的一些实施例,在一些实施例中,在该电子设备接收到第一操作前,该方法还包括:该电子设备显示桌面,该桌面包括第一控件,该第一控件对应于第一应用;该电子设备接收到第一操作,具体包括:该电子设备检测到用户点击该第一控件;在该电子设备接收到第一操作后,该方法还包括:该第一动画为该第一应用的启动动画,在该第一动画中,第二控件的位置和大小发生变化;该电子设备基于该第一动画过程中界面的描述信息确定第一参数,具体包括:该第一电子设备确定第一位置,该第一参数包括该第一位置,该第一位置为该第二控件在第二界面中的位置,该第二界面为该第一动画的非第一帧界面;该电子设备基于该第一参数更新该第一渲染指令得到该第二渲染指令,具体包括:该电子设备通过将该第一渲染指令中的该第二控件的顶点位置修改为该第一位置得到该第二渲染指令。
在上述实施例中,应用程序的启动动画过程中,第二控件的位置和大小发生变化,则可以通过修改第一渲染指令,得到第二界面对应的第二渲染指令,进而基于第二渲染指令生成第二界面。
结合第一方面的一些实施例,在一些实施例中,该电子设备通过将该第一渲染指令中的该第二控件的顶点位置修改为该第一位置得到该第二渲染指令,具体包括:该电子设备基于该第一参数更新第一方法调用所使用的顶点位置为该第一位置以得到该第二渲染指令,该第一方法调用为用于被GPU指令以绘制该第二控件的方法调用。
在上述实施例中,由于第二控件的位置和大小发生变化,则可以通过修改第一渲染指令中绘制第二控件的方法调用中的输入参数以得到第二渲染指令。
结合第一方面的一些实施例,在一些实施例中,该第一参数用于描述该第一视图的颜色、顶点位置、透明度和/或缩放比例。
在上述实施例中,第一参数可以包括用于描述动画涉及的视图的颜色、顶点位置、透明度和/或缩放比例等,在此不作限定。
结合第一方面的一些实施例,在一些实施例中,该第一参数被该第一应用写入第一数据结构体中,该第一数据结构体与渲染管线绑定;在该渲染管线中,该第一参数被该电子设备读取以修改渲染指令。
在上述实施例中,第一参数需要传递到渲染管线中才能在修改渲染指令时被电子设备读取。
结合第一方面的一些实施例,在一些实施例中,该第一数据结构体为unifrom。
在上述实施例中,第一参数可以位于uniform中,进而参与到渲染管线中。
结合第一方面的一些实施例,在一些实施例中,该方法还包括:在该电子设备接收到第一操作后,该电子设备配置更新任务,该更新任务被配置在GPU驱动中;该电子设备基于该第一参数更新该第一渲染指令得到该第二渲染指令,具体包括:该电子设备通过更新任务将该第一渲染指令中的第二参数替换为该第一参数以得到该第二渲染指令,该第二参数用于描述该第一控件在该第一界面中的属性。
在上述实施例中,可以在GPU驱动中配置更新任务,在驱动GPU生成第二界面前,替换渲染指令中的第二参数为第一参数,进而生成第二渲染指令。
结合第一方面的一些实施例,在一些实施例中,该方法还包括:该电子设备基于该第一动画过程中界面的描述信息确定该第一控件在该第一界面中的背景贴图或前景贴图与该第一控件在该第二界面中的背景贴图或前景贴图不同;该电子设备加载第一纹理,该第一纹理为该第一控件在该第二界面中的背景贴图或前景贴图,该第一参数包括该第一纹理的标识,该第一纹理为该第一视图在该第二界面中的背景贴图或前景贴图。
在上述实施例中,当动画还涉及视图的纹理更新时,由于第二渲染指令不是由电子设备在遍历视图后基于渲染树生成的,故还需要电子设备读取纹理内存中,并将纹理的标识通过第一参数传递到渲染管线中。
结合第一方面的一些实施例,在一些实施例中,该第一渲染指令和该第二渲染指令的方法调用相同,该第一渲染指令中的资源和该第二渲染指令中的资源不同,该第一渲染指令中的资源为该第一渲染指令中的方法调用在被执行时所使用的变量或固定值,该第二渲染指令中的资源为该第二渲染指令中的方法调用在被执行时所使用的变量或固定值。
结合第一方面的一些实施例,在一些实施例中,该电子设备接收到第一操作后,该电子设备确定第一动画过程中界面的描述信息,具体包括:该电子设备接收到该第一操作后,该电子设备确定被触发的动画为该第一动画;该电子设备确定该第一动画涉及的视图,该第一动画涉及的视图为在该第一动画过程中显示内容发生变化的视图;该电子设备确定该第一动画过程中一帧或多帧界面中该第一动画涉及的视图的属性。
在上述实施例中,第一渲染指令和第二渲染指令的方法调用相同,而方法调用所使用的资源不同。
结合第一方面的一些实施例,在一些实施例中,该电子设备接收到第一操作后,该电子设备确定第一动画过程中界面的描述信息,具体包括:该电子设备接收到该第一操作后,该电子设备确定被触发的动画为该第一动画;该电子设备确定该第一动画涉及的视图,该第一动画涉及的视图为在该第一动画过程中显示内容发生变化的视图;该电子设备确定该第一动画过程中一帧或多帧界面中该第一动画涉及的视图的属性。
在上述实施例中,电子设备可以确定被触发动画过程中界面的描述信息,进而确定第一参数。其次,由于无需等到要生成下一帧界面时才知道下一帧界面中视图的属性,所以在动画过程中无需UI线程和渲染线程参与。
第二方面,本申请实施例提供了一种界面生成方法,应用于电子设备,该电子设备上安装有第一应用,该方法包括:在该电子设备接收到第一操作后,该第一应用生成第一渲染树,该第一渲染树保存有用于生成第一界面的绘制操作,该第一界面为第一动画中的该第一应用的第一帧界面,该第一操作用于触发该电子设备通过该第一应用显示该第一动画,在该第一界面和第二界面中第一控件的位置发生变化,在该第二界面中该第一控件在第一位置,该第二界面为该第一动画中的非第一帧界面;该第一应用将该第一渲染树转换为第一渲染指令;该电子设备基于该第一渲染指令调用GPU生成该第一界面;该电子设备将该第一渲染指令中的第一参数更新为该第一位置以得到第二渲染指令;该电子设备基于该第二渲染指令调用GPU生成该第二界面。
在上述实施例中,在动画的第一帧界面生成过程中,电子设备基于渲染树生成第一渲染指令;在动画的其他帧界面的生成过程中,电子设备更新第一渲染指令为第二渲染指令,进而生成其他帧界面,无需电子设备生成与第二渲染指令对应的渲染树,也无需电子设备基于渲染树生成第二渲染指令,提升了动画过程中界面生成的能效比。
结合第二方面的一些实施例,在一些实施例中,在该电子设备接收到第一操作后,该电子设备确定该第一动画过程中界面的描述信息,该第一动画过程中界面的描述信息包括该第二位置。
在上述实施例中,电子设备还需要在第二帧界面开始生成前,确定第二帧界面视图的属性,进而更新第一渲染指令为第二渲染指令。
结合第二方面的一些实施例,在一些实施例中,在该电子设备接收到第一操作后,该电子设备配置更新任务,该更新任务被配置在GPU驱动中;该电子设备将该第一渲染指令中的第一参数更新为该第一位置以得到第二渲染指令,具体包括:该电子设备通过该更新任务将该第一渲染指令中的该第一参数更新为该第一位置以得到该第二渲染指令。
在上述实施例中,可以更改在GPU驱动中配置更新任务,进而更新第一渲染指令为第二渲染指令;在生成第二渲染指令后,GPU生成第二帧界面。
结合第二方面的一些实施例,在一些实施例中,该方法还包括:该电子设备基于该第一动画过程中界面的描述信息确定该第一控件在该第一界面中的背景贴图或前景贴图与该第一控件在该第二界面中的背景贴图或前景贴图不同;该电子设备加载第一纹理,该第一纹理为该第一控件在该第二界面中的背景贴图或前景贴图,该第一参数包括该第一纹理的标识,该第一纹理为该第一视图在该第二界面中的背景贴图或前景贴图。
在上述实施例中,当动画还涉及视图的纹理更新时,由于第二渲染指令不是由电子设备在遍历视图后基于渲染树生成的,故还需要电子设备读取纹理内存中,并将纹理的标识通过第一参数传递到渲染管线中。
第三方面,本申请实施例提供了一种电子设备,该电子设备上安装有第一应用,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在该电子设备接收到第一操作后,该电子设备确定第一动画过程中界面的描述信息,该第一操作用于触发该电子设备通过该第一应用显示该第一动画;该电子设备生成第一渲染指令,渲染指令为用于被GPU执行以生成第一界面的数据,该第一界面为该第一动画过程中的一帧界面;该电子设备基于该动画过程中界面的描述信息更新该第一渲染指令为第二渲染指令;该电子设备基于该第二渲染指令生成该第二界面,该第二界面与该第一界面不同,该第二界面为该第一动画过程中的一帧界面。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:该电子设备基于该第一动画过程中界面的描述信息确定第一参数,该第一参数用于描述第一控件在该第二界面中的发生变化的属性,该第一控件为在该第二界面中显示效果发生变化的视图;该电子设备基于该第一参数更新该第一渲染指令得到该第二渲染指令。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:该电子设备显示桌面,该桌面包括第一控件,该第一控件对应于第一应用;该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:该电子设备检测到用户点击该第一控件;该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:该第一动画为该第一应用的启动动画,在该第一动画中,第二控件的位置和大小发生变化;该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:该第一电子设备确定第一位置,该第一参数包括该第一位置,该第一位置为该第二控件在第二界面中的位置,该第二界面为该第一动画的非第一帧界面;该电子设备通过将该第一渲染指令中的该第二控件的顶点位置修改为该第一位置得到该第二渲染指令。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:该电子设备基于该第一参数更新第一方法调用所使用的顶点位置为该第一位置以得到该第二渲染指令,该第一方法调用为用于被GPU指令以绘制该第二控件的方法调用。
结合第三方面的一些实施例,在一些实施例中,该第一参数用于描述该第一视图的颜色、顶点位置、透明度和/或缩放比例。
结合第三方面的一些实施例,在一些实施例中,该第一参数被该第一应用写入第一数据结构体中,该第一数据结构体与渲染管线绑定;在该渲染管线中,该第一参数被该电子设备读取以修改渲染指令。
结合第三方面的一些实施例,在一些实施例中,该第一数据结构体为unifrom。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:在该电子设备接收到第一操作后,该电子设备配置更新任务,该更新任务被配置在GPU驱动中;该电子设备基于该第一参数更新该第一渲染指令得到该第二渲染指令,具体包括:该电子设备通过更新任务将该第一渲染指令中的第二参数替换为该第一参数以得到该第二渲染指令,该第二参数用于描述该第一控件在该第一界面中的属性。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:该电子设备基于该第一动画过程中界面的描述信息确定该第一控件在该第一界面中的背景贴图或前景贴图与该第一控件在该第二界面中的背景贴图或前景贴图不同;该电子设备加载第一纹理,该第一纹理为该第一控件在该第二界面中的背景贴图或前景贴图,该第一参数包括该第一纹理的标识,该第一纹理为该第一视图在该第二界面中的背景贴图或前景贴图。
结合第三方面的一些实施例,在一些实施例中,该第一渲染指令和该第二渲染指令的方法调用相同,该第一渲染指令中的资源和该第二渲染指令中的资源不同,该第一渲染指令中的资源为该第一渲染指令中的方法调用在被执行时所使用的变量或固定值,该第二渲染指令中的资源为该第二渲染指令中的方法调用在被执行时所使用的变量或固定值。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:该电子设备接收到该第一操作后,该电子设备确定被触发的动画为该第一动画;该电子设备确定该第一动画涉及的视图,该第一动画涉及的视图为在该第一动画过程中显示内容发生变化的视图;该电子设备确定该第一动画过程中一帧或多帧界面中该第一动画涉及的视图的属性。
第四方面,本申请实施例提供了一种电子设备,该电子设备上安装有第一应用,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在该电子设备接收到第一操作后,该第一应用生成第一渲染树,该第一渲染树保存有用于生成第一界面的绘制操作,该第一界面为第一动画中的该第一应用的第一帧界面,该第一操作用于触发该电子设备通过该第一应用显示该第一动画,在该第一界面和第二界面中第一控件的位置发生变化,在该第二界面中该第一控件在第一位置,该第二界面为该第一动画中的非第一帧界面;该第一应用将该第一渲染树转换为第一渲染指令;该电子设备基于该第一渲染指令调用GPU生成该第一界面;该电子设备将该第一渲染指令中的第一参数更新为该第一位置以得到第二渲染指令;该电子设备基于该第二渲染指令调用GPU生成该第二界面。
结合第四方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:在该电子设备接收到第一操作后,该电子设备确定该第一动画过程中界面的描述信息,该第一动画过程中界面的描述信息包括该第二位置。
结合第四方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:在该电子设备接收到第一操作后,该电子设备配置更新任务,该更新任务被配置在GPU驱动中;该电子设备将该第一渲染指令中的第一参数更新为该第一位置以得到第二渲染指令,具体包括:该电子设备通过该更新任务将该第一渲染指令中的该第一参数更新为该第一位置以得到该第二渲染指令。
结合第四方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:该电子设备基于该第一动画过程中界面的描述信息确定该第一控件在该第一界面中的背景贴图或前景贴图与该第一控件在该第二界面中的背景贴图或前景贴图不同;该电子设备加载第一纹理,该第一纹理为该第一控件在该第二界面中的背景贴图或前景贴图,该第一参数包括该第一纹理的标识,该第一纹理为该第一视图在该第二界面中的背景贴图或前景贴图。
第五方面,本申请实施例提供了一种芯片***,该芯片***应用于电子设备,该芯片***包括一个或多个处理器,该处理器用于调用计算机指令以使得上述电子设备执行如第一方面、第二方面、第一方面中任一可能的实现方式以及第二方面中任一可能的实现方式描述的方法。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述电子设备执行如第一方面、第二方面、第一方面中任一可能的实现方式以及第二方面中任一可能的实现方式描述的方法。
第七方面,本申请实施例提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行如第一方面、第二方面、第一方面中任一可能的实现方式以及第二方面中任一可能的实现方式描述的方法。
可以理解地,上述第四方面和第五方面提供的电子设备、第五方面提供的芯片***、第六方面提供的计算机程序产品和第七方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的应用程序生成位图的一个示例性示意图。
图2A和图2B为本申请实施例提供的动画过程中界面变化的一个示例性示意图。
图3为本申请实施例提供的动画过程中界面生成的一个示例性示意图。
图4A和图4B为本申请实施例提供的UI线程执行测量方法调用和布局方法调用确定非动画对象的控件的位置和大小的一个示例性示意图。
图5为本申请实施例提供的界面生成方法的流程的一个示例性示意图。
图6A为本申请实施例提供的通过更新顶点位置更新GPU指令的一个示例性示意图。
图6B-图6E为本申请实施例提供的通过更新顶点位置更新GPU指令的另一个示例性示意图。
图7A-图7D为本申请实施例提供的界面生成方法中数据流程的一个示例性示意图。
图8A和图8B为本申请实施例提供的通过实现三维动画方法的一个示例性示意图。
图9为本申请实施例提供的电子设备的硬件结构的一个示例性示意图。
图10为本申请实施例提供的电子设备的软件架构的一个示例性示意图。
图11A和图11B为本申请实施例提供的界面生成方法的数据流动与软件模块交互的一个示例性示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“该”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作***与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
为了便于理解,下面先对本申请实施例涉及的相关术语及相关概念进行介绍。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
界面作为应用程序与用户之间的交互和信息交互的介质接口,在每一次垂直同步信号到来时,电子设备需要为前台的应用程序生成该应用程序的界面。其中,垂直同步信号的频率与电子设备的屏幕的刷新率有关,例如垂直同步信号的频率与电子设备的屏幕的刷新率相同。
即每次电子设备刷新屏幕上显示的内容前,都需要为前台应用生成该应用程序的界面,以在屏幕刷新时向用户展现应用程序的新生成的界面。
其中,电子设备生成应用程序的界面需要应用程序自己渲染生成位图(bitmap),将自己的位图传递给表面合成器(SurfaceFlinger)。即,应用程序作为生产者执行绘制生成位图,将该位图存入表面合成器提供的缓冲队列(BufferQueue)中;表面合成器作为消费者不断的从BufferQueue获取应用程序生成的位图。其中,位图位于应用程序生成的surface上,该surface会被填入BufferQueue中。
在表面合成器获得可见的应用程序的位图后,表面合成器与硬件合成策略模块(Hardware Composer,HWC)确定位图作为图层(layer)的图层合成的方式。
在表面合成器和/或硬件合成策略模块执行位图合成后,由表面合成器和/或硬件合成策略模块将合成后的位图填入帧缓冲(Frame Buffer)中传递给显示子***(DisplaySubsystem,DSS),DSS在拿到合成后的位图可以将该合成后的位图显示到屏幕上。该帧缓冲可以是在屏缓冲(on-screenbuffer)。其中,位图在表面合成器上也可以称为图层。
其中,应用程序生成位图的过程如下图1所示。
图1为本申请实施例提供的应用程序生成位图的一个示例性示意图。
如图1所示,应用程序在接收到垂直同步信号(Vsync)后,开始生成位图,具体的步骤可以分为四步,分别为步骤S101、步骤S102、步骤S103和步骤S104。
S101:主线程遍历应用程序的视图,将每个视图的绘制操作保存至新生成的渲染树中。
主线程(UI线程,UI Thread)让视图结构(viewhierarchy)失效,UI线程通过测量方法调用(measure())、布局方法调用(layout())、绘制方法调用(draw(),或可以称为绘制录制方法调用)遍历该应用程序的视图(view),确定并保存每个视图的绘制操作,并将视图和该视图涉及的绘制操作如(如drawline)录制到渲染树的渲染节点(RenderNode)的绘制指令列表(displaylist)中。其中,绘制指令列表中保存的数据可以为绘制操作结构体(DrawOP或DrawListOP)。
其中,视图是构成应用程序界面的基本元素,界面上的一个控件可以对应于一个或多个视图。
可选的,在本申请一些实施方式中,在绘制方法调用内,应用程序的UI线程还会读取视图上承载的内容至内存中。例如,图片视图(imageview)承载的图片,文本视图(textview)承载的文本。或者,在绘制方法调用内,应用程序的UI线程确定读取视图上承载的内容至内存中的操作,并录制到绘制指令列表中。绘制指令列表中的绘制操作结构体也可以称为绘制指令。
其中,绘制操作结构体为一个数据结构体,用于绘制图形,例如绘制线条、绘制矩形、绘制文本等。绘制操作结构体在渲染节点被遍历时会通过渲染引擎进而转换为图像处理库的API调用,OpenGLES库、Vulkan库、Metal库中的接口调用。例如在渲染引擎(Skia库)中,drawline会被封装为DrawLineOp,DrawLineOp是一个数据结构体,数据结构体里面包含有绘制的数据如线的长度、宽度等信息。DrawLineOp进一步会被封装为OpenGLES库、Vulkan库、Metal库中的接口调用,进而得到GPU指令。GPU指令用于调用GPU以生成位图。其中,OpenGLES库、Vulkan库、Metal库可以统称为图像处理库或图形渲染库,在一帧界面的生成过程中,电子设备通过OpenGLES库、Vulkan库或Metal库生成渲染指令。图像处理库提供图形渲染的API以及驱动支持等。
其中,GPU指令也可以称为渲染指令。
其中,DrawOP可以以链式的数据结构存储在应用程序的栈中。
其中,绘制指令列表可以是一个缓冲区,该缓冲区中记录有应用程序一帧界面所包括的所有绘制操作结构体或是所有绘制操作的标识,如地址、序号等。当应用程序有多个窗口、或者在不同的显示区域(display)上显示时,需要独立地生成与多个窗口对应的多个渲染树。
其中,渲染树是UI线程生成的,用于生成应用程序界面的一个数据结构体,渲染树可以包括多个渲染节点,每个渲染节点包括渲染属性和绘制指令列表。渲染树记录有生成应用程序一帧界面的部分或所有信息。
可选地,在本申请一些实施方式中,主线程可以只对脏区域(也可以称为需要被重绘的区域)的视图执行遍历,生成差分渲染树。其中,差分渲染树在被传递/同步到渲染线程后,渲染线程可以差分渲染树和上一帧渲染使用的渲染树确定本帧界面渲染需要使用的渲染树。
S102:主线程将渲染树同步到渲染线程,渲染树位于应用程序的栈中。
UI线程将渲染树传递/同步给渲染线程(Render Thread),其中,渲染树位于应用程序对应的进程的栈(stack)中。
S103:渲染线程执行渲染树中的绘制指令,生成位图。
渲染线程首先获取一个硬件画布(HardwareCanvas),并在该硬件画布上执行渲染树中的绘制操作,进而生成位图。其中,该硬件画布位于该应用程序持有的surface中,该surface中承载有位图或者其他格式的用于保存图像信息的数据。
S104:渲染线程发送承载位图的表面至表面合成器。
渲染线程通过表面将生成的位图发送到表面合成器上以参与图层合成。
可以认为步骤S101为构建阶段,主要负责确定该应用程序中每个视图的大小、位置、透明度等属性。例如,视图中的drawLine,构建中可以被封装成一个DrawLineOp,里面包含有绘制的数据如线的长度、宽度等,还可以包含有底层图像处理库的DrawLineOp对应的接口调用,用于在渲染阶段调用底层图形库生成位图。
类似的,可以认为步骤S103为渲染阶段,主要负责遍历渲染树的渲染节点,并执行每个渲染节点的绘制操作,进而在硬件画布上生成位图,在该过程中,渲染线程通过渲染引擎调用底层图形处理库,如OpenGLES库(或OpenGL库)、Vulkan库、Metal库等,进而调用GPU完成渲染以生成位图。
在大多数场景中,为了符合消费者的视觉习惯,应用程序显示的内容的变化往往是连续的而不是跳变的,也就是说在连续的多帧界面中,一般会出现相同的显示内容,例如下文中的图2A和图2B所示。
图2A和图2B为本申请实施例提供的动画过程中界面变化的一个示例性示意图。
如图2A所示,电子设备显示的界面为界面201,界面201可以是桌面应用程序的界面。在界面201中,电子设备显示有控件2A01、控件2A02、控件2A03、控件2A04,其中,控件2A02、控件2A03和控件2A04为控件2A01的子控件。控件2A01可以被称为文件夹图标,控件2A02为游戏应用程序对应的图标控件,控件2A03为手电筒应用程序对应的图标控件,控件2A04为图库对应的图标控件。
在用户点击控件2A01后控件2A01的大小位置发生变化如界面202所示。其中,点击控件2A01可以是点击控件2A01中的不包括控件2A02、控件2A03和控件2A04的区域。
在界面202中,随着控件2A01的大小位置发生变化,控件2A02、控件2A03和控件2A04的大小和位置也发生变化。
可选地,在本申请一些实施方式中,在用户点击界面201中的控件2A01后,界面202所示的界面的变化为本申请实施例中的一种动画。
如图2B所示,应用程序启动过程中的界面变化依次为界面203、界面204、界面205和界面206。其中,界面204和界面205即为本申请实施例中的一种动画涉及的界面变化。
其中,界面203为桌面应用程序的界面,界面203包括控件2B01,控件2B01为阅读应用程序的图标。在用户点击控件2B01后,图库应用程序启动,启动过程如界面204、界面205和界面206所示。
在界面204中,在控件2B01位置上出现新的控件2B02,且控件2B02不断扩大;在界面205中,控件2B02不断扩大至屏幕大小(可以不包括状态栏);最后,电子设备显示界面205,界面205为应用程序的启动界面(StartingWindow)。其中,控件2B02的不断扩大的过程即为本申请实施例的动画的一种,可以称该动画为启动动画。
可选地,在本申请一些实施方式中,界面205也可以为应用程序的主界面,即在启动动画结束后显示应用程序的主界面。其中,主界面可以为MainActivity对应的界面。
在上文中的图2A所示的动画中,应用程序的开发者只需指定控件2A01的在动画中的变化逻辑,即修改控件2A01在动画过程中的每一帧界面的视图属性。类似的,在上文中图2B所示的启动动画中,应用程序的开发者也需要指定每一帧界面中控件2B02的属性。
为了方便说明,认为控件2A01与一个视图对应;在更一般的情况下,控件2A01对应于多个视图。
图3为本申请实施例提供的动画过程中界面生成的一个示例性示意图。
如图3所示,动画过程中界面生成的过程可以包括如下五个步骤,分别为:步骤S301、步骤S302、步骤S303、步骤S304和步骤S305。其中,动画过程中的第一帧界面生成的过程可以包括:步骤S301、步骤S302、步骤S303、步骤S304和步骤S305;动画过程中的非第一帧界面生成的过程可以包括:步骤S302、步骤S303、步骤S304和步骤S305。
步骤S301:创建动画事件1。
动画事件可以在任意时刻被UI线程创建,与应用程序的逻辑有关,例如,可以是在接收到用户的输入、其他线程或进程向该应用程序发送的消息事件、网络数据请求更新后创建动画事件。动画事件中包括有实现动画效果的内部逻辑,例如动画效果的结束条件、动画效果持续时间内每一帧中视图属性的修改量。
动画事件在创建后,都会在UI线程注册回调(相当于注册动画事件),如UI线程的编舞者(Choregrapher)上注册回调,该回调用于UI线程在每次接收到垂直同步信号(Vsync)后,触发UI线程处理该动画事件,按照动画事件的逻辑修改视图的属性。
其中,在动画效果结束时,UI线程会按照动画事件的逻辑主动注销掉动画事件在UI线程注册的回调。
例如,在图2A所示的场景中,应用程序的UI线程在接收到用户点击控件2A01的操作后,会生成动画事件,如动画事件1。动画事件1用于在接收到垂直同步信号1后,修改动画对象的属性。其中,动画对象包括一个或多个视图。
可选地,在本申请一些实施方式中,动画对象并不包括用户感知到的发生变化的控件。例如,在图2A所示的场景中,动画对象为控件2A01,发生变化的控件还包括控件2A02、控件2A03和控件2A04。其中,控件2A02、控件2A03和控件2A04为被动画对象影响的发生变化的控件。即,动画事件并不修改控件2A02、控件2A03和控件2A04对应的视图的属性,而是由应用程序的UI线程根据布局确定的约束关系调整控件2A02、控件2A03和控件2A04对应的视图的属性。其中,应用程序的UI线程根据布局确定的约束关系调整控件2A02、控件2A03和控件2A04对应的视图的属性可以参考下文中的步骤S303的文字描述,此处不再赘述。
S302:接收到垂直同步信号后,触发动画事件1的回调,按照动画事件1的逻辑修改视图的属性。
应用程序的UI线程的在接收到垂直同步信号后,会依次处理输入事件(CALLBACK_INPUT)、动画事件(CALLBACK_ANIMATION)、遍历事件(CALLBACK_TRAVERSAL)和提交事件(CALLBACK_COMMIT)。
应用程序的UI线程在处理动画事件(如,doCallbacks(CALLBACK_ANIMATION))的过程中,会依据动画事件的逻辑修改视图的属性,在执行动画事件1中的代码后,动画对象的属性会被修改。例如,在图2A所示的场景中,若控件2A01对应的视图为图4A中的视图401,则修改前后视图401的宽、高和位置均不同,其中,视图401为动画对象。
S303:测量、布局、绘制录制以生成渲染树。
应用程序的UI线程执行测量方法调用、布局方法调用、绘制方法调用,具体的内容可以参考上文中图1对应的文字描述,此处不再赘述。
其中,在测量方法调用和布局方法调用中,需要基于视图的布局重新确定视图的大小和位置。
图4A和图4B为本申请实施例提供的UI线程执行测量方法调用和布局方法调用确定非动画对象的控件的位置和大小的一个示例性示意图。
如图4A所示,图4A中所示的内容与图2A所示的场景对应。其中,控件2A01与视图401对应,控件2A02与视图402对应,控件2A03与视图403对应、控件2A04与视图404对应。
在动画过程中,若视图401被应用程序的UI线程修改属性,如视图401的长度(高度)从40dp修改为80dp(视图401的长度为40dp时,视图402的长度为5dp),在应用程序的UI线程执行测量方法调用和布局方法调用的过程中,应用程序的UI线程基于“视图402的宽度为视图401宽度的1/8”这一约束关系,当视图401的长度变为80dp后,确定视图402的宽度变为10dp。
类似的,未在图4A中示出的视图402的宽度、视图403的长度和宽度、视图404的长度的宽度也可以通过布局文件(如XML文件)中的约束关系确定。
类似的,未在图4A中示出的视图402的位置、视图403的位置、视图404的位置也可以通过布局文件(如XML文件)中的约束关系确定。
如图4B所示,应用程序的界面包括视图405、视图406和视图407,并且视图405、视图406和视图407的水平(视图的宽度方向为水平)间隔固定(水平间隔固定为约束关系)。例如,水平间隔为5dp。
若动画事件的逻辑为将视图406(视图406为动画对象)的宽度从B1修改为B2,其中,B2大于B1大于0。在应用程序的UI线程将视图406的宽度修改为B2后,还需要修改视图407的位置以保证视图406和视图407的水平间隔固定。应用程序的UI线程在执行测量方法调用和布局方法调用后,可以确定视图407的位置变化。例如,应用程序的UI线程可以确定视图407的X轴位置变为x1。
故,在动画的过程中,UI线程在接收到垂直同步信号后,还需要执行测量、布局和绘制录制,即执行在动画的过程中的每一帧界面的生成过程中,应用程序的UI线程和渲染线程还需要不断地工作。
S304:接收渲染树、初始化GPU渲染的上下文,生成渲染树对应的GPU指令,指示GPU生成位图。
渲染线程在接收到渲染树后,会将渲染树中的渲染节点中的绘制指令列表和渲染属性转换为对应GPU指令。
可选地,在本申请一些实施方式中,GPU指令为图像处理库中的方法调用,或者GPU指为渲染引擎中的方法调用。
可选地,在本申请一些实施方式中,GPU指令GPU驱动接收到的指令。
S305:执行渲染树对应的GPU指令,生成位图。
GPU驱动或GPU在接收到渲染树对应的GPU指令后,执行该指令以生成位图。
结合上文图3、图4A和图4B所示的内容,由于动画过程中的界面变化是连续而非突变的,动画过程中不同帧的界面对应的渲染树的相似度较高,所以动画过程中不同帧的界面对应的GPU指令有相同的部分。
值得说明的是,在动画过程中,由于不同帧的界面对应的GPU指令有相同的部分,即应用程序的UI线程和渲染线程在动画过程中浪费了资源去生成相同的内容,降低了界面生成的能效比。
基于此,本申请实施例提供了界面生成方法及电子设备,本申请实施例提供的界面生成方法通过直接在GPU驱动层、图像处理库或渲染引擎中更新GPU指令或GPU指令对应的数据,进而生成动画过程中的下一帧界面。其中,更新前的GPU指令或GPU指令对应的数据可以称为第一渲染指令,更新后的GPU指令或GPU指令对应的数据可以称为第二渲染指令。
可选地,在本申请一些实施方式中,视图***中的动画模块可以确定动画过程中界面的描述信息,进而由动画模块或其他功能模块基于该动画过程中界面的描述信息生成更新信息。该更新信息用于更新GPU指令。其中,更新GPU指令是指:例如,将第一渲染指令更新为第二渲染指令。其中,动画过程中界面的描述信息用于描述动画过程中除第一帧界面外的每一帧界面中属性变化的视图以及视图的属性。
例如,在动画过程中,第一控件的位置和大小发生变化,则第一控件在每一帧界面中的大小和位置存储在更新信息中,则操作***在生成与动画的第一帧界面对应的第一渲染指令后,可以通过修改第一渲染指令中渲染第一控件的方法调用的输入参数,进而生成动画过程中的除第一帧界面外的每一帧界面。
可选的,在本申请一些实施方式中,该动画模块可以通过接口向应用程序的UI线程同步视图的位置,进而使得应用程序的UI线程可以确定控件的位置。
可选的,在本申请一些实施方式中,该动画模块可以通过接口从应用程序的UI线程同步纹理(texture),用于更新视图的背景贴图或前景贴图等,在此不做限定。或者,同步纹理资源这一操作也可以由GPU执行。
可以理解的是,本申请实施例提供的界面生成方法,在动画过程中,不需要UI线程执行绘制录制调用,不需要UI线程生成新的渲染树,进一步的,不需要渲染线程将绘制操作转换为GPU指令,所以可以提升界面生成的能效比。
下面结合图5所示的内容示例性的介绍本申请实施例提供的界面生成方法的流程。
图5为本申请实施例提供的界面生成方法的流程的一个示例性示意图。
如图5所示,本申请实施例提供的界面生成方法在动画过程中生成界面的过程可以包括如下九个步骤,分别为:步骤S501至步骤S509。其中,动画过程中的第一帧界面生成的过程可以包括:步骤S501、步骤S502、步骤S503、步骤S504和步骤S505;动画过程中的非第一帧界面生成的过程可以包括:步骤S506、步骤S507、步骤S508和步骤S509。
可选地,在本申请一些实施方式中,步骤S506和步骤S507可以仅在应用程序生成动画过程中的第一帧界面的过程中执行。
可选地,在本申请一些实施方式中,步骤S506和步骤S507可以在应用程序生成动画过程中的非第一帧界面的过程中执行。
可选地,在本申请一些实施方式中,步骤S506和步骤S507可以在应用程序生成动画过程中的第二帧界面的过程中执行,而在动画过程中生成其他帧界面的过程中不再执行。
可选地,在本申请一些实施方式中,步骤S507和步骤S508可以不由渲染线程执行而是由其他线程执行。其中,其他线程可以不是应用程序的线程,而是操作***维护的线程。例如,其他线程可以是统一渲染进程的线程。其中,统一渲染进程(UniRender)为与应用程序独立的进程,通过跨进程通信方式获取一个或多个应用的渲染树,并在合成渲染树后调用GPU生成位图。
其中,步骤S507和步骤S506是否需要重复执行,取决于动画过程中界面的描述信息包括的内容。例如,若动画过程中界面的描述信息的内容仅用于指示本帧界面中视图的属性的修改方式,则需要重复执行;若动画过程中界面的描述信息的内容用于指示动画过程中每一帧界面中视图的属性的修改方式,则可以仅执行一次。
S501:创建声明式动画事件1。
其中,声明式动画事件与图3中的动画事件可以一样也可以不一样,在本申请实施例中,声明式动画事件仅用于在名称上与图3中的动画事件进行区分,并不指代任何实质内容。
声明式动画事件可以在任意时刻创建,与应用程序的逻辑有关,例如,可以是在接收到用户的输入、其他线程或进程向该应用程序发送的消息事件、网络数据请求更新后创建动画事件。动画事件中包括有实现动画效果的内部逻辑,例如动画效果的结束条件、动画效果持续时间内每一帧对视图属性的修改量。
可选地,在本申请一些实施方式中,声明式动画事件与图3中的动画事件不同,其中,声明式动画事件需要声明动画过程中动画的逻辑。例如,声明式动画事件声明的内容包括:动画结束界面的描述信息和动画的持续时间;又例如,声明式动画事件声明的内容包括:动画结束界面的描述信息和动画的步进量;又例如,声明式动画事件声明的内容包括:动画的持续时间、动画的步进量。其中,动画的步进量可以包括本帧界面与上一帧界面中视图的属性的变化量。
可选地,在本申请一些实施方式中,在动画的过程中(非第一帧界面),声明式动画事件可以不注册回调。由于声明式动画事件已经声明了动画过程中动画的逻辑,即声明了动画过程中对每一帧界面中视图的属性的修改方式,故在动画过程中(非第一帧界面),声明式动画事件中没有额外的信息需要被应用程序的UI线程处理,故可以注销动画事件之前注册的回调。
可选地,在本申请一些实施方式中,声明式动画事件与图3中的动画事件相同,均指明动画对象以及动画对象的修改方式。在该情况下,应用程序的UI线程需要基于该声明式动画对象事件确定动画结束界面的描述信息、动画的步进量和动画的持续时间中的至少两个。
可选地,在本申请一些实施方式中,声明式动画事件与图3中的动画事件相同,则应用程序的UI线程在接收到垂直同步信号后,可以通过测量、布局确定本帧界面的动画描述信息。
S502:接收到垂直同步信号后,从声明式动画事件1中获取本帧界面的动画描述信息,确定视图的属性。
应用程序的UI线程接收到垂直同步信号后,从声明式动画事件1的声明内容中确定动画1的逻辑,进而确定动画过程中的第一帧界面中的视图的属性。
可选地,在本申请一些实施方式中,应用程序的UI线程在接收到垂直同步信号后,从声明式动画事件1的声明内容中确定动画结束界面的描述信息,进而确定动画结束界面中的视图的属性。
S503:测量、布局、绘制录制以生成渲染树。
应用程序的UI线程生成渲染树的过程可以参考图1中的文字描述,此处不再赘述。
其中,在步骤S502中,若应用程序的UI线程确定的是动画过程中的第一帧界面中的视图的属性,则该渲染树为动画过程中的第一帧界面对应的渲染树。
其中,在步骤S502中,若应用程序的UI线程确定的是动画结束界面中的视图的属性,则该渲染树为动画结束界面对应的渲染树。
若,应用程序的UI线程在步骤S502中确定的是结束界面的描述信息,则该渲染树为结束界面对应的渲染树。在该情况下,需要将结束界面对应GPU指令更新动画的第一帧界面的GPU指令。其中,更新GPU指令的方法可以参考后文中步骤S507、步骤S508中的文字描述,此处不再赘述。
S504:接收渲染树、初始化GPU渲染的上下文,生成渲染树对应的GPU指令,指示GPU生成位图。
渲染线程接收渲染树,初始化GPU渲染的上下文,生成渲染树对应的GPU指令,指示GPU生成位图的过程可以参考上文中图1中的文字描述,此处不再赘述。
S505:执行GPU指令,生成位图。
GPU驱动执行GPU指令,生成位图的过程中可以参考上文中图1的文字描述,此处不再赘述。
可选地,在本申请一些实施方式中,可以将GPU指令按照功能划分为:资源(如uniform、纹理(texture)、网格(mesh)等)和管线(pipeline)。其中,管线(pipeline)包括着色器(shader)等。其中,GPU执行GPU指令的过程也可以被称为GPU执行GPU渲染任务(例如,job desc),即GPU渲染任务可以用于调用GPU执行渲染以生成位图的具体操作。
管线也可以称为渲染管线、流水线、渲染流水线、图像管线或图像流水线。
其中,管线为GPU将资源和CPU发送的命令生成位图的过程,在该过程中涉及到一系列预置的方法调用,如着色器、光栅化等。其中,着色器可以为图形硬件设备(如GPU)所指向的一类特殊函数,即专为GPU编译的一种小型程序。
其中,uniform为图像处理库中的限定只读变量,由应用程序赋值后传递到图像处理库中,其中unifrom中可以保存有本帧界面中不同视图的颜色、透明度、大小比例等参数。uniform与管线绑定后,可以参与到管线对应的调用GPU生成位图的过程中。
S506:生成动画过程中界面的描述信息。
应用程序的UI线程需要生成动画过程中界面的描述信息。其中,动画过程中界面的描述信息包括描述动画过程中除第一帧界面外的每一帧界面中属性变化的视图以及视图的属性,或者,动画过程中界面的描述信息包括动画过程中每一帧界面中属性变化的视图以及视图的属性。
可选地,在本申请一些实施方式中,动画过程中界面的描述信息包括动画过程中每一帧界面中视图的属性。
可选地,在本申请一些实施方式中,动画过程中界面的描述信息包括描述动画过程中视图的属性的变化量。
可选地,在本申请一些实施方式中,界面的描述信息可以不包括视图的长、宽等属性的数值。可以理解的是,由于视图的长、宽等属性是为了方便应用程序开发者配置的参数,而在渲染过程中,绘制操作的输入参数可以不是视图的长、宽等属性,例如对于绘制矩形这一绘制操作来说,需要的输入参数可以是顶点位置,所以界面的描述信息可以不包括视图的长、宽等属性的数值。
例如,动画过程中界面的描述信息包括控件2A01顶点位置变化信息,其中顶点位置变化信息可以用于确定控件2A01的大小和位置。其中,顶点位置可以参考下文中图6A对应的文字描述。
若声明式动画事件(相当于图3中的动画事件)仅指定了动画对象在动画过程中的属性变化,应用程序的UI线程需要结合动画事件的内容确定属性变化的视图;除此之外,应用程序的UI线程还需要确定动画过程中除第一帧界面外的每一帧界面属性变化的视图的属性的数值。在该情况下,应用程序的UI线程还需要在接收到垂直同步信号后,执行布局方法调用和测量方法调用。
可选地,在本申请一些实施方式中,动画过程中界面的描述信息仅用于确定下一帧界面中属性变化的视图以及视图的属性。若动画过程中界面的描述信息仅用于确定下一帧界面中属性变化的视图以及视图的属性,则在动画过程中,应用程序的UI线程需要在接收到垂直同步信号后,生成动画过程中界面的描述信息,即本帧界面的描述信息。
可选地,在本申请一些实施方式中,动画过程中界面的描述信息可以由应用程序的UI线程遍历视图以确定。即,在该情况下,动画过程中界面的描述信息为本帧界面的描述信息。
S507:基于动画过程中界面的描述信息生成更新信息。
在动画模块生成动画过程中界面的描述信息后,可以由动画模块基于该动画过程中界面的描述信息生成更新信息并传递到渲染引擎、图像处理库中。
其中,更新信息可以为Skia库级别的指令,也可以是Vulkan库、OpenGL ES库或Metal库级别的指令,也可以是GPU驱动可以识别并执行的指令。
其中,更新信息可以是本帧界面中用于更新GPU指令中资源的信息。更新信息在本申请实施例中用于将上一帧界面的GPU指令(或动画第一帧界面的GPU指令)更新为本帧界面对应的GPU指令。
可选地,在本申请一些实施方式中,更新信息用于将上一帧界面对应的Skia库、Vulkan库、OpenGLES库或Metal库级别的指令转换为本帧界面中的对应的Skia库、Vulkan库、OpenGL ES库或Metal库级别的指令。具体的转换过程可以参考下文步骤S508的文字描述,此处不再赘述。
可选地,在本申请一些实施方式中,其中更新信息的实现可以通过uniform和一个额外的GPU任务完成。其中,该GPU任务可以称为更新任务,该更新任务可以配置在GPU驱动中,该更新任务可以接收并解析动画过程中界面的描述信息,并基于该动画过程中界面的描述信息更新uniform中的值。
可选地,在本申请一些实施方式中,更新信息包括动画过程中每一帧界面的描述信息,则更新信息可以直接参与到动画过程中第一帧界面的生成过程中,进而直接参与到后续的界面生成过程中。例如,在生成第I帧界面的过程中,更新信息中的与第I帧界面的描述信息对应的内容生效,参与到GPU渲染生成位图过程中。
可选地,在本申请一些实施方式中,若动画过程中界面的描述信息仅包括本帧界面的描述信息,则UI线程在动画过程中不断生成动画过程中界面的描述信息后,UI线程或渲染线程还需要不断地刷新更新信息的内容。
S508:基于更新信息和上一帧界面对应的GPU指令生成本帧界面对应的GPU指令。
GPU或GPU驱动基于更新信息将上一帧界面对应的GPU指令更新为本帧界面对应的GPU指令。
可选地,在本申请一些实施方式中,当更新信息为Skia库、Vulkan库、OpenGL ES库或Metal库级别的指令,则由渲染线程更新GPU指令对应为Skia库级别的指令、OpenGL ES库、Vulkan库或Metal库级别的指令。
其中,在动画过程中,相邻两帧界面的变化可以为界面中的视图的位置变化、大小变化、贴图变化、颜色变化和/或透明度变化等。对应的,在动画过程中,GPU指令中的管线可以没有发生变化,而仅GPU指令中的资源发生变化。
下面介绍几种更新GPU指令或等价更新GPU指令的方式。
可选地,在本申请一些实施方式中,可以在渲染引擎处部分或全部地更新上一帧界面或第一帧界面或最后一帧界面的绘制操作为本帧界面的绘制操作。
图6A为本申请实施例提供的通过更新顶点位置更新GPU指令的一个示例性示意图。
例如,在图2A所示的场景中,视图401的变化为大小变化和位置变化。若视图401为一个矩形,则在动画的第i帧中,其中i大于1,该视图401对应的绘制操作包括drawrect(rect r,paint p),其中r为矩形(rect)对象,p为画笔(paint)对象;r中包括参数c,参数c用于确定矩形的位置,如c=(bottom1,left1,right1,top1)。
其中,更新信息可以作用于上一帧界面对应的绘制操作的顶点位置,例如,更新信息使得c=c.*T,.*为矩阵点乘。其中,T=(bottom2/bottom1,left2/left1,right2/right1,top2/top1)。其中,T可以根据动画过程中界面的描述信息确定。
值得说明的是,T=(bottom2/bottom1,left2/left1,right2/right1,top2/top1)不代表动画描述信息中一定会包括动画的第i+k帧中视图402的顶点位置,这里只是示例性的说明。若,动画描述信息中包括动画的第i+k帧中视图402的顶点位置,则可以直接对c赋值。
在动画的第i+k帧中,其中k大于0,该视图401对应的绘制操作包括drawrect(rectr,paint p),r中参数c的值变为c=(bottom2,left2,right2,top2)。
可选地,在本申请一些实施方式中,可以通过修改canvas.rotate(degree)这一绘制操作的输入参数degree的值,实现视图的旋转。其中,实现视图的旋转的绘制操作并不局限于canvas.rotate()这一绘制操作。
可选地,在本申请一些实施方式中,可以通过修改paint.setalpha(alpha)这一绘制操作的输入参数alpha的值,实现视图的透明度的调整。其中,实现视图的透明度变化的绘制操作并不局限于paint.setalpha这一绘制操作。
可选地,在本申请一些实施方式中,可以通过修改paint.setcolor(color)这一绘制操作的输入参数color的值,实现视图的颜色的调整。其中,实现视图的颜色变化的绘制操作并不局限于paint.setcolor这一绘制操作。
在上述可选的实施方式中,顶点位置的变化、输入参数degree的变化、输入参数alpha的变化和输入参数color的变化均可以为本申请实施方式中的更新信息。即,uniform可以承载动画过程中不同视图的顶点位置、输入参数degree、输入参数alpha、输入参数color。
例如,在uniform中,degree=[0°,10°,20°,30°]。又例如,degree=[0],上文中的更新任务用于在每次生成位图前将degree的值增加10°。在GPU驱动执行GPU渲染任务后,画出的图形的旋转角度就会增加10°。
可选的,在本申请一些实施方式中,可以在GPU驱动层更新上一帧界面的GPU指令为本帧界面的GPU指令。
图6B-图6E为本申请实施例提供的通过更新顶点位置更新GPU指令的另一个示例性示意图。
其中,图6B示例性的介绍动画的第一帧界面的生成过程,图6C和图6D示例性的介绍动画的非第一帧界面的生成过程,图6E示例性的介绍更新GPU指令的过程。
如图6B所示,在动画的第一帧界面的生成过程中,首先,应用程序生成渲染树,如图6B中的渲染树1;然后,线程1接收渲染树1后将渲染树转换为GPU指令1,并将GPU指令1写入命令缓冲(commandbuffer),如图6B中的命令缓冲1,其中,线程1可以是渲染线程;再然后,在GPU指令被全部写入命令缓冲1后,命令缓冲1的数据会被提交到命令队列(commandqueue)中;最后,GPU执行命令队列中的命令,生成位图1,位图1为动画的第一帧界面对应的位图。
其中,命令缓冲可以从命令缓冲池(commandbuffer pool)中申请获得。
如图6C所示,在动画的非第一帧界面的生成过程中,应用程序或操作***可以将命令缓冲1中的GPU指令1更新为GPU指令2,并在更新后将命令缓冲1中的数据提交到命令队列中;然后,GPU执行命令队列中的命令,生成位图2,位图2为动画的非第一帧界面对应的位图。
如图6D所示,在动画的非第一帧界面的生成过程中,应用程序或操作***可以将命令队列中的GPU指令1更新为GPU指令2;然后,GPU执行命令队列中的命令,生成位图2,位图2为动画的非第一帧界面对应的位图。
如图6E所示,在动画的非第一帧界面的生成过程中,由于GPU指令可以被划分为两部分,分别为方法调用的标识和资源的标识,故可以通过更新资源的标识进而更新GPU指令。其中,方法调用可以相当于或者可以属于上文中的管线。在更新GPU指令的过程中,可以只更新资源的标识,其中,资源可以相当于方法调用的输入参数,或者,资源可以相当于方法调用中需要使用到的变量、固定值等。
例如,在图6E中,在将GPU指令1更新为GPU指令2的过程中,将资源1的标识更改为资源11的标识。若在GPU指令1中资源1的标识被方法调用1使用,则在GPU指令2中资源11的标识被方法调用1使用。结合图6A所示的内容,方法调用1为绘制矩形的调用,资源1可以为顶点位置1如(bottom1,left1,right1,top1),资源11可以为顶点位置2如(bottom2,left2,right2,top2)。则,GPU指令1用于在顶点位置1绘制一个矩形,GPU指令2用于在顶点位置2绘制一个矩形,进而实现如图6A所示的界面变化。
可选地,在本申请一些实施方式中,更新前后的GPU指令的方法调用部分,即管线部分不发生变化。
可以理解的是,在动画的第二帧界面直至动画结束前,应用程序的UI线程或渲染线程无需为界面的变化准备计算资源,动画过程中界面的负载由GPU承担。
S509:执行GPU指令,生成位图。
GPU执行GPU指令,生成本帧界面中应用程序的位图,该位图存储在BufferQueue的framebuffer上,进而参与图层合成以送显。
图7A-图7D为本申请实施例提供的界面生成方法中数据流程的一个示例性示意图。
如图7A所示,在动画的第一帧界面的生成过程中,应用程序的UI线程遍历视图生成与视图对应的渲染树;并且,应用程序的UI线程确定动画过程中界面的描述信息。
渲染线程接收到渲染树后,通过图像处理库将渲染树转换为GPU指令1,GPU指令1为对应于第一帧界面中应用程序的位图的GPU指令。GPU接收到GPU指令1后,生成位图1。
应用程序的UI线程通过图像处理库向GPU驱动配置更新任务,该更新任务可以接收动画过程中的界面描述信息。GPU驱动可以基于该更新任务生成更新信息。
在动画的非第一帧界面的生成过程中,例如,在动画的第N帧界面的生成过程中,GPU驱动基于更新信息和GPU指令1生成GPU指令2,然后基于GPU指令2生成位图。或者,GPU驱动在执行更新任务的过程中,基于GPU指令1生成GPU指令2。其中,生成GPU指令2的过程中可以参考上文中图6A-图6E中的文字描述,此处不再赘述。
在动画的第N+1帧界面的生成过程中,GPU驱动可以基于GPU指令1和更新信息生成GPU指令3,然后基于GPU指令3生成位图。其中,GPU指令3为对应于动画的第N+1帧界面中应用程序的位图的指令。
或者,在动画的第N+1帧界面的生成过程中,GPU驱动可以基于GPU指令2和更新信息生成GPU指令3,然后基于GPU指令3生成位图。其中,GPU指令3为对应于动画的第N+1帧界面中应用程序的位图的指令。
如图7B所示,在动画的第一帧界面的生成过程中,应用程序的UI线程遍历视图生成与视图对应的渲染树;并且,应用程序的UI线程确定动画过程中界面的描述信息。
渲染线程接收到渲染树后,通过图像处理库将渲染树转换为GPU指令1,GPU指令1为对应于第一帧界面中应用程序的位图的GPU指令。
应用程序的UI线程基于动画过程中界面的描述信息通过图像处理库配置更新信息,并将更新信息传递到GPU驱动。
在动画的非第一帧界面的生成过程中,例如,在动画的第N帧界面的生成过程中,GPU驱动基于更新信息和GPU指令1生成GPU指令2,然后基于GPU指令2生成位图。其中,生成GPU指令2的过程中可以参考上文中图6A-图6E中的文字描述,此处不再赘述。
如图7C所示,在动画的第一帧界面的生成过程中,应用程序的UI线程遍历视图生成与视图对应的渲染树;并且,应用程序的UI线程确定动画过程中界面的描述信息。
渲染线程接收到渲染树后,通过图像处理库将渲染树转换为GPU指令1,GPU指令1为对应于第一帧界面中应用程序的位图的GPU指令。GPU接收到GPU指令1后,生成位图。
在动画的非第一帧界面的生成过程中,例如,在动画的第N帧界面的生成过程中,应用程序的UI线程确定动画过程中界面的描述信息,即确定本帧界面的描述信息,并通过图像处理库将界面的描述信息转变为更新信息;GPU驱动基于更新信息和GPU指令1生成GPU指令2,然后基于GPU指令2生成位图。
可选地,在本申请一些实施方式中,应用程序的UI线程确定动画过程中界面的描述信息后,即确定本帧界面的描述信息后,可以按照图7A所示的,应用程序的UI线程通过图像处理库向GPU驱动配置GPU任务,该GPU任务用于刷新更新信息。
如图7D所示,与图7C所示内容不同的是,若动画涉及到纹理更新,则应用程序的UI线程和渲染线程可以更新纹理后将更新后的纹理的标识写入更新信息。
可选地,在本申请一些实施方式中,应用程序可以建立新的线程负责纹理更新。
可选地,在本申请一些实施方式中,若动画过程中界面的描述信息包括动画过程中多帧界面的描述信息,则应用程序可以将多个纹理预加载在内存中,并将多个纹理的标识保存在更新信息中。
可选地,在本申请一些实施方式中,若动画过程中界面的描述信息只包括动画过程中本帧界面的描述信息,则应用程序需要在每一帧界面的生成过程中将纹理加载在内存中,并将该纹理的标识保存在更新信息中。
可以理解的是,在本申请实施例提供的界面生成方法中,在动画的非第一帧界面的生成过程中,渲染线程不需要将渲染树转换为GPU指令,降低了界面生成过程中CPU的负载,可以提高动画过程中界面生成的能效比。
由于,本申请实施例提供的界面生成方法可以提高动画过程中界面生成的能效比,可以本省实施例提供的界面生成方法可以应用在三维(伪三维)动画领域。
图8A和图8B为本申请实施例提供的通过实现三维动画方法的一个示例性示意图。
如图8A所示,在三维动画过程中的界面1和三维动画过程中的界面2中存在一个球形物体,在光线方向不动(光源位置不动)的情况下,球形物体的空间位置变化导致球形物体表面的光照强度发生变化。
即,在三维动画过程中的界面1中球形物体表面的像素与三维动画过程中的界面1球形物体表面的像素不同,且不是简单的平移、旋转、颜色变化关系。
在本申请实施例中,渲染引擎向应用程序提供一个自定义的着色器,该自定义的着色器内置有一个或多个三维动画过程中的任意一帧界面的像素或生成该界面的绘制操作(如skia库级别的指令)。
其中,由于着色器用于计算颜色,则更新信息同样作用于颜色的计算过程。其中,不同的内置的一个或多个三维动画中颜色变化(如图8A中的光线方向变化导致的球形物体表面明暗不同)可以通过更新信息确定。
由于可以基于更新信息确定三维动画中的下一帧界面中像素的值(或生成下一帧界面的绘制操作),就无需在GPU中保存完整的三维模型以及无需GPU基于三维模型确定三维动画中的下一帧界面中像素的值。
例如,设三维动画过程中界面1中球形物体的像素矩阵为M1,三维动画过程中界面2中球形物体的像素矩阵为M2,其中更新信息中包括变换矩阵T1。则,M2可以通过M2=T1*M1计算得到。
其中,变换矩阵T1为二维矩阵,二维矩阵的计算量远远小于三维模型的计算量,进而可以降低三维动画过程中界面生成的计算量。
可选地,在本申请一些实施方式中,更新信息如T1可以离线确定并保存在电子设备上。
可选地,在本申请一些实施方式中,如图8B所示,也可以通过更新像素的位置(绘制操作在画布上的位置),进而生成三维动画中的一帧接界面。
例如,设三维动画过程中界面1中球形物体的像素矩阵为M1,三维动画过程中界面2中球形物体的像素矩阵为M2,其中更新信息中包括变换函数f1()。则,M2可以通过M2=f1(M1)计算得到。其中,f1()可以用于更改像素矩阵的内部元素在矩阵中的位置。
可以理解的是,由于不需要保存三维动画中涉及的物体的三维模型,可以将三维动画的计算复杂度从三维降低为二维,并且可以节约内存空间,进而提高了界面生成的能效比。
下面介绍本申请实施例提供的电子设备的硬件结构和软件架构。
图9为本申请实施例提供的电子设备的硬件结构的一个示例性示意图。
电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificialintelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本申请实施例对该电子设备的具体类型不作特殊限制。
电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等***器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备充电,也可以用于电子设备与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波执行滤波,放大等处理,传送至调制解调处理器执行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其执行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯***(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(globalnavigation satellite system,GLONASS),北斗卫星导航***(beidou navigationsatellite system,BDS),准天顶卫星***(quasi-zenith satellite system,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
电子设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度执行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量执行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)、同步动态随机存储器(synchronous dynamic random access memory,SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等;
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell,TLC)、四阶储存单元(quad-level cell,QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universalflash storage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
随机存取存储器可以由处理器110直接执行读写,可以用于存储操作***或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接执行读写。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备可以设置至少一个麦克风170C。在另一些实施例中,电子设备可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备根据压力传感器180A检测所述触摸操作强度。电子设备也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备是翻盖机时,电子设备可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备在各个方向上(一般为三轴)加速度的大小。当电子设备静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备通过发光二极管向外发射红外光。电子设备使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备附近有物体。当检测到不充分的反射光时,电子设备可以确定电子设备附近没有物体。电子设备可以利用接近光传感器180G检测用户手持电子设备贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备对电池142加热,以避免低温导致电子设备异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过***SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备的接触和分离。电子设备可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时***多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备中,不能和电子设备分离。
图10为本申请实施例提供的电子设备的软件架构的一个示例性示意图。
电子设备的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android***为例,示例性说明电子设备的软件结构。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图10所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图10所示,应用程序框架层可以包括窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:浏览器引擎(webkit)、渲染引擎(如skia库)、表面合成器,硬件合成策略模块,媒体库(Media Libraries),图像处理库(例如:OpenGL ES),渲染引擎(如Skia库)等。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
图像处理库用于实现三维图形绘图,图像渲染等。
渲染引擎是2D绘图的绘图引擎。
可选地,在本申请一些实施方式中,渲染引擎提供一个或多个预置的三维动画效果,该三维动画效果通过自定义着色器实现。
内核层是硬件和软件之间的层。内核层包括显示驱动,摄像头驱动,音频驱动,传感器驱动等。
以图10所示的软件架构为例,示例性的介绍本申请实施例中界面生成方法的数据流动与软件模块交互过程。
图11A和图11B为本申请实施例提供的界面生成方法的数据流动与软件模块交互的一个示例性示意图。
如图11A所示,应用程序通过视图***中的动画模块配置动画。应用程序的通过调用渲染引擎将绘制操作保存为绘制操作结构体,然后通过图像处理库将绘制操作结构体转换为图像处理库中调用。然后,图像处理库将接口对应GPU指令下发到GPU驱动中,GPU驱动生成渲染任务,用于渲染生成位图。
上文中图11A所示的内容可以认为是第一帧界面生成过程中界面生成方法的数据流动与软件模块交互的示例性介绍。
除此之外,在图11A所示的内容中,应用程序还需要基于视图***确定动画过程中界面的描述信息;进而将动画过程中界面的描述信息传递到GPU驱动,GPU驱动对应的生成更新任务更新unifrom,例如,从GPU内存中获取unifrom并修改。
或者,应用程序还需要基于视图***确定动画过程中界面的描述信息;基于动画过程中的界面描述信息,并将更新信息传递到GPU驱动,GPU驱动对应的生成更新任务基于更新信息去更新unifrom,进而更新GPU指令。
图11B与图11A所示内容不同的是,动画模块在确定动画涉及纹理更新后,可以通过图像处理库向GPU配置纹理更新任务,动画模块或应用程序获取新的纹理后,由纹理更新任务更新GPU指令中纹理的标识,进而在GPU执行GPU指令中将更新后的纹理渲染到位图上。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (19)

1.一种界面生成方法,其特征在于,应用于电子设备,所述电子设备上安装有第一应用,所述方法包括:
在所述电子设备接收到第一操作后,所述电子设备确定第一动画过程中界面的描述信息,所述第一操作用于触发所述电子设备通过所述第一应用显示所述第一动画;
所述电子设备生成第一渲染指令,渲染指令为用于被GPU执行以生成第一界面的数据,所述第一界面为所述第一动画过程中的一帧界面;
所述电子设备基于所述动画过程中界面的描述信息更新所述第一渲染指令为第二渲染指令;
所述电子设备基于所述第二渲染指令生成所述第二界面,所述第二界面与所述第一界面不同,所述第二界面为所述第一动画过程中的一帧界面。
2.根据权利要求1所述的方法,其特征在于,所述电子设备基于所述动画过程中界面的描述信息更新所述第一渲染指令为第二渲染指令,具体包括:
所述电子设备基于所述第一动画过程中界面的描述信息确定第一参数,所述第一参数用于描述第一控件在所述第二界面中的发生变化的属性,所述第一控件为在所述第二界面中显示效果发生变化的视图;
所述电子设备基于所述第一参数更新所述第一渲染指令得到所述第二渲染指令。
3.根据权利要求2所述的方法,其特征在于,
在所述电子设备接收到第一操作前,所述方法还包括:所述电子设备显示桌面,所述桌面包括第一控件,所述第一控件对应于第一应用;
所述电子设备接收到第一操作,具体包括:所述电子设备检测到用户点击所述第一控件;
在所述电子设备接收到第一操作后,所述方法还包括:所述第一动画为所述第一应用的启动动画,在所述第一动画中,第二控件的位置和大小发生变化;
所述电子设备基于所述第一动画过程中界面的描述信息确定第一参数,具体包括:所述第一电子设备确定第一位置,所述第一参数包括所述第一位置,所述第一位置为所述第二控件在第二界面中的位置,所述第二界面为所述第一动画的非第一帧界面;
所述电子设备基于所述第一参数更新所述第一渲染指令得到所述第二渲染指令,具体包括:所述电子设备通过将所述第一渲染指令中的所述第二控件的顶点位置修改为所述第一位置得到所述第二渲染指令。
4.根据权利要求3所述的方法,其特征在于,所述电子设备通过将所述第一渲染指令中的所述第二控件的顶点位置修改为所述第一位置得到所述第二渲染指令,具体包括:
所述电子设备基于所述第一参数更新第一方法调用所使用的顶点位置为所述第一位置以得到所述第二渲染指令,所述第一方法调用为用于被GPU指令以绘制所述第二控件的方法调用。
5.根据权利要求2所述的方法,其特征在于,所述第一参数用于描述所述第一视图的颜色、顶点位置、透明度和/或缩放比例。
6.根据权利要求2所述的方法,其特征在于,所述第一参数被所述第一应用写入第一数据结构体中,所述第一数据结构体与渲染管线绑定;在所述渲染管线中,所述第一参数被所述电子设备读取以修改渲染指令。
7.根据权利要求6所述的方法,其特征在于,所述第一数据结构体为unifrom。
8.根据权利要求2-7中任一项所述的方法,其特征在于,所述方法还包括:
在所述电子设备接收到第一操作后,所述电子设备配置更新任务,所述更新任务被配置在GPU驱动中;
所述电子设备基于所述第一参数更新所述第一渲染指令得到所述第二渲染指令,具体包括:所述电子设备通过更新任务将所述第一渲染指令中的第二参数替换为所述第一参数以得到所述第二渲染指令,所述第二参数用于描述所述第一控件在所述第一界面中的属性。
9.根据权利要求2-7中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备基于所述第一动画过程中界面的描述信息确定所述第一控件在所述第一界面中的背景贴图或前景贴图与所述第一控件在所述第二界面中的背景贴图或前景贴图不同;
所述电子设备加载第一纹理,所述第一纹理为所述第一控件在所述第二界面中的背景贴图或前景贴图,所述第一参数包括所述第一纹理的标识,所述第一纹理为所述第一视图在所述第二界面中的背景贴图或前景贴图。
10.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一渲染指令和所述第二渲染指令的方法调用相同,所述第一渲染指令中的资源和所述第二渲染指令中的资源不同,所述第一渲染指令中的资源为所述第一渲染指令中的方法调用在被执行时所使用的变量或固定值,所述第二渲染指令中的资源为所述第二渲染指令中的方法调用在被执行时所使用的变量或固定值。
11.根据权利要求1-7中任一项所述的方法,其特征在于,所述电子设备接收到第一操作后,所述电子设备确定第一动画过程中界面的描述信息,具体包括:
所述电子设备接收到所述第一操作后,所述电子设备确定被触发的动画为所述第一动画;
所述电子设备确定所述第一动画涉及的视图,所述第一动画涉及的视图为在所述第一动画过程中显示内容发生变化的视图;
所述电子设备确定所述第一动画过程中一帧或多帧界面中所述第一动画涉及的视图的属性。
12.一种界面生成方法,其特征在于,应用于电子设备,所述电子设备上安装有第一应用,所述方法包括:
在所述电子设备接收到第一操作后,所述第一应用生成第一渲染树,所述第一渲染树保存有用于生成第一界面的绘制操作,所述第一界面为第一动画中的所述第一应用的第一帧界面,所述第一操作用于触发所述电子设备通过所述第一应用显示所述第一动画,在所述第一界面和第二界面中第一控件的位置发生变化,在所述第二界面中所述第一控件在第一位置,所述第二界面为所述第一动画中的非第一帧界面;
所述第一应用将所述第一渲染树转换为第一渲染指令;
所述电子设备基于所述第一渲染指令调用GPU生成所述第一界面;
所述电子设备将所述第一渲染指令中的第一参数更新为所述第一位置以得到第二渲染指令;
所述电子设备基于所述第二渲染指令调用GPU生成所述第二界面。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
在所述电子设备接收到第一操作后,所述电子设备确定所述第一动画过程中界面的描述信息,所述第一动画过程中界面的描述信息包括所述第二位置。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:在所述电子设备接收到第一操作后,所述电子设备配置更新任务,所述更新任务被配置在GPU驱动中;
所述电子设备将所述第一渲染指令中的第一参数更新为所述第一位置以得到第二渲染指令,具体包括:所述电子设备通过所述更新任务将所述第一渲染指令中的所述第一参数更新为所述第一位置以得到所述第二渲染指令。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述电子设备基于所述第一动画过程中界面的描述信息确定所述第一控件在所述第一界面中的背景贴图或前景贴图与所述第一控件在所述第二界面中的背景贴图或前景贴图不同;
所述电子设备加载第一纹理,所述第一纹理为所述第一控件在所述第二界面中的背景贴图或前景贴图,所述第一参数包括所述第一纹理的标识,所述第一纹理为所述第一视图在所述第二界面中的背景贴图或前景贴图。
16.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1至15中任一项所述的方法。
17.一种芯片***,其特征在于,所述芯片***应用于电子设备,所述芯片***包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1至15中任一项所述的方法。
18.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至15中任一项所述的方法。
19.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1至15中任一项所述的方法。
CN202211281882.4A 2022-10-19 2022-10-19 界面生成方法及电子设备 Pending CN117909000A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211281882.4A CN117909000A (zh) 2022-10-19 2022-10-19 界面生成方法及电子设备
PCT/CN2023/123558 WO2024082987A1 (zh) 2022-10-19 2023-10-09 界面生成方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211281882.4A CN117909000A (zh) 2022-10-19 2022-10-19 界面生成方法及电子设备

Publications (1)

Publication Number Publication Date
CN117909000A true CN117909000A (zh) 2024-04-19

Family

ID=90695242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211281882.4A Pending CN117909000A (zh) 2022-10-19 2022-10-19 界面生成方法及电子设备

Country Status (2)

Country Link
CN (1) CN117909000A (zh)
WO (1) WO2024082987A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8970613B2 (en) * 2012-06-06 2015-03-03 Apple Inc. Render tree caching
CN108073339B (zh) * 2016-11-16 2021-07-23 阿里巴巴集团控股有限公司 浮层展示方法、客户端和电子设备
CN107071556B (zh) * 2017-04-18 2019-12-10 腾讯科技(深圳)有限公司 一种界面渲染方法和装置
CN112199149A (zh) * 2020-10-16 2021-01-08 维沃移动通信有限公司 界面渲染方法、装置及电子设备

Also Published As

Publication number Publication date
WO2024082987A1 (zh) 2024-04-25

Similar Documents

Publication Publication Date Title
CN115473957B (zh) 一种图像处理方法和电子设备
CN113553130B (zh) 应用执行绘制操作的方法及电子设备
CN116048933B (zh) 一种流畅度检测方法
CN113132526A (zh) 一种页面绘制方法及相关装置
WO2023016014A1 (zh) 视频编辑方法和电子设备
CN116483734B (zh) 一种基于编译器的插桩方法、***及相关电子设备
WO2023066165A1 (zh) 动画效果显示方法及电子设备
CN115482143A (zh) 应用的图像数据调用方法、***、电子设备及存储介质
WO2024082987A1 (zh) 界面生成方法及电子设备
WO2024083014A1 (zh) 界面生成方法及电子设备
WO2024083009A1 (zh) 界面生成方法及电子设备
WO2024061292A1 (zh) 界面生成方法及电子设备
EP4390677A1 (en) Animation effect display method and electronic device
CN117764853B (zh) 人脸图像增强方法和电子设备
WO2024046010A1 (zh) 一种界面显示方法、设备及***
CN116795476B (zh) 一种删除壁纸的方法及电子设备
CN116688494B (zh) 生成游戏预测帧的方法和电子设备
WO2024067551A1 (zh) 界面显示方法及电子设备
WO2024149067A1 (zh) 一种图像渲染方法及电子设备
CN116166257A (zh) 界面生成方法及电子设备
CN118314260A (zh) 一种图像渲染方法及电子设备
CN117689796A (zh) 一种渲染处理方法及电子设备
CN118197200A (zh) 显示装置和显示屏驱动方法
CN117692714A (zh) 视频显示方法和电子设备
CN116991532A (zh) 一种虚拟机窗口的显示方法、电子设备及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination