图形接口的调用方法、装置、设备及可读存储介质与流程

文档序号:28262771发布日期:2021-12-31 16:52阅读:135来源:国知局
图形接口的调用方法、装置、设备及可读存储介质与流程

1.本技术实施例涉及程序设计领域,特别涉及一种图形接口的调用方法、装置、设备及可读存储介质。


背景技术:

2.webassembly是一种高性能的在web上执行的类汇编语言,具有紧凑的二进制格式,能够以接近原生语言的性能运行,并为诸如c/c++等语言提供编译目标,也即,在通过c/c++等语言编写程序后,将程序通过编译器编译成webassembly语言后运行,webassembly语言通常与javascript协同应用于浏览器或小程序中。
3.相关技术中,webassembly语言可以应用在纯逻辑运算方面,也可以运用在绘图、音频、网络等调用的过程中,其中,在webassembly语言运用在绘图、音频、网络等调用的过程中时,需要通过javascript语言编写的胶水代码来调用对应的webapi实现,也即,在webassembly程序执行时,opengl图形接口需要转换成webgl接口调用,因此需要一层javascript语言编写的程序作为衔接。
4.然而,在上述绘图、音频、网络等调用的过程中,需要通过胶水代码调用相应的webapi实现,调用开销和数据传输开销都较大,调用过程的整体实现性能和运行速度较差。


技术实现要素:

