CN113012022B - 一种小程序的图形处理方法、装置、电子设备及介质 - Google Patents

一种小程序的图形处理方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN113012022B
CN113012022B CN201911326903.8A CN201911326903A CN113012022B CN 113012022 B CN113012022 B CN 113012022B CN 201911326903 A CN201911326903 A CN 201911326903A CN 113012022 B CN113012022 B CN 113012022B
Authority
CN
China
Prior art keywords
graph
graphics
cache space
graphic
capacity
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.)
Active
Application number
CN201911326903.8A
Other languages
English (en)
Other versions
CN113012022A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911326903.8A priority Critical patent/CN113012022B/zh
Publication of CN113012022A publication Critical patent/CN113012022A/zh
Application granted granted Critical
Publication of CN113012022B publication Critical patent/CN113012022B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种小程序的图形处理方法、装置、电子设备及介质。所述方法包括:获取由小程序创建的图形对象;渲染所述图形对象得到目标图形;获取容量阈值以及图形缓存空间的当前容量;当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。本发明提供了由主程序对应的平台对图形进行管理的方案,能够提高图形处理的时效性以及为程序提供更好的运行环境。可以准确、及时的触发图形离线时机,能够有效降低小程序的内存占用值、提高小程序的运行稳定性。

Description

一种小程序的图形处理方法、装置、电子设备及介质
技术领域
本发明涉及互联网通信技术领域,尤其涉及一种小程序的图形处理方法、装置、电子设备及介质。
背景技术
随着互联网通信技术的迅猛发展,小程序应运而生。小程序是一种不需要下载安装即可使用的应用程序,小程序以主程序为载体,寄生于主程序的运行环境而为用户提供服务。小程序提供的图形对象,可以在主程序的运行环境中被渲染为对应的图形,进而得以显示。
现有技术中,对于经渲染得到的图形,往往仅由小程序的开发者来进行管理,比如对过期图形进行垃圾回收(GC,Garbage Collection)处理。然而,GC处理是存在延时的,这并不会缓解内存占用情况。同时,GC处理常采用标记清除法,若将图形挂载于全局作用域下便可规避掉在GC处理中被回收的可能性。因此,需要提供对过期图形更有效的管理方案。
发明内容
为了解决现有技术应用在对过期图形进行处理时,及时性差、回收存在遗漏等问题,本发明提供了一种小程序的图形处理方法、装置、电子设备及介质:
一方面,本发明提供了一种小程序的图形处理方法,所述方法包括:
获取由小程序创建的图形对象;
渲染所述图形对象得到目标图形;
获取容量阈值以及图形缓存空间的当前容量;
当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。
另一方面提供了一种小程序的图形处理装置,所述装置包括:
图形对象获取模块:用于获取图形对象,所述图形对象是由小程序创建的;
渲染模块:用于渲染所述图形对象得到目标图形;
容量获取模块:用于获取容量阈值以及图形缓存空间的当前容量;
第一存储模块:用于当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
第二存储模块:用于当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,以及对所述离线图形进行离线处理、将所述目标图形加入所述图形缓存空间。
另一方面提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的小程序的图形处理方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的小程序的图形处理方法。
本发明提供的一种小程序的图形处理方法、装置、电子设备及介质,具有如下技术效果:
本发明提供了由主程序对应的平台对渲染得到的图形进行管理的方案。对于当前得到的图形,根据图形缓存空间的当前容量与容量阈值的比较结果来确定将其加入图形缓存空间的具体方式,能够提高图形处理的时效性以及为程序提供更好的运行环境。当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。可以准确、及时的触发“确定出离线图形”以及“对所述离线图形进行离线处理”时机,能够有效降低小程序的内存占用值以及提高小程序的运行稳定性。由于不依赖于GC处理,可以避免回收存在遗漏的情形出现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种应用环境的示意图;
图2是本发明实施例提供的一种小程序的图形处理方法的流程示意图;
图3是本发明实施例提供的从所述图形缓存空间中确定出离线图形的一种流程示意图;
图4是本发明实施例提供的对图形缓存空间最大容量进行扩容处理的一种流程示意图;
图5也是本发明实施例提供的一种小程序的图形处理方法的流程示意图;
图6是本发明实施例提供的同一小程序在不同平台运行所对应的内存占用值对比图;
图7是本发明实施例提供的同一小程序在不同最大容量的情况下帧率和内存占用值对比图;
图8是本发明实施例提供的一种小程序的图形处理装置的组成框图;
图9是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本发明实施例提供的一种应用环境的示意图,可以包括客户端01和服务器02,客户端与服务器通过网络连接。需要说明的是,图1仅仅是一种示例。
具体的,客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、数字助理、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,比如主程序和以主程序为载体的小程序。客户端01上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows等。
其中,小程序是一种基于特定编程语言开发完成的应用程序,它无需下载和安装就可以使用。小程序的最大特点是使用便捷:用户扫一扫或者搜一下即可打开使用,无需手动在客户端的操作系统中安装,从而用户不用关心是否安装太多应用程序的问题。在实际应用中,小程序可以为社交类应用、具备娱乐功能的应用(如视频应用、音频应用、游戏应用和阅读软件)以及具备服务功能的应用(如地图导航应用、团购应用)。
具体的,所述服务器02可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。服务器02可以包括有网络通信单元、处理器和存储器等等。所述服务器02可以为上述客户端提供后台服务。
以下介绍本发明一种小程序的图形处理方法的具体实施例,图2是本发明实施例提供的一种小程序的图形处理方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。本发明实施例提供的小程序的图形处理方法可以由主程序对应的客户端独立执行,可以由主程序对应的服务器独立执行,也可以由主程序对应的客户端与主程序对应的服务器进行交互以执行。具体的如图2所示,所述方法可以包括:
S201:获取由小程序创建的图形对象;
在本发明实施例中,主程序对应的平台(可以包括客户端侧和服务器侧,以下称作主程序平台)获取由小程序创建的图形对象,所述图形对象可以对应点、线、面、体、场等形状。具体的,所述图形对象可以为纹理对象。
纹理对象可以看作渲染得到纹理的数据源。纹理既包括通常意义上物体表面的纹理(即使物体表面呈现凹凸不平的沟纹),同时也包括在物体的光滑表面上的彩色图案。在实际应用中,小程序的开发者在创建纹理对象时,可以采用创建图像对象(Image)来得到、创建离屏渲染上下文(Context)来得到、创建离屏绘图画布(Canvas)来得到或者调用gl.createTexture()(WebGL提供的接口函数;WebGL:Web Graphics Library,是一种3D绘图协议)来得到。其中,小程序的开发者可以调用主程序平台提供“创建图像对象”、“创建离屏渲染上下文”、“创建离屏绘图画布”、“调用gl.createTexture()”的API(ApplicationProgramming Interface,应用程序接口)来进行纹理对象创建。
S202:渲染所述图形对象得到目标图形;
在本发明实施例中,主程序平台渲染所述图形对象得到目标图形。可以利用图形引擎将所述图形对象发送至图形处理单元,以使得所述图形处理单元渲染所述图形对象得到目标图形。所述图形对象可以为纹理对象。相应的,所述目标图形为目标纹理。
所述图像引擎可以为WebGL渲染引擎,进一步的,可以是OpenGL(开放图形库)渲染引擎。其中,OpenGL定义了一个跨编程语言、跨平台的编程接口规格的专业图形程序接口。所述图形处理单元可以为GPU(Graphics Processing Unit,图形处理器)。
渲染得到的目标图形可以通过图形设备接口显示在终端设备的屏幕上或是其他显示部件上。渲染得到的目标图形也可以通过硬件驱动程序直接与显示部件通信,进而进行显示。
S203:获取容量阈值以及图形缓存空间的当前容量;
在本发明实施例中,对于前述步骤得到的目标图形需要进行存储,可以存储于图形缓存空间中,所述图形缓存空间可以位于所述图形处理单元。可以在小程序启动的时候,比如在用户基于扫一扫或者搜一下打开进入小程序提供的用户界面的时候,由主程序平台设置图形缓存空间的存储对象为近期使用次数较多的图形以及新渲染得到的图形,以及设置该图形缓存空间的最大容量。
所述容量阈值可以为所述最大容量(比如100MB;MB,兆字节),也可以小于所述最大容量(比如90MB)。可以利用图形引擎获取所述图形缓存空间的当前容量。
在一个具体的实施例中,所述获取容量阈值以及图形缓存空间的当前容量,之后还包括:可以由主程序平台先获取所述目标图形的数据量;然后根据所述当前容量和所述目标图形的数据量得到预期容量;再比较所述预期容量和所述容量阈值。比如,容量阈值为100MB,当前容量为98MB,目标图形的数据量为1MB。那么预期容量为99MB,进而比较预期容量99MB与容量阈值100MB。在将目标图形的数据量引入进行容量比较的一方,可以增加后续基于容量比较结果来确定将其加入图形缓存空间的具体方式中具体操作的实用性和有效性。
S204:当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
在本发明实施例中,当前容量小于容量阈值,也就是说,图形缓存空间中存储的图形数量还没有达到上限,图形缓存空间还有存储新渲染得到的图形的富余空间。当然,也可以进一步比较当前容量与容量阈值之间的差值是否大于差值阈值,当所述差值大于所述差值阈值时,将所述目标图形加入所述图形缓存空间。所述差值阈值可以看作一个修正参数,基于该修正参数能够进一步保证加入目标图形之后的图形缓存空间的容量不超过其最大容量。比如,容量阈值为100MB,当前容量为98MB,当前容量98MB小于容量阈值100MB。进一步的,比如差值阈值为1MB,当前容量与容量阈值之间的差值2MB大于差值阈值1MB,那么主程序平台可以将所述目标图形加入所述图形缓存空间。
主程序平台可以利用图形引擎将所述目标图形加入所述图形缓存空间,可以将目标图形加入至所述图形缓存空间的头部。所述图形缓存空间中可以按图形的最近使用时间进行顺序存放,比如将距离当前加入时间点最近的最近使用时间对应图形放入头部,相应的,将距离当前加入时间点最远的最近使用时间对应图形放入尾部。
在一个具体的实施例中,相应于步骤S203中引入目标图形的数据量得到预期容量的相关记载,所述当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间,包括:当所述预期容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间。比如,容量阈值为100MB,预期容量为99MB(当前容量98MB+目标图形的数据量1MB),预期容量99MB小于容量阈值100MB,那么主程序平台可以将所述目标图形加入所述图形缓存空间。
S205:当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。
在本发明实施例中,当前容量大于等于容量阈值,也就是说,图形缓存空间中存储的图形数量接近、达到甚至超出上限,图形缓存空间没有存储新渲染得到的图形的富余空间。
当然,也可以在得到当前容量小于容量阈值的结果之后,增加比较当前容量与容量阈值之间的差值是否小于等于差值阈值的步骤。当所述差值小于等于所述差值阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。所述差值阈值可以看作一个修正参数,基于该修正参数能够进一步保证加入目标图形之后的图形缓存空间的容量不超过其最大容量。比如,容量阈值为100MB,差值阈值为3MB,当前容量为98MB。虽然当前容量98MB小于容量阈值100MB,但是当前容量与容量阈值之间的差值2MB小于差值阈值3MB,那么主程序平台可以从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。
主程序平台可以利用图形引擎从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。可以将目标图形加入至所述图形缓存空间的头部。所述图形缓存空间中可以按图形的最近使用时间进行顺序存放,比如将距离当前加入时间点最近的最近使用时间对应图形放入头部,相应的,将距离当前加入时间点最远的最近使用时间对应图形放入尾部,这样可以位于尾部的图形作为离线图形。
在一个具体的实施例中,对于从所述图形缓存空间中确定出离线图形,可以结合其中图形的使用情况,尤其近期使用情况。如图3所示,所述从所述图形缓存空间中确定出离线图形,包括:
S301:获取次数阈值以及第一参考时间段;
比如,次数阈值为5,第一参考时间段为1分钟。当然,次数阈值和第一参考时间段可以根据需要灵活设置。
S302:确定在当前时间点之前的所述第一参考时间段内所述图形缓存空间中图形的使用次数;
对于图形缓存空间中图形:图形1、图形2、图形3、图形4和图形5。在上1分钟内:图形1的使用次数为2,图形2的使用次数为10,图形3的使用次数为6,图形4的使用次数为7以及图形5的使用次数为6。
S303:将使用次数小于所述次数阈值的图形作为所述离线图形。
那么,图形1的使用次数为2小于次数阈值,将图形1作为离线图形。
进一步的,可以采用LRU(Least Recently Used,最近最少使用)策略来进行离线图形的选择。这样不用再设置次数阈值。基于在当前时间点之前的所述第一参考时间段内所述图形缓存空间中图形的使用次数,选择其中最少使用次数对应的图形作为离线图形。
另外,从所述图形缓存空间中确定出的离线图形的数量可以不局限于1。对于结合次数阈值和第一参考时间段的方式,若上述图形5的使用次数为4(小于次数阈值),可以将图形1和图形5都作为离线图形。对于采用LRU策略的方式,可以基于使用次数进行降序排列得到排序结果,将在所述排序结果中的位置在预设参考位置之后的使用次数对应的图形作为离线图形。此外,还可以结合已确定出的离线图形的数据量和目标图形的数据量,来决定是否继续确定离线图形。需要保证离线图形的数据量大于等于目标图形的数据量。
在另一个具体的实施例中,由于在小程序启动的时候,主程序平台为图形缓存空间设置了最大容量。如果这个最大容量设置得过大,那么几乎就不用进行“确定出离线图形”以及“对所述离线图形进行离线处理”的步骤。如果这个最大容量设置得过小,那么可能出现某一图形刚被离线处理,一会儿又需要恢复在线。离线处理的过程和恢复在线的过程都是文件读写过程,这比从内存中读写要慢得多,这也就导致CPU(central processingunit,中央处理器)占用率过高、显示帧率(fps)下降。因而,可以在小程序运行过程中,适应性的对图形缓存空间最大容量进行扩容处理。
如图4所示,所述从所述图形缓存空间中确定出离线图形,之前包括:
S401:获取数量阈值以及第二参考时间段;
比如,数量阈值为10,第二参考时间段为1秒。当然,数量阈值和第二参考时间段可以根据需要灵活设置。
S402:确定在当前时间点之前的所述第二参考时间内所述图形缓存空间中进行离线处理的图形的数量;
这里确定得到的数量,对应上1秒内经步骤S401、S402、S404确定不对图形缓存空间最大容量进行扩容处理,触发所述从所述图形缓存空间中确定出离线图形之后实际进行离线处理的图形的数量。
S403:当所述数量大于所述数量阈值时,对所述图形缓存空间的最大容量进行扩充;
若该数量为20(大于数量阈值10),那么对所述图形缓存空间的最大容量进行扩充。这样可以有效减少每秒中进行图形离线处理的图形的次数,降低CPU占用率,减少对显示帧率的影响。相应的,所述对所述图形缓存空间的最大容量进行扩充,之后包括:将所述目标图形加入所述图形缓存空间。
其中,每次可以基于固定容量对所述图形缓存空间的最大容量进行扩充。该固定容量可以以10个图形的数据量作参考而得到。
S404:当所述数量小于等于所述数量阈值时,触发所述从所述图形缓存空间中确定出离线图形的步骤;
若该数量为5(小于数量阈值10),那么触发所述从所述图形缓存空间中确定出离线图形的步骤。
在小程序运行过程中,根据当前设备的运行状态对图形缓存空间最大容量进行扩容处理,兼顾内存占用情况和小程序性能两方面间的平衡。
在另一个具体的实施例中,所述对所述离线图形进行离线处理,包括:将所述离线图形对应的图形对象存储于存储单元中;从所述图形缓存空间中删除所述离线图形。
可以利用图形引擎先将所述离线图形对应的图形对象异步写入磁盘,再静默删除所述离线图形。一方面,在图形处理单元删除了离线图形,使得无用的图形得以释放,大大降低内存占用值。一方面,磁盘中保留有所述离线图形对应的图形对象,可以保存磁盘中对应的存放路径。这样在使用该离线图形时,可以快速将其恢复在线甚至无缝恢复,小程序的开发者和使用者对离线处理以及恢复在线无感知。在实际应用中,主程序平台执行小程序的图形处理方法时,不需要小程序的开发者对小程序进行修改,这样帮助小程序的开发者进行内存管理的通用性更强。
在另一个具体的实施例中,相应于步骤S203中引入目标图形的数据量得到预期容量的相关记载,所述当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间,包括:
当所述预期容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。比如,容量阈值为100MB,预期容量为101MB(当前容量98MB+目标图形的数据量3MB),预期容量101MB大于容量阈值100MB,那么主程序平台可以从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。
当然,对于经渲染得到的图形,小程序的开发者可以进行垃圾回收(GC,GarbageCollection)处理,也可以调用gl.deleteTexture()(WebGL提供的接口函数)来回收。对于由小程序的开发者已回收的图形,主程序平台可进行已删除标注,后续不再主动进行恢复。
如图5所示,所述图形对象携带有图形标识,相应的,所述目标图形携带有所述图形标识,所述方法还包括:
S206:接收携带有当前活动对象和目标图形标识的图形使用请求;
S207:根据所述目标图形标识查询对应图形的当前状态;
S208:当所述当前状态指示所述对应图形存储于所述图形缓存空间时,绑定所述当前活动对象和所述目标图形标识;
S209:当所述当前状态指示所述对应图形未存储于所述图形缓存空间时,在所述存储单元中确定出所述目标图形标识对应的目标图形对象;将所述目标图像对象发送至所述图形处理单元,以使得所述图形处理单元渲染所述目标图形对象得到所述对应图形;以及绑定所述当前活动对象和所述目标图形标识。
在前述步骤S201-S205中,对于由小程序创建的图像对象,主程序平台渲染其得到图形并对该图形作在线状态(对应存储于所述图形缓存空间)和离线状态(对应存储于所述存储单元)的对应处理。相应的,在需要使用某图形时,由主程序平台根据所述图形使用请求中携带的目标图形标识查询对应图形的当前状态。
所述图形使用请求中携带的当前活动对象可以作为当前需要绑定所述对应图形(对应目标图形标识)的目标。所述图形使用请求可以由小程序的使用者触发,也可以由小程序的开发者触发。比如,小程序的开发者可以调用主程序平台提供“调用gl.bindTexture(一种纹理绑定函数)”、“调用bindTexture(一种纹理绑定函数)”的API来进行触发图形使用请求。
当所述当前状态指示所述对应图形存储于所述图形缓存空间时,可以使用所述对应图形,以及绑定所述当前活动对象和所述目标图形标识。
当所述当前状态指示所述对应图形未存储于所述图形缓存空间时,需要先将所述对应图形恢复在线,再绑定所述当前活动对象和所述目标图形标识。所述对应图形恢复在线的过程包括:在所述存储单元中确定出所述目标图形标识对应的目标图形对象;将所述目标图像对象发送至所述图形处理单元,以使得所述图形处理单元渲染所述目标图形对象得到所述对应图形。这里可以将所述对应图形加入所述图形缓存空间。需要说明的是,为了保证涉及的相关接口函数调用指令执行顺序的正确性,图形恢复上线的步骤必须同步。
在绑定所述当前活动对象和所述目标图形标识之后,可以将所述对应图形绘制于终端设备的屏幕上。这里可以在绑定完成后通知小程序的开发者来进行后续绘制操作。
在实际应用中,对于小程序中属于同一类别的多个小游戏,分别在平台A和平台B运行。其中,平台A在这些小游戏启动后便执行本发明提供的小程序的图形处理方法;平台B在这些小游戏启动后并不执行本发明提供的小程序的图形处理方法(对应现有技术)。游戏的复杂度、使用纹理的数量:小游戏4>小游戏3>小游戏2>小游戏1。
可参见图6,图6示出了这些小游戏分别在平台A和平台B运行所对应的内存占用值(单位:MB)。可以看出平台A对应的内存占用值更低。
其中,图6的实验环境:
手机型号:iPhone 7
手机系统:iOS 12.3
平台A对应的主程序版本:8.1.3
平台B对应的主程序版本:7.0.5
测量时间:启动游戏后3分钟,处于同一场景
从图6的数据可知,本发明所提出的小程序的图形处理方法能有效降低游戏内存占用值。而且对于越复杂、使用纹理越多的游戏,效果更明显。
另外,为了对比具有不同最大容量的图形缓存空间对帧率和内存占用值的影响,可参见图7,图7示出了平台是否执行小程序的图形处理方法(对应不开启图形缓存空间)以及执行时图形缓存空间开启的最大容量(单位:MB)的不同情况下,同一款小游戏帧率(单位:fps)和内存增量(单位:MB)。其中,内存增量表示启动小游戏之后和启动小游戏之前对应的内存占用值变化。
从图7的数据可知两点:第一,执行小程序的图形处理方法能显著降低内存占用值,这一点和图7数据吻合。第二,图形缓存空间的最大容量越小,对内存的减少越多,但对帧率的影响也越大;而随着最大容量逐渐扩大,每秒需要进行离线处理的次数越少,被离线的纹理也越少,内存和帧率逐渐趋于平稳,说明本发明所提出的缓存扩容机制也是有效的。
由以上本说明书实施例提供的技术方案可见,本说明书实施例提供了由主程序对应的平台对渲染得到的图形进行管理的方案。对于当前得到的图形,根据图形缓存空间的当前容量与容量阈值的比较结果来确定将其加入图形缓存空间的具体方式,能够提高图形处理的时效性以及为程序提供更好的运行环境。当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。可以准确、及时的触发“确定出离线图形”以及“对所述离线图形进行离线处理”时机,能够有效降低小程序的内存占用以及提高小程序的运行稳定性。由于不依赖于GC处理,可以避免回收存在遗漏的情形出现。这也为主程序平台支持多个小程序同时运行提供了强有力的基础。
本发明实施例还提供了一种小程序的图形处理装置,如图8所示,所述装置包括:
图形对象获取模块810:用于获取图形对象,所述图形对象是由小程序创建的;
渲染模块820:用于渲染所述图形对象得到目标图形;
容量获取模块830:用于获取容量阈值以及图形缓存空间的当前容量;
第一存储模块840:用于当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
第二存储模块850:用于当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,以及对所述离线图形进行离线处理、将所述目标图形加入所述图形缓存空间。
需要说明的,所述装置实施例中的装置与方法实施例基于同样的发明构思。
本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的小程序的图形处理方法。
进一步地,图9示出了一种用于实现本发明实施例所提供的小程序的图形处理方法的电子设备的硬件结构示意图,所述电子设备可以参与构成或包含本发明实施例所提供的小程序的图形处理装置。如图9所示,电子设备90可以包括一个或多个(图中采用902a、902b,……,902n来示出)处理器902(处理器902可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器904、以及用于通信功能的传输装置906。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备90还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。
应当注意到的是上述一个或多个处理器902和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到电子设备90(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器904可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的方法对应的程序指令/数据存储装置,处理器902通过运行存储在存储器94内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种小程序的图形处理方法。存储器904可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器904可进一步包括相对于处理器902远程设置的存储器,这些远程存储器可以通过网络连接至电子设备90。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备90的通信供应商提供的无线网络。在一个实例中,传输装置906包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实施例中,传输装置906可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与电子设备90(或移动设备)的用户界面进行交互。
本发明的实施例还提供了一种存储介质,所述存储介质可设置于电子设备之中以保存用于实现方法实施例中一种小程序的图形处理方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的小程序的图形处理方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种小程序的图形处理方法,其特征在于,所述方法包括:
获取由小程序创建的图形对象;
渲染所述图形对象得到目标图形;
获取容量阈值以及图形缓存空间的当前容量;
当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间;
其中,所述从所述图形缓存空间中确定出离线图形,之前包括:获取数量阈值以及第二参考时间段;确定在当前时间点之前的所述第二参考时间内所述图形缓存空间中进行离线处理的图形的数量;当所述数量大于所述数量阈值时,对所述图形缓存空间的最大容量进行扩充;当所述数量小于等于所述数量阈值时,触发所述从所述图形缓存空间中确定出离线图形的步骤;相应的,所述对所述图形缓存空间的最大容量进行扩充,之后包括:将所述目标图形加入所述图形缓存空间。
2.根据权利要求1所述的方法,其特征在于,所述从所述图形缓存空间中确定出离线图形,包括:
获取次数阈值以及第一参考时间段;
确定在当前时间点之前的所述第一参考时间段内所述图形缓存空间中图形的使用次数;
将使用次数小于所述次数阈值的图形作为所述离线图形。
3.根据权利要求1所述的方法,其特征在于,所述对所述离线图形进行离线处理,包括:
将所述离线图形对应的图形对象存储于存储单元中;
从所述图形缓存空间中删除所述离线图形。
4.根据权利要求3所述的方法,其特征在于,所述图形对象携带有图形标识,相应的,所述目标图形携带有所述图形标识,所述方法还包括:
接收携带有当前活动对象和目标图形标识的图形使用请求;
根据所述目标图形标识查询对应图形的当前状态;
当所述当前状态指示所述对应图形存储于所述图形缓存空间时,绑定所述当前活动对象和所述目标图形标识;
当所述当前状态指示所述对应图形未存储于所述图形缓存空间时,在所述存储单元中确定出所述目标图形标识对应的目标图形对象;将所述目标图形对象发送至图形处理单元,以使得所述图形处理单元渲染所述目标图形对象得到所述对应图形;以及绑定所述当前活动对象和所述目标图形标识。
5.根据权利要求4所述的方法,所述绑定所述当前活动对象和所述目标图形标识,之前包括:
将所述对应图形加入所述图形缓存空间。
6.根据权利要求1所述的方法,其特征在于:
所述获取容量阈值以及图形缓存空间的当前容量,之后还包括:
获取所述目标图形的数据量;
根据所述当前容量和所述目标图形的数据量得到预期容量;
比较所述预期容量和所述容量阈值;
相应的,所述当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间,包括:
当所述预期容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
所述当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间,包括:
当所述预期容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,对所述离线图形进行离线处理以及将所述目标图形加入所述图形缓存空间。
7.一种小程序的图形处理装置,其特征在于,所述装置包括:
图形对象获取模块:用于获取图形对象,所述图形对象是由小程序创建的;
渲染模块:用于渲染所述图形对象得到目标图形;
容量获取模块:用于获取容量阈值以及图形缓存空间的当前容量;
第一存储模块:用于当所述当前容量小于所述容量阈值时,将所述目标图形加入所述图形缓存空间;
第二存储模块:用于当所述当前容量大于等于所述容量阈值时,从所述图形缓存空间中确定出离线图形,以及对所述离线图形进行离线处理、将所述目标图形加入所述图形缓存空间;
其中,所述从所述图形缓存空间中确定出离线图形,之前包括:获取数量阈值以及第二参考时间段;确定在当前时间点之前的所述第二参考时间内所述图形缓存空间中进行离线处理的图形的数量;当所述数量大于所述数量阈值时,对所述图形缓存空间的最大容量进行扩充;当所述数量小于等于所述数量阈值时,触发所述从所述图形缓存空间中确定出离线图形的步骤;相应的,所述对所述图形缓存空间的最大容量进行扩充,之后包括:将所述目标图形加入所述图形缓存空间。
8.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1-6任一所述的小程序的图形处理方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-6任一所述的小程序的图形处理方法。
CN201911326903.8A 2019-12-20 2019-12-20 一种小程序的图形处理方法、装置、电子设备及介质 Active CN113012022B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911326903.8A CN113012022B (zh) 2019-12-20 2019-12-20 一种小程序的图形处理方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911326903.8A CN113012022B (zh) 2019-12-20 2019-12-20 一种小程序的图形处理方法、装置、电子设备及介质

Publications (2)

Publication Number Publication Date
CN113012022A CN113012022A (zh) 2021-06-22
CN113012022B true CN113012022B (zh) 2023-10-13

Family

ID=76381715

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911326903.8A Active CN113012022B (zh) 2019-12-20 2019-12-20 一种小程序的图形处理方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN113012022B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101789908A (zh) * 2010-03-04 2010-07-28 成都市华为赛门铁克科技有限公司 分片报文接收处理方法及装置
JP2012161269A (ja) * 2011-02-04 2012-08-30 Univ Of Tokushima 虫の画像処理装置、画像処理方法、画像処理プログラム及びコンピュータで読み取り可能な記憶媒体
CN103984781A (zh) * 2014-06-11 2014-08-13 北京金山网络科技有限公司 一种网页加载方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421540B2 (en) * 2005-05-03 2008-09-02 International Business Machines Corporation Method, apparatus, and program to efficiently calculate cache prefetching patterns for loops
US9986060B2 (en) * 2015-03-30 2018-05-29 General Electric Company Persistent caching of map imagery and data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101789908A (zh) * 2010-03-04 2010-07-28 成都市华为赛门铁克科技有限公司 分片报文接收处理方法及装置
JP2012161269A (ja) * 2011-02-04 2012-08-30 Univ Of Tokushima 虫の画像処理装置、画像処理方法、画像処理プログラム及びコンピュータで読み取り可能な記憶媒体
CN103984781A (zh) * 2014-06-11 2014-08-13 北京金山网络科技有限公司 一种网页加载方法及装置

Also Published As

Publication number Publication date
CN113012022A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN110222288B (zh) 页面展示方法、装置及存储介质
CN113318447B (zh) 游戏场景的处理方法、装置、存储介质及电子设备
CN113398595B (zh) 场景资源的更新方法及装置、存储介质、电子装置
CN111389014A (zh) 游戏资源数据监控方法、装置、计算机设备和存储介质
CN103678892A (zh) 一种角色对象管理的方法和装置
CN112631689A (zh) 一种应用程序加载的方法、装置以及计算机存储介质
CN110928397B (zh) 用户界面刷新方法、装置、存储介质及电子装置
CN111258680A (zh) 资源加载方法和装置、存储介质及电子装置
CN113946403A (zh) 数据展示方法、装置、存储介质及电子设备
CN111617473A (zh) 虚拟攻击道具的显示方法和装置、存储介质和电子设备
CN110652728A (zh) 一种游戏资源管理方法、装置、电子设备及存储介质
CN110851327A (zh) 硬件状态信息获取方法、装置、终端及可读存储介质
CN107885543B (zh) 一种应用程序的功能管理方法、装置和智能终端
CN110286981A (zh) 虚拟云桌面服务器的使用状态的显示方法及显示系统
CN110321321A (zh) 网络块设备快照读写方法、装置、设备及存储介质
CN117724852A (zh) 一种云电脑计算资源分配方法及装置
WO2024060949A1 (zh) 用于增强现实的方法、装置、设备和存储介质
CN112131240A (zh) 脏数据的处理方法和装置、存储介质及电子设备
CN113012022B (zh) 一种小程序的图形处理方法、装置、电子设备及介质
CN111726386A (zh) 一种应用程序分享方法及可穿戴设备、计算机存储介质
CN111773679B (zh) 游戏中图标的处理方法及装置
CN108986042A (zh) 贴纸共享方法及装置
CN112148287B (zh) 一种表格动态显示方法、装置以及电子设备
CN111880896B (zh) 一种快速还原容器及运行状态数据的方法和装置
CN112291584A (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
GR01 Patent grant
GR01 Patent grant