5.本技术实施例提供了一种图形接口的调用方法、装置、设备及可读存储介质,可以提高图形接口调用过程中的性能和运行速度。所述技术方案如下:
6.一方面,提供了一种图形接口的调用方法,所述方法包括:
7.运行目标应用程序,所述目标应用程序中包括webassembly虚拟机和第一程序代码,所述webassembly虚拟机用于运行所述目标应用程序中的第二程序代码,所述第二程序代码由所述第一程序代码以webassembly编码方式编译得到;
8.在所述第二程序代码的运行过程中接收图形接口调用信号,所述图形接口调用信号用于指示对图形接口函数进行调用,所述图形接口函数为所述第二程序代码中的函数,且所述图形接口函数由所述第一程序代码中的原生图形接口函数编译得到;
9.响应于所述图形接口调用信号,通过所述webassembly虚拟机将所述图形接口函数转调至所述原生图形接口函数。
10.另一方面,提供了一种图形接口的调用装置,所述装置包括:
11.运行模块,用于运行目标应用程序,所述目标应用程序中包括webassembly虚拟机和第一程序代码,所述webassembly虚拟机用于运行所述目标应用程序中的第二程序代码,所述第二程序代码由所述第一程序代码以webassembly编码方式编译得到;
12.接收模块,用于在所述第二程序代码的运行过程中接收图形接口调用信号,所述图形接口调用信号用于指示对图形接口函数进行调用,所述图形接口函数为所述第二程序代码中的函数,且所述图形接口函数由所述第一程序代码中的原生图形接口函数编译得
到;
13.调用模块,用于响应于所述图形接口调用信号,通过所述webassembly虚拟机将所述图形接口函数转调至所述原生图形接口函数。
14.另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本技术实施例中任一所述的图形接口的调用方法。
15.另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本技术实施例中任一所述的图形接口的调用方法。
16.另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的图形接口的调用方法。
17.本技术实施例提供的技术方案带来的有益效果至少包括:
18.通过webassembly虚拟机将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率,从而提高了绘图、音频、网络等调用逻辑的运行速度,提高了浏览器或小程序的整体运行速度。
附图说明
19.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本技术一个示例性的实施例提供的相关技术中通过胶水代码转调图形接口函数的过程示意图;
21.图2是本技术一个示例性实施例提供的直接转调原生图形接口函数的过程示意图;
22.图3是本技术一个示例性实施例提供的实施环境示意图;
23.图4是本技术一个示例性实施例提供的图形接口的调用方法的流程图;
24.图5是基于图4示出的实施例提供的在赛车游戏中将原生代码编写的程序编译为wasm文件在webassembly虚拟机中运行的示意图;
25.图6是本技术另一个示例性实施例提供的图形接口的调用方法的流程图;
26.图7是本技术另一个示例性实施例提供的图形接口的调用方法流程图;
27.图8是基于图7示出的实施例提供的由webassembly虚拟机将wasm文件中的图形接口直接转调至原生图形接口的示意图;
28.图9是本技术一个示例性实施例提供的图形接口的调用装置的结构框图;
29.图10是本技术另一个示例性实施例提供的图形接口的调用装置的结构框图;
30.图11是本技术一个示例性的实施例提供的终端的结构框图。
具体实施方式
31.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
32.首先,针对本技术实施例中涉及的名词进行简单介绍:
33.webassembly:是一种低级的汇编语言,是一种小体积高加载速度的二进制编码格式。webassembly模块通常与javascript协同使用,为诸如c、c++和rust等低级源语言提供一个高效的编译目标。可选地,webassembly和javascript通常运行在同一个虚拟机中,由虚拟机对两种语言进行配合加载。
34.计算机由各种电子元件组成,为了便于表示,只存在开和闭两个状态,对应二进制即为0和1,数字和逻辑都由二进制表示,也就是直接装载到计算机中运行的机器码,机器码的可读性极差,故开发人员在程序开发时,通过高级编程语言编写程序后,由机器编译成机器码后运行。由于webassembly与机器码相似度较高,可以被快速翻译为对应架构的机器码,因此,webassembly的运行速度与机器码较为接近。
35.示意性的,webassembly的优点包括如下中的至少一种:
36.1、体积小,浏览器或小程序在运行时仅需要加载编译成的字节码,同样的逻辑比字符串描述的javascript文件体积小;
37.2、加载快,由于文件体积小,且加载过程中无需解释运行,webassembly能够更快的加载实例化,减少运行等待时长;
38.3、兼容性问题少,由于webassembly是底层的字节码规范,制定完毕后改动较少。
39.图形接口:也即opengl接口,在通过webassembly调用opengl接口时,通产转换为webgl接口进行调用。
40.胶水代码:是指在执行webassembly代码时,当需要对opengl图形接口进行调用时,通过javascript编写的用于转换为对webgl接口进行调用的代码,胶水代码作为沟通桥梁,衔接opengl接口与webgl接口。
41.可选地,webassembly作为一种二进制的编码格式,对于内部的函数可以声明为从外部导入,也可以声明为导出到外部,在开发者的代码中调用opengl图形接口,并在编译成wasm文件(也即webassembly编码格式的文件)时,opengl函数会被声明为从外部导入的函数。示意性的,开发者代码中调用gldrawelements接口,在编译生成wasm文件后,通过反编译工具编译成wat格式,其中,gldrawelements被声明为import类型函数,也即从外部导入的函数,函数在wasm里没有具体的实现,具体实现需要从外部进行导入。
42.以上述gldrawelements接口为例进行说明,相关技术中,会将函数的实现写在中间的javascript胶水代码中,当webassembly执行到gldrawelements接口函数时,会转调到胶水代码中的gldrawelements函数,再转调到webgl的drawelements方法,而webgl的drawelements方法,底层的实现回到了opengl的gldrawelements方法。示意性的,整个调用链路请参考图1,如图1所示,首先,在编译生成的wasm文件中执行opengl函数110,该函数被声明为从外部导入的函数,故转调到javascript编写的胶水代码中实现webgl方法120,最
后转调到原生opengl方法130。
43.然而,由于相关技术中需要通过胶水代码在opengl接口和webgl接口之间进行转调,造成性能损失,示意性的,开发人员通过c++编写的opengl函数调用,在编译成wasm文件执行时,中间会转变成javascript语言的webgl接口进行调用,然后再调用回原生opengl调用,中间的胶水代码为javascript语言,性能相对原生代码相差较大,调用开销以及数据的传输开销都较大,导致webassembly在执行图形程序时性能较差。
44.本技术实施例中,在对图形接口进行调用时,去除中间的javascript胶水代码,也即在webassembly虚拟机执行wasm文件时,在对图形接口进行调用时,直接对接到原生的opengl函数。示意性的,如图2所示,在编译生成的wasm文件中执行opengl函数210时,将该函数直接转调到原生opengl函数220。
45.结合上述名词简介,对本技术实施例中涉及的应用场景进行介绍:
46.第一,本技术实施例提供的图形接口的调用方法应用于浏览器中,其中,webassembly和javascript在浏览器中协同运行,webassembly是一种可以使用非javascript编程语言编写的代码在浏览器中运行的方案,浏览器中包括以webassembly编码方式在webassembly虚拟机中运行的第二程序代码,且第二程序代码是由第一程序代码编译得到的,可选地,第一程序代码为开发者通过原生语言编写的,开发者通过原生语言如:c语言、c++、rust等编写的opengl函数调用,在编译成wasm文件执行时,也即浏览器中对opengl图形接口进行调用时,通过webassembly虚拟机直接转调至opengl原生图形接口。
47.示意性的,在浏览器中播放赛车小游戏的游戏画面时,通过webassembly虚拟机将wasm文件直接转调至opengl原生图形接口,实现游戏画面的播放。
48.第二,本技术实施例提供的图形接口的调用方法应用于小程序中,其中,该小程序用于指示无需下载安装即可运行的应用程序,可选地,小程序可以是寄生在宿主程序下的程序,也可以是操作系统中提供的程序。可选地,小程序包括微信小程序(也即寄生在宿主程序微信下的小程序)、快应用(操作系统中提供的无需下载安装即可应用的程序)中的至少一种。
49.webassembly和javascript在小程序中协同运行,webassembly是一种可以使用非javascript编程语言编写的代码在小程序中运行的方案,小程序中包括以webassembly编码方式在webassembly虚拟机中运行的第二程序代码,且第二程序代码是由第一程序代码编译得到的,可选地,第一程序代码为开发者通过原生语言编写的,开发者通过原生语言如:c语言、c++、rust等编写的opengl函数调用,在编译成wasm文件执行时,也即小程序中对opengl图形接口进行调用时,通过webassembly虚拟机直接转调至opengl原生图形接口。
50.示意性的,该小程序实现为赛车游戏,在赛车游戏中进行赛车竞速游戏的过程中,通过webassembly虚拟机将wasm文件直接转调至opengl原生图形接口,实现游戏画面的播放。
51.值得注意的是,上述浏览器和小程序的应用场景仅为本技术实施例中示意性的举例,本技术中提供的图形接口的调用方法还可以应用于其他在webassembly虚拟机中将图形接口直接转调至原生接口的方案中,具体应用场景本技术实施例不加以限定。
52.值得注意的是,上述赛车游戏仅为示意性的举例,图形接口调用还可以应用于如:图片/视频编辑、图像识别、视频直播、开发者工具等程序的运行过程中。
53.示意性的,以小程序的应用场景为例进行说明,图3是本技术一个示例性实施例提供的实施环境示意图,如图3所示,在该实施环境中包括服务器310和终端320,其中,服务器310和终端320之间通过通信网络330连接;
54.其中,终端320中安装有宿主程序,在用户对宿主程序的应用过程中,触发对小程序的启动,从而终端320从服务器310中获取小程序的应用包,并通过应用包运行小程序,其中,小程序中包括通过webassembly虚拟机运行的部分,在将原生opengl函数调用编译成wasm执行时,通过webassembly虚拟机直接转调至原生opengl函数。
55.其中,终端320可以实现为手机、平板电脑、便携式膝上笔记本电脑、智能可穿戴设备等移动终端,也可以是台式电脑;服务器310可以实现为物理服务器,也可以实现为云服务器,且服务器310可以实现为一台服务器,也可以实现为一组服务器构成的服务器集群,本技术实施例对此不加以限定。
56.结合上述应用场景和实施环境,对本技术实施例提供的图形接口的调用方法进行介绍,图4是本技术一个示例性实施例提供的图形接口的调用方法的流程图,以该方法应用于终端中为例进行说明,如图4所示,该方法包括:
57.步骤401,运行目标应用程序,目标应用程序中包括webassembly虚拟机和第一程序代码。
58.可选地,webassembly虚拟机用于运行目标应用程序中的第二程序代码,且第二程序代码由第一程序代码以webassembly编码方式编译得到。可选地,第一程序代码为原生语言(如:c语言、c++、rust等)编写的代码。
59.可选地,目标应用程序包括浏览器和小程序中的至少一种,其中,小程序用于指示免下载安装的程序,也即,小程序为无需下载和安装即可在终端中运行的程序。可选地,小程序可以是寄生在宿主程序下的程序,也可以是操作系统中提供的程序。可选地,小程序包括微信小程序(也即寄生在宿主程序微信下的小程序)、快应用(操作系统中提供的无需下载安装即可应用的程序)中的至少一种。
60.示意性的,以微信小程序为例进行说明,在用户对微信的应用过程中,触发对赛车小程序的启动,从而终端从服务器中获取赛车小程序的程序包,并通过程序包运行小程序,其中,程序包中包括webassembly虚拟机,以及程序代码。可选地,程序包中还包括javascript虚拟机。程序代码可以在webassembly虚拟机中运行,也可以在javascript虚拟机中运行。可选地,webassembly虚拟机和javascript虚拟机也可以实现为同一个虚拟机,本技术实施例对虚拟机形式不加以限定。
61.可选地,webassembly是一种字节码格式,和javascript解释运行不同的是,webassembly的字节码和底层机器码相似度较高,可以快速的装载运行,因此性能相对于javascript的解释运行有较大幅度的提升,及webassembly并非编程语言,而是字节码标准,需要使用高级编程语言编译出字节码放在webassembly虚拟机中运行。
62.开发人员在程序开发时,通过高级编程语言编写程序后,由机器编译成机器码后运行。由于webassembly与机器码相似度较高,可以被快速翻译为对应架构的机器码,因此,webassembly的运行速度与机器码较为接近。
63.步骤402,在第二程序代码的运行过程中接收图形接口调用信号。
64.可选地,图形接口调用信号用于指示对图形接口函数进行调用,其中,图形接口函
数为第二程序代码中的函数,且图形接口函数由第一程序代码中的原生图形接口函数编译得到。可选地,图形接口函数中没有函数功能的具体实现,而需要调用到原生图形接口函数中进行具体的函数实现。
65.可选地,以小程序的运行过程为例进行说明,当用户在小程序中触发图形功能(如:游戏视频播放)时,将原生图形接口调用方法编译为wasm文件在webassembly虚拟机中运行,生成图形接口调用信号。其中,编译得到的wasm文件即可视为第二程序代码中与原生图形接口调用方法对应的部分。
66.示意性的,请参考图5,在小程序界面510中显示有赛车游戏的开始控件511,当接收到在开始控件511上的触发信号时,将原生代码编写的程序编译为wasm文件在webassembly虚拟机中运行。
67.步骤403,响应于图形接口调用信号,通过webassembly虚拟机将图形接口函数转调至原生图形接口函数。
68.可选地,webassembly虚拟机中定义有图形接口函数的转调路径,根据该转调路径,将图形接口函数转调至对应的原生图形接口函数,从而实现图形接口对应的图形功能。
69.可选地,通过webassembly虚拟机确定图形接口函数对应的转调路径,该转调路径中包括图形接口函数对应的转调目标,根据转调路径将图形接口函数转调至原生图形接口函数实现。
70.可选地,根据转调路径确定原生图形接口函数作为图形接口函数的转调目标,并将图形接口函数转调至原生图形接口函数。
71.示意性的,开发人员通过c++编程语言编写的opengl函数调用,在小程序中被编译为webassembly文件执行时,通过webassembly虚拟机将wasm文件直接转调至c++开发的原生opengl函数,从而实现图形接口的调用。
72.综上所述,本技术实施例中提供的图形接口的调用方法,通过webassembly虚拟机将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率,从而提高了绘图、音频、网络等调用逻辑的运行速度,提高了浏览器或小程序的整体运行速度。
73.在一个可选的实施例中,通过在webassembly虚拟机中设置转调路径,从而实现将图形接口函数直接转调至原生图形接口函数,图6是本技术另一个示例性实施例提供的图形接口的调用方法的流程图,以该方法应用于终端中为例进行说明,如图6所示,该方法包括:
74.步骤601,运行目标应用程序,目标应用程序中包括webassembly虚拟机和第一程序代码。
75.可选地,webassembly虚拟机用于运行目标应用程序中的第二程序代码,且第二程序代码由第一程序代码以webassembly编码方式编译得到。
76.可选地,目标应用程序包括浏览器和小程序中的至少一种。
77.示意性的,以微信小程序为例进行说明,在用户对微信的应用过程中,触发对赛车小程序的启动,从而终端从服务器中获取赛车小程序的程序包,并通过程序包运行小程序,其中,程序包中包括webassembly虚拟机,以及程序代码。
78.开发人员在程序开发时,通过高级编程语言编写程序后,由机器编译成机器码后
运行。由于webassembly与机器码相似度较高,可以被快速翻译为对应架构的机器码,因此,webassembly的运行速度与机器码较为接近。
79.步骤602,在第二程序代码的运行过程中接收图形接口调用信号。
80.可选地,图形接口调用信号用于指示对图形接口函数进行调用,其中,图形接口函数为第二程序代码中的函数,且图形接口函数由第一程序代码中的原生图形接口函数编译得到。
81.可选地,以小程序的运行过程为例进行说明,当用户在小程序中触发图形功能(如:游戏视频播放)时,将原生图形接口调用方法编译为wasm文件在webassembly虚拟机中运行,生成图形接口调用信号。
82.可选地,第一程序代码以原生语言开发,第一程序代码中包括函数调用方法,将该函数调用方法编译为webassembly编码方式,该函数调用方法用于对原生图形接口函数进行调用,在webassembly虚拟机中,执行第二程序代码中编译后的函数调用方法,并生成图形接口调用信号。
83.步骤603,通过webassembly虚拟机确定图形接口函数对应的转调路径。
84.可选地,webassembly虚拟机中定义有至少一个图形接口函数对应的转调路径,当wasm文件中调用的图形接口函数在webassembly虚拟机中定义有转调路径时,则获取该转调路径。可选地,图形接口函数在wasm中被声明为由外部导入实现的import函数,相关技术中,通过javascript的webassembly.instantiate函数的imports参数传入具体的实现,从而限制了外部导出函数必须在javascript层实现。
85.步骤604,根据转调路径将图形接口函数转调至原生图形接口函数,实现对应的图形功能。
86.本技术实施例中,响应于图形接口调用信号,也即响应于外部导入的import函数,确定图形接口函数的转调路径后,直接转调至原生函数实现。
87.可选地,传统方案的性能损失主要在于接口调用过程中转调的胶水代码,示意性的,开发者通过c++编程语言编写的opengl函数调用,在编译成wasm文件执行时,中间转变为javascript的webgl调用,然后再调用回原生的opengl调用,中间的胶水代码是javascript语言,性能相对于原生代码差距较大,从而导致调用开销和数据传输的开销都较大,导致了webassembly在执行图形程序时,性能较差。
88.而本技术实施例中,通过webassembly虚拟机,去除掉中间的javascript胶水代码,将图形接口函数直接对接到原生opengl函数,从而提升在图形接口调用过程中的性能。
89.综上所述,本技术实施例中提供的图形接口的调用方法,通过webassembly虚拟机将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率,从而提高了绘图、音频、网络等调用逻辑的运行速度,提高了浏览器或小程序的整体运行速度。
90.本实施例提供的方法,在接收到图形接口调用信号,通过确定转调路径,从而将图形接口函数直接转调至对应的原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率。
91.在一个可选的实施例中,响应于外部导入的import函数,将图形接口函数直接转调至原生函数实现,图7是本技术另一个示例性实施例提供的图形接口的调用方法流程图,
以该方法应用于终端中为例进行说明,如图7所示,该方法包括:
92.步骤701,运行目标应用程序,目标应用程序中包括webassembly虚拟机和第一程序代码。
93.可选地,webassembly虚拟机用于运行目标应用程序中的第二程序代码,且第二程序代码由第一程序代码以webassembly编码方式编译得到。
94.可选地,目标应用程序包括浏览器和小程序中的至少一种。
95.示意性的,以微信小程序为例进行说明,在用户对微信的应用过程中,触发对赛车小程序的启动,从而终端从服务器中获取赛车小程序的程序包,并通过程序包运行小程序,其中,程序包中包括webassembly虚拟机,以及程序代码。
96.开发人员在程序开发时,通过高级编程语言编写程序后,由机器编译成机器码后运行。由于webassembly与机器码相似度较高,可以被快速翻译为对应架构的机器码,因此,webassembly的运行速度与机器码较为接近。
97.步骤702,在第二程序代码的运行过程中接收图形接口调用信号。
98.可选地,图形接口调用信号用于指示对图形接口函数进行调用,其中,图形接口函数为第二程序代码中的函数,且图形接口函数由第一程序代码中的原生图形接口函数编译得到。
99.可选地,以小程序的运行过程为例进行说明,当用户在小程序中触发图形功能(如:游戏视频播放)时,将原生图形接口调用方法编译为wasm文件在webassembly虚拟机中运行,生成图形接口调用信号。
100.可选地,目标应用程序中包括以原生语言开发的函数调用方法,将该函数调用方法编译为webassembly编码方式,该函数调用方法用于对原生图形接口函数进行调用,在webassembly虚拟机中执行编译后的函数调用方法,并生成图形接口调用信号。
101.步骤703,根据图形接口调用信号,生成外部函数导入信号。
102.可选地,由于opengl等图形接口在wasm文件中被声明为由外部导入的函数,也即import函数,故,在传统调用过程中,通过javascript的webassembly.instantiate函数的imports参数传入具体实现,故限制了外部导入函数需要在javascript层实现,也即,外部导入函数需要通过javascript胶水代码实现。
103.而本技术实施例中,跳过javascript层实现import函数,响应于图形接口调用信号,确定该图形接口函数为import函数,也即外部导入函数,故生成外部函数导入信号。
104.步骤704,根据外部函数导入信号将图形接口函数转调至原生图形接口函数,实现对应的图形功能。
105.可选地,webassembly虚拟机在执行wasm文件时,当遇到外部导入的import函数时,直接转调到原生函数实现。也即,响应于图形接口调用信号,生成外部函数导入信号,外部函数导入信号用于指示图形接口函数为外部导入的import函数,根据外部函数导入信号,将图形接口函数直接转调至原生图形接口函数实现。
106.示意性的,请参考图8,javascript模块810在webassembly虚拟机820中加载wasm文件,并在需要对opengl图形接口进行调用时,由webassembly虚拟机将wasm文件中的opengl图形接口直接转调至原生c++的opengl图形接口实现。
107.经过试验,在特定型号的手机上跑赛车程序的webassembly程序视频时,每帧图形
接口函数调用耗时由90ms减少至10ms,速度提升了9倍。
108.综上所述,本技术实施例中提供的图形接口的调用方法,通过webassembly虚拟机将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率,从而提高了绘图、音频、网络等调用逻辑的运行速度,提高了浏览器或小程序的整体运行速度。
109.本实施例提供的方法,通过对图形接口函数的函数类型进行确定,当函数类型为外部导入的import类型函数时,将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率。
110.图9是本技术一个示例性实施例提供的图形接口的调用装置的结构框图,如图9所示,该装置包括:
111.运行模块910,用于运行目标应用程序,所述目标应用程序中包括webassembly虚拟机和第一程序代码,所述webassembly虚拟机用于运行所述目标应用程序中的第二程序代码,所述第二程序代码由所述第一程序代码以webassembly编码方式编译得到;
112.接收模块920,用于在所述第二程序代码的运行过程中接收图形接口调用信号,所述图形接口调用信号用于指示对图形接口函数进行调用,所述图形接口函数为所述第二程序代码中的函数,且所述图形接口函数由所述第一程序代码中的原生图形接口函数编译得到;
113.调用模块930,用于响应于所述图形接口调用信号,通过所述webassembly虚拟机将所述图形接口函数转调至所述原生图形接口函数。
114.在一个可选的实施例中,所述webassembly虚拟机中定义有所述图形接口函数的转调路径;
115.如图10所示,所述调用模块930,包括:
116.确定单元931,用于通过所述webassembly虚拟机确定所述图形接口函数对应的所述转调路径,所述转调路径中包括所述图形接口函数对应的转调目标;
117.调用单元932,用于根据所述转调路径将所述图形接口函数转调至所述原生图形接口函数。
118.在一个可选的实施例中,所述调用单元932,具体用于根据所述转调路径确定所述原生图形接口函数作为所述图形接口函数的所述转调目标;将所述图形接口函数转调至所述原生图形接口函数。
119.在一个可选的实施例中,所述第一程序代码以原生语言开发,所述第一程序代码中包括函数调用方法;
120.所述接收模块920,具体用于将所述函数调用方法编译为所述webassembly编码方式,所述函数调用方法用于对所述原生图形接口函数进行调用;在所述webassembly虚拟机中,执行所述第二程序代码中编译后的所述函数调用方法,生成所述图形接口调用信号。
121.在一个可选的实施例中,所述调用模块930,具体用于根据所述图形接口调用信号,生成外部函数导入信号;根据所述外部函数导入信号将所述图形接口函数转调至所述原生图形接口函数。
122.在一个可选的实施例中,所述目标应用程序包括浏览器、小程序中的至少一种;
123.其中,所述小程序用于指示免下载安装的程序。
124.综上所述,本技术实施例中提供的图形接口的调用装置,通过webassembly虚拟机将wasm文件中的图形接口函数直接转调至原生图形接口函数,避免设置胶水代码,通过javascript胶水层对接口函数的转调,提高了图形接口函数的调用效率,从而提高了绘图、音频、网络等调用逻辑的运行速度,提高了浏览器或小程序的整体运行速度。
125.图11示出了本技术一个示例性实施例提供的终端1100的结构框图。该终端1100可以是:智能手机、平板电脑、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
126.通常,终端1100包括有:处理器1101和存储器1102。
127.处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
128.存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本技术中方法实施例提供的图形接口的调用方法。
129.在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
130.外围设备接口1103可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
131.射频电路1104用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路
1104包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括nfc(near field communication,近距离无线通信)有关的电路,本技术对此不加以限定。
132.显示屏1105用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light-emitting diode,有机发光二极管)等材质制备。
133.摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtual reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
134.音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
135.定位组件1108用于定位终端1100的当前地理位置,以实现导航或lbs(location based service,基于位置的服务)。定位组件1108可以是基于美国的gps(global positioning system,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
136.电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过
无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
137.在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
138.加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
139.陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3d动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
140.压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
141.指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商logo时,指纹传感器1114可以与物理按键或厂商logo集成在一起。
142.光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
143.接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
144.本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
145.本技术的实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一
段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的图形接口的调用方法。
146.本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的图形接口的调用方法。
147.本技术的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的图形接口的调用方法。
148.可选地,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、固态硬盘(ssd,solid state drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(reram,resistance random access memory)和动态随机存取存储器(dram,dynamic random access memory)。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
149.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
150.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1