一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图形渲染方法、设备及计算机存储介质与流程

2022-02-19 09:55:59 来源:中国专利 TAG:


1.本技术涉及图像处理技术领域,尤其涉及一种图形渲染方法、设备及计算机存储介质。


背景技术:

2.小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。目前,小程序中的图形一般采用浏览器内核中的网页视图webview引擎进行渲染。然而,由于浏览器内核中的渲染管线比较复杂,在利用浏览器内核中的引擎对小程序或者其他场景中的图形进行渲染操作时,容易导致渲染性能不理想。


技术实现要素:

3.本技术实施例提供一种图形渲染方法、设备及计算机存储介质,通过架构简单、渲染管线比较精简的引擎装置实现图形渲染操作,能够保证图形渲染的性能和效果。
4.第一方面,本技术实施例提供了一种图形渲染方法,包括:
5.利用引擎组件获取容器组件下发的渲染指令,确定与所述渲染指令相对应的指令类型和执行操作;
6.利用画布实现组件在所述渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作,获得渲染后图形,其中,所述图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
7.第二方面,本技术实施例提供了一种图形渲染装置,包括:
8.引擎组件,用于获取容器组件下发的渲染指令,确定与所述渲染指令相对应的指令类型和执行操作;
9.画布实现组件,用于在所述渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作,获得渲染后图形,其中,所述图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
10.第三方面,本技术实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面所示的图形渲染方法。
11.第四方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第一方面所示的图形渲染方法。
12.第五方面,本发明实施例提供了一种计算机程序产品,包括:计算机程序,当所述计算机程序被电子设备的处理器执行时,使所述处理器执行上述第一方面所示的图形渲染方法。
13.第六方面,本技术实施例提供了一种图形渲染方法,包括:
14.获取待处理的渲染指令;
15.建立与所述渲染指令相对应的画布环境;
16.在所述渲染指令包括图形渲染指令时,则在所述画布环境内进行图形渲染操作,获得渲染后图形,其中,所述图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
17.第七方面,本技术实施例提供了一种图形渲染装置,包括:
18.第一获取模块,用于获取待处理的渲染指令;
19.第一建立模块,用于建立与所述渲染指令相对应的画布环境;
20.第一处理模块,用于在所述渲染指令包括图形渲染指令时,则在所述画布环境内进行图形渲染操作,获得渲染后图形,其中,所述图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
21.第八方面,本技术实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第六方面所示的图形渲染方法。
22.第九方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第六方面所示的图形渲染方法。
23.第十方面,本发明实施例提供了一种计算机程序产品,包括:计算机程序,当所述计算机程序被电子设备的处理器执行时,使所述处理器执行上述第六方面所示的图形渲染方法。
24.本技术实施例提供的技术方案,通过架构简单、渲染管线比较精简的引擎装置实现图形渲染操作,不仅能够保证图形渲染的正确性,具体能够达到浏览器渲染的效果,而且能够满足不同用户的使用需求,方便进行图形渲染操作,同时支持小程序、小部件、weex等多类型的容器,进而提高了该渲染方法的实用性。
附图说明
25.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1a为本技术实施例提供的一种用于图形渲染操作的引擎的结构示意图;
27.图1b为本技术实施例提供的一种图形渲染方法的流程示意图;
28.图2为本技术实施例提供的另一种图形渲染方法的流程示意图;
29.图3为本技术实施例提供的获取待处理的渲染指令的流程示意图一;
30.图4为本技术实施例提供的对所述渲染后图形进行显示的流程示意图;
31.图5为本技术实施例提供的另一种图形渲染方法的流程示意图;
32.图6为本技术实施例提供的又一种图形渲染方法的流程示意图;
33.图7为本技术实施例提供的获取待处理的渲染指令的流程示意图二;
34.图8为本技术应用实施例提供的一种图形渲染方法的原理示意图;
35.图9为本技术应用实施例提供的一种图形渲染方法的流程示意图;
36.图10为本技术实施例提供的一种图形渲染装置的结构示意图;
37.图11为图10所示的图形渲染装置所对应的电子设备的结构示意图;
38.图12为本技术实施例提供的一种图形渲染装置的结构示意图;
39.图13为图12所示的图形渲染装置所对应的电子设备的结构示意图。
具体实施方式
40.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
42.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
43.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
44.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
45.另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
46.术语解释:
47.跨平台:泛指程序语言、软件或硬件设备可以在多种操作系统或不同硬件架构的设备上运行。
48.(web)canvas画布:特指w3c标准中定义的并由html5正式引入的canvas绘图能力,包含:canvas标签以及2d&webgl js应用程序接口(application programming interface,简称api)。
49.webgl(web graphics library):是web端一种通用的3d绘图协议,它将js与opengl(es)相结合,使得html5 canvas支持3d硬件加速渲染。
50.游戏引擎:游戏引擎用于简化游戏开发成本,通常包含渲染器、物理引擎、碰撞检测、场景管理等功能模块。
51.小程序:是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。
52.javascript引擎,简称js引擎,是一个用于处理javascript脚本的虚拟机。
53.jsi:指的是js引擎抽象层,它屏蔽了js引擎的差异性,使得开发者可以通过一套
代码跑在不同的js引擎上。
54.skia引擎:即安卓系统底层2d图形处理引擎,是一种c 的开源函数库,包括字型处理和位图处理等功能,通常应用于安卓系统或者chrome浏览器,利用skia可以对2d的文本、图像进行渲染。
55.下面通过一个示例性的应用场景具体说明本技术各个实施例提供的图形渲染方法、设备及计算机存储介质。
56.图1a为本技术实施例提供的一种用于图形渲染操作的引擎的结构示意图;参考附图1a所示,本实施例提供了一种跨平台、高性能、标准化、可扩展的用于图形渲染的引擎,该引擎可以通过同层渲染方式来替换默认的canvas来嵌入到webview中,也可以在不同的容器(如小程序、weex等)中使用,并且可以在直播、电商等场景中进行大规模的使用。具体的,该引擎可以部署在客户端或者服务器上,当引擎部署在客户端时,该客户端即为能够进行图形渲染操作的终端设备,该客户端的基本结构可以包括:至少一个处理器。处理器的数量取决于客户端的配置和类型。客户端也可以包括存储器,该存储器可以为易失性的,例如ram,也可以为非易失性的,例如只读存储器(read

only memory,简称rom)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作系统(operating system,简称os)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,客户端还包括一些基本配置,例如网卡芯片、io总线、显示组件以及一些外围设备等。可选地,一些外围设备可以包括,例如键盘、鼠标、输入笔、打印机等。其它外围设备在本领域中是众所周知的,在此不做赘述。可选地,客户端可以为pc(personal computer)终端、手持终端(例如:智能手机、平板电脑)等。
57.当引擎部署在服务器上时,该服务器即为能够提供图形渲染服务的设备,该服务器可以是集群服务器、常规服务器、云服务器、云主机、虚拟中心等。
58.具体的,用于图形渲染的引擎可以包括:js引擎组件和画布实现组件,此时,参考附图1b所示,本实施例中的图形渲染方法可以包括:
59.步骤s101:利用引擎组件获取容器组件下发的渲染指令,确定与渲染指令相对应的指令类型和执行操作。
60.步骤s102:利用画布实现组件在渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
61.其中,容器组件可以形成一容器层,该容器层上可以部署小程序、小部件或者weex框架等容器,引擎组件可以形成一引擎层,用于对渲染指令进行分析处理,上述的渲染指令可以是指需要进行渲染处理操作的指令,在一些实例中,渲染指令可以为js渲染指令,当然的,渲染指令也可以为其他类型的渲染指令,例如:渲染指令也可以为cad渲染指令等等。可以理解的是,在渲染指令为js渲染指令时,引擎组件可以为js引擎组件。画布实现组件可以形成一画布实现层,用于实现图形渲染操作。
62.为了方便理解和说明,下面以js指令作为渲染指令、js引擎组件作为引擎组件为例进行说明:具体的,容器组件可以与js引擎组件通信连接,这样在容器组件获取到js指令之后,可以将js指令发送至js引擎组件,从而使得js引擎组件可以获取到容器组件所下发的js指令。在一些实例中,容器组件可以基于用户输入的执行操作生成一js文件,该js文件
中包括多个js指令,而后将js文件传输至js引擎组件,从而使得js引擎组件可以获取到集成有多个js指令的js文件。需要注意的是,由于容器组件可以部署多个小程序或者小部件,而每个小程序或者小部件均可以向js引擎组件发送js指令,因此,在同一时刻,js引擎组件所获取到的js指令可以来自不同的小程序或者小部件。
63.由于js指令具有多种不同的类型,而不同类型的js指令可以对应有不同的执行操作,例如:用于刷新当前页面的js指令、用于刷新父亲对象的js指令、用于刷新父窗口对象的js指令、用于进行数字转换操作的js指令、用于实现图形渲染操作的js指令等等。因此,在js引擎组件获取到js指令之后,可以对js指令进行分析处理,以识别js指令所对应的指令类型以及所需要执行的操作。
64.在js引擎组件对js指令进行分析处理之后,可以获取到js指令所对应的处理结果,在处理结果为js指令包括图形渲染指令时,则说明此时需要进行图形渲染操作,此时,则需要通过画布实现组件来实现图形渲染操作,具体的,画布实现组件可以在设定的画布环境内进行图形渲染操作,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作,在一些实例中,3d渲染操作可以具体为webgl渲染操作,从而可以获得满足设计需求的渲染后图形,该渲染后图形可以为2d图形或者3d图形。
65.本实施例提供的图形渲染方法,通过架构简单、渲染管线比较精简的引擎装置实现图形渲染操作,不仅能够保证图形渲染的正确性,具体能够达到浏览器渲染的效果,而且能够满足不同用户的使用需求,方便进行图形渲染操作,同时支持小程序、小部件、weex等多类型的容器,进而提高了该渲染方法的实用性。
66.在上述实施例的基础上,参考附图1a所示,本实施例对用于对与渲染指令进行分析处理的引擎组件的具体架构不做限定,本领域技术人员可以根据具体的应用场景或者应用需求进行配置,在一些实例中,本实施例中的引擎组件可以包括引擎模块,上述引擎模块可以包括多个不同类型的引擎单元。举例来说,在引擎模块为js引擎模块时,该js引擎模块中可以包括多个不同类型的js引擎单元,该js引擎单元可以包括以下至少之二:js v8引擎、javascriptcore引擎、quick js引擎等等,当然的,本领域技术人员也可以根据具体的应用需求和设计需求来配置其他类型的js引擎单元,在此不再赘述。
67.基于上述结构的引擎组件,本实施例中的利用引擎组件获取容器组件下发的渲染指令,确定与渲染指令相对应的指令类型和执行操作可以包括:利用引擎模块获取容器组件下发的渲染指令,在多个不同类型的引擎单元中,确定与渲染指令相对应的目标引擎单元,利用目标引擎单元确定与渲染指令相对应的指令类型和执行操作。
68.具体的,由于不同类型的引擎单元可以对不同类型的小程序或者小部分所发送的渲染指令进行分析处理,因此,为了能够保证对渲染指令进行分析识别的准确可靠性,在引擎模块获取到容器组件下发的渲染指令之后,可以利用引擎模块在多个不同类型的引擎单元中确定与渲染指令相对应的目标引擎单元。具体的,在多个不同类型的引擎单元中,确定与渲染指令相对应的目标引擎单元可以包括:获取与渲染指令相对应的指令类型标识,预先存储有指令类型标识与引擎单元之间的映射关系,在多个不同类型的引擎单元中,基于上述映射关系确定与指令类型标识相对应的目标引擎单元。
69.在获取到目标引擎单元之后,可以利用目标引擎单元对渲染指令进行分析识别,以确定渲染指令所对应的指令类型和执行操作。举例来说:容器组件包括:小程序1和小程
序2,小程序1向js引擎组件下发了js文件1,该js文件1中包括多个待处理的js指令,在js引擎组件获取到js文件1之后,可以确定与js文件1相对应的指令类型标识,具体的,可以获取js文件1的文件拓展名,通过文件扩展名来确定与js文件1相对应的指令类型标识。在指令类型标识为类型a,而预先配置以下映射关系:类型a的js指令需要用jsc引擎单元进行分析识别。因此,可以基于上述映射关系将多个js引擎单元中的jsc引擎单元确定为目标引擎单元,而后则可以利用jsc引擎单元对上述js文件1中的js指令进行分析处理,从而可以获取到较为准确的分析处理结果。
70.本实施例中,通过将引擎组件中的引擎模块设置为可以包括多个不同类型的引擎单元,上述所配置的引擎单元可以对不同类型的渲染指令进行分析处理,具体的,利用引擎模块在多个不同类型的引擎单元中,确定与渲染指令相对应的目标引擎单元,而后利用目标引擎单元确定与渲染指令相对应的指令类型和执行操作;在引擎模块为js引擎模块时,这样可以实现通过jsi技术能够支持大部分类型的js引擎,上述所部署的js引擎可以对不同类型的小程序或者小部件所对应的js指令进行分析处理,不仅保证了对js指令分析处理的质量和可靠性,并且有效地扩展了该图形渲染方法的适用范围。
71.在上述实施例的基础上,参考附图1a所示,本实施例中的引擎组件还可以包括:引擎关联模块,此时,本实施例中的方法还可以包括:利用引擎关联模块将预设的图形应用程序接口与引擎模块进行关联,在渲染指令包括图形绘制指令时,通过图形应用程序接口和图形绘制指令在画布环境内进行图形绘制操作。
72.由于引擎模块自身并不具有图形绘制能力,为了能够实现图形绘制操作,可以将预设的图形应用程序接口api与引擎模块进行关联,即通过引擎关联模块可以将预设的图形api与引擎模块进行绑定,上述的图形api可以包括以下至少之一:与2d图形库相对应的图形api、与3d图形库相对应的图形api等等。这样在渲染指令包括图形绘制指令时,则可以通过图形应用程序接口和图形绘制指令在画布环境内进行图形绘制操作。例如:渲染指令中包括直线绘制指令时,则可以通过与2d图形库相对应的图形api进行直线的绘制操作;在渲染指令中包括球体绘制指令时,则可以通过与3d图形库相对应的图形api进行球体的绘制操作,从而有效地使得引擎模块可以实现图形绘制操作。
73.需要注意的是,由于引擎模块可以为多个,而多个引擎模块与图形api之间进行绑定操作的实现编辑语言不同,此时,为了能够屏蔽多个引擎模块之间的差异性,则可以通过中间组件来实现多个引擎模块与图形api之间的关联操作,具体的,将图形api与中间组件进行关联操作,而中间组件与各个引擎模块之间进行通信连接,这样各个引擎模块可以通过中间组件来调用图形api,从而通过一套关联代码有效地实现了将图形api与各个引擎模块之间进行关联操作,进一步提高了该图形渲染方法的实用性。
74.举例来说,在引擎模块为js引擎模块时,由于js引擎模块可以为多个,而多个js引擎模块与图形api之间进行绑定操作的实现编辑语言不同,此时,为了能够屏蔽多个js引擎模块之间的差异性,则可以通过jsi中间组件来实现多个js引擎模块与图形api之间的关联操作,具体的,将图形api与jsi中间组件进行关联操作,而jsi中间组件与各个js引擎模块之间进行通信连接,这样各个js引擎模块可以通过jsi中间组件来调用图形api,从而通过一套关联代码有效地实现了将图形api与各个js引擎模块之间进行关联操作,进一步提高了该图形渲染方法的实用性。
75.在上述实施例的基础上,参考附图1a所示,本实施例中的画布实现组件可以包括:canvas画布渲染单元和webgl渲染单元;此时,本实施例中的利用画布实现组件在渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作可以包括:
76.步骤s1021:利用canvas画布渲染单元在设定的画布环境内通过skia引擎进行图形的2d渲染操作。
77.步骤s1022:利用webgl渲染单元在设定的画布环境内进行图形的3d渲染操作。
78.其中,为了能够提高该引擎架构使用的广泛性和普遍性,在对画布实现组件进行配置时,可以将canvas画布渲染单元配置通过skia引擎实现图形的2d渲染操作,webgl渲染单元能够可以通过opengles引擎实现图形的3d渲染操作,上述的opengles(opengl for embedded systems)引擎是opengl三维图形api的子集,针对手机、pda和游戏主机等嵌入式设备而设计。从而有效地使得画布实现组件可以基于skia引擎和opengles引擎实现与浏览器内核完全一致的标准接口,这样不仅能够提高图形渲染方法的实用性,并且有利于提高图形渲染方法的使用性能,方便进行性能优化操作。
79.在上述实施例的基础上,参考附图1a所示,本实施例中的方法还可以包括:在引擎组件获取容器组件下发的渲染指令之前,利用窗体适配组件中包括的画布配置模块建立与操作系统和渲染指令相对应的窗口环境,窗口环境用于显示图形渲染结果,操作系统与容器组件相对应,其中,窗体适配组件用于部署在预设平台架构上。
80.其中,本实施例中的引擎可以包括窗体适配组件,用于部署在预设平台架构上,上述的预设平台架构可以包括以下至少之一:android平台架构、ios平台架构、windows平台架构等等。具体的,由于窗体适配组件可以部署在预设平台架构上,而不同预设平台架构下所对应的用于显示图形渲染结果的窗口环境不同。因此,在该引擎进行运行的过程中,画布配置模块可以在引擎组件获取到容器组件下发的渲染指令之前,获知到与容器组件相对应的操作系统,例如:在容器组件运行在android平台架构上时,操作系统为android系统;在容器组件运行在ios平台架构上时,操作系统为ios系统;在容器组件运行在windows平台架构上时,则操作系统为windows系统。在获知到操作系统之后,可以基于操作系统和渲染指令建立相对应的窗口环境,该窗口环境与操作系统相对应,用于显示与渲染指令相对应的图形渲染结果。
81.本实施例中,通过将引擎配置为还包括窗体适配组件,窗体适配组件可以部署在预设平台架构上,而后在引擎组件获取容器组件下发的渲染指令之前,通过画布配置模块建立与操作系统和渲染指令相对应的窗口环境,窗口环境用于显示图形渲染结果,从而有效地实现了通过一套代码逻辑即可支持不同类型的平台架构,进一步提高了该图形渲染方法的实用性和适用范围。
82.在上述实施例的基础上,参考附图1a所示,本实施例中的方法还可以包括:利用窗体适配组件中包括的界面管理模块获取渲染后图形,并对渲染后图形进行显示和/或管理。
83.具体的,在获取到渲染后图形之后,若需要对渲染后图形进行显示,则可以通过显示器对渲染后图形进行显示;若需要对渲染后图形进行管理操作,则可以对渲染后图形进行管理操作,例如:可以对渲染后图形进行存储操作、对渲染后图形进行传输操作、对渲染后图形进行标记操作等等,从而有效地实现了在获取到渲染后图形之后,可以根据设计需求或者应用需求对渲染后图形进行显示和/或管理操作,进一步提高了该图形渲染方法使
用的方便可靠性。
84.图2为本技术实施例提供的另一种图形渲染方法的流程示意图;参考附图2所示,本实施例提供了另一种图形渲染方法,该方法的执行主体可以为图形渲染装置,可以理解的是,该图形渲染装置可以实现为软件、或者软件和硬件的组合。具体的,该图形渲染方法可以包括:
85.步骤s201:获取待处理的渲染指令。
86.步骤s202:建立与渲染指令相对应的画布环境。
87.步骤s203:在渲染指令包括图形渲染指令时,则在画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
88.下面对上述各个步骤进行详细说明:
89.步骤s201:获取待处理的渲染指令。
90.待处理的渲染指令是指需要进行分析处理的渲染指令,在一些实例中,渲染指令可以为js渲染指令,当然的,渲染指令也可以为其他类型的渲染指令,例如:渲染指令也可以为cad渲染指令等等。具体的,所获取到的待处理的渲染指令的数量可以为一个或多个,本实施例对于获取渲染指令的具体实现方式不做限定,本领域技术人员可以根据具体的应用场景进行任意设置,例如:图形渲染装置上可以设置有指令采集装置,通过指令采集装置获取用户所输入的执行操作,基于执行操作可以生成渲染指令;或者,图形渲染装置可以与第三设备(可以为客户端或者运行在客户端上的小程序)通信连接,在通过第三设备获取到用户输入的渲染指令之后,可以将所获得的渲染指令传输至图形渲染装置,从而使得图形渲染装置可以稳定地获取到渲染指令。
91.在一些实例中,当渲染指令为js指令时,获取待处理的渲染指令可以包括:获取容器组件中至少一个容器所发送的js指令。当然的,本领域技术人员也可以采用其他的方式来获取待处理的渲染指令,只要能够保证对渲染指令进行获取的准确可靠性即可,在此不再赘述。
92.步骤s202:建立与渲染指令相对应的画布环境。
93.在获取到渲染指令之后,由于不同类型的渲染指令可以对应有不同的画布环境,因此,为了能够实现图形渲染操作,可以建立与渲染指令相对应的画布环境。在一些实例中,建立与渲染指令相对应的画布环境可以包括:确定渲染指令的指令类型,基于指令类型建立与渲染指令相对应的画布环境,该画布环境用于实现图形渲染操作。在另一些实例中,不同操作平台上所运行的同类渲染指令可以对应有不同的画布环境,因此,建立与渲染指令相对应的画布环境可以包括:确定用于运行渲染指令的操作系统,基于操作系统和渲染指令建立画布环境,该画布环境用于实现图形渲染操作。
94.当然的,本领域技术人员也可以采用其他的方式来建立与渲染指令相对应的画布环境,只要能够保证对画布环境进行建立的准确可靠性即可,在此不再赘述。
95.步骤s203:在渲染指令包括图形渲染指令时,则在画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
96.由于渲染指令具有多种不同的类型,而不同类型的渲染指令可以对应有不同的执行操作,例如:用于刷新当前页面的渲染指令、用于刷新父亲对象的渲染指令、用于刷新父窗口对象的渲染指令、用于进行数字转换操作的渲染指令、用于实现图形渲染操作的渲染
指令等等。因此,在获取到渲染指令之后,可以对渲染指令进行分析处理,具体的,可以识别渲染指令所对应的指令类型以及所需要执行的操作。
97.在处理结果为渲染指令包括图形渲染指令时,则说明此时需要进行图形渲染操作,进而可以在所建立的画布环境内进行图形渲染操作,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作,从而可以获得满足设计需求的渲染后图形,该渲染后图形可以为2d图形或者3d图形。
98.本实施例提供的图形渲染方法,与浏览器内核的渲染方式相比,具有实现方式简单,渲染原理比较精简的特性,并且,能够保证图形渲染的正确性,具体能够达到浏览器渲染的效果,这样不仅满足了不同用户的使用需求,方便进行图形渲染操作,同时支持小程序、小部件、weex等多类型的容器,并可以满足品牌营销等诉求,有效地提高了该图形渲染方法的实用性。
99.图3为本技术实施例提供的获取待处理的渲染指令的流程示意图一;在上述实施例的基础上,参考附图3所示,本实施例提供了一种获取待处理的渲染指令的实现方式,具体的,本实施例中的获取待处理的渲染指令可以包括:
100.步骤s301:获取显示列表中包括的所有原始渲染指令。
101.步骤s302:识别所有原始渲染指令中包括的无效指令。
102.步骤s303:删除无效指令,获得待处理的渲染指令。
103.其中,预先配置有用于存储渲染指令的显示列表,在获取到小程序或者用户所发送的渲染指令之后,可以将所接收到的渲染指令存储在显示列表中,从而可以生成原始渲染指令。由于上述的原始渲染指令中可能包括无效指令(无用指令),上述的无效指令可以包括:错误指令、被覆盖的图形绘画指令等等。因此,为了能够提高图形渲染操作的质量和效率,可以先获取显示列表中所包括的所有原始渲染指令,所有原始渲染指令可以是与一段时间相对应或者与一图形渲染操作相对应,即获取显示列表中包括的所有原始渲染指令可以包括:获取指令调用周期,基于指令调用周期获取显示列表中包括的所有原始渲染指令;或者,获取显示列表中包括的所有原始渲染指令可以包括:获取指令调用操作,基于指令调用操获取显示列表中包括的所有原始渲染指令。
104.在获取到所有原始渲染指令之后,可以对所有原始渲染指令进行分析识别,以识别出所有原始渲染指令中所包括的无效指令。在一些实例中,识别所有原始渲染指令中包括的无效指令可以包括:获取用于对指令进行分析处理的机器学习模型,将所有原始渲染指令输入到机器学习模型中,从而可以识别出所有原始渲染指令中是否包括无效指令,如果包括无效指令,则可以确定无效指令具体为哪些。在另一些实例中,识别所有原始渲染指令中包括的无效指令可以包括:获取所有原始渲染指令所对应的指令类型、指令执行动作、指令执行区域以及指令执行时间,基于指令类型、指令执行动作、指令执行区域以及指令执行时间识别所有原始渲染指令中是否包括无效指令,若包括无效指令,则可以确定无效指令具体为哪些。
105.在确定所有原始渲染指令中包括无效指令时,则可以将所有原始渲染指令中的无效指令删除,从而可以获得待处理的渲染指令,可以理解的是,所获取到的待处理的渲染指令中并不包括无效指令。在确定所有原始渲染指令中不包括无效指令时,则可以将所有原始渲染指令直接确定为待处理的渲染指令。
106.本实施例中,通过获取显示列表中包括的所有原始渲染指令,在所有原始渲染指令中包括无效指令时,则可以识别出所有原始渲染指令中包括的无效指令,而后删除无效指令,获得并不包括无效指令的待处理的渲染指令;在所有原始渲染指令中不包括无效指令时,则可以直接将所有原始渲染指令确定为待处理的渲染指令,这样不仅保证了对渲染指令进行确定的准确可靠性,而且保证了所获取到的渲染指令中并不包括无效指令,进而提高了图形渲染操作的指令和效率。
107.在上述实施例的基础上,在获得渲染后图形之后,本实施例中的还可以包括:对渲染后图形进行显示和/或管理。
108.具体的,在获取到渲染后图形之后,若需要对渲染后图形进行显示,则可以通过显示器对渲染后图形进行显示,例如:可以利用同层渲染技术将渲染后图形插入到webview容器中。若需要对渲染后图形进行管理操作,则可以对渲染后图形进行管理操作,例如:可以对渲染后图形进行存储操作、对渲染后图形进行传输操作、对渲染后图形进行标记操作等等,从而有效地实现了在获取到渲染后图形之后,可以根据设计需求或者应用需求对渲染后图形进行显示和/或管理操作,进一步提高了该方法使用的方便可靠性。
109.其中,在需要对渲染后图形进行显示时,为了能够保证图形显示的质量和效果,参考附图4所示,本实施例中的对渲染后图形进行显示可以包括:
110.步骤s401:获取与显示器相对应的垂直同步信号。
111.步骤s402:基于垂直同步信号,对渲染后图形进行光栅化处理,并通过显示器对渲染后图形进行显示。
112.其中,垂直同步又称场同步(vertical synchronization),从阴极射线管(cathode ray tube,简称crt)显示器的显示原理来看,单个像素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡数模转换器dac的控制,显卡dac完成一帧的扫描后就会产生一个垂直同步信号。一般情况下,在显示器的配置信息确定之后,则可以获取与显示器相对应的垂直同步信号。
113.在获取到垂直同步信号之后,可以基于垂直同步信号对渲染后图形进行光栅化处理,并通过显示器对渲染后图形进行显示。具体的,基于垂直同步信号,对渲染后图形进行光栅化处理可以包括:在每次获取到垂直同步信号时,则可以将垂直同步信号作为光栅化的触发信号,触发gpu线程对渲染后图形进行光栅化处理,以将渲染后图形呈现在显示器上。
114.本实施例中,在获得渲染后图形之后,若需要对渲染后图形进行显示,则可以通过显示器对渲染后图形进行显示;若需要对渲染后图形进行管理操作,则可以对渲染后图形进行管理操作,从而有效地实现了在获取到渲染后图形之后,可以根据设计需求或者应用需求对渲染后图形进行显示和/或管理操作,进一步提高了该图形渲染方法使用的方便可靠性。
115.图5为本技术实施例提供的另一种图形渲染方法的流程示意图;在上述实施例的基础上,参考附图5所示,本实施例中的方法还可以包括:
116.步骤s501:在渲染指令包括纹理上传指令时,则确定与纹理上传指令相对应的纹理上传线程,纹理上传线程与用于实现图形渲染操作的图形处理器gpu线程之间同享上下文;
117.步骤s502:基于纹理上传线程,将cpu中存储的图片上传至gpu,生成gpu纹理对象,并与gpu线程共享gpu纹理对象。
118.在获取到待处理的渲染指令之后,可以对待处理的渲染指令进行分析处理,以识别出待处理的渲染指令所对应的指令类型和所需要执行的动作。在识别结果为渲染指令中包括纹理上传指令时,为了能够不影响gpu线程的数据处理操作,则可以确定与纹理上传指令相对应的纹理上传线程,需要注意的是,该纹理上传线程可以是基于纹理上传指令新建立的线程任务,或者也可以是预先建立好待调用的线程。该纹理上传线程与gpu线程是完全两个不同的线程任务,这样在基于纹理上传线程进行纹理上传操作时,并不会影响gpu线程的数据处理操作。
119.在确定纹理上传线程之后,可以基于纹理上传线程将cpu中存储的图片上传至gpu,生成gpu纹理对象,为了能够使得gpu可以直接获取到gpu纹理对象,该纹理上传线程与gpu线程可以共享上下文,即纹理上传线程与gpu线程共享所生成gpu纹理对象。
120.本实施例中,在渲染指令包括纹理上传指令时,则确定与纹理上传指令相对应的纹理上传线程,而后基于纹理上传线程将核心处理器cpu中存储的图片上传至gpu,生成gpu纹理对象,并与gpu线程共享gpu纹理对象,从而有效地实现了异步纹理上传操作,这样不仅不会影响gpu线程的数据处理操作,并且cpu线程还可以直接获取到异步上传的gpu纹理对象,进一步提高了该图形渲染方法使用的稳定可靠性。
121.图6为本技术实施例提供的又一种图形渲染方法的流程示意图;参考附图6所示,本实施例中的图形渲染方法可以适用于生产者

消费者模型,此时,在获取待处理的渲染指令之前,本实施例中的方法还可以包括:
122.步骤s601:获取指令写入请求和待写入渲染指令;
123.步骤s602:基于指令写入请求,将待写入渲染指令存储在内存缓存区内,以作为待处理的渲染指令。
124.其中,在生产者消费者模型中,生产者用于生产渲染指令,消费者用于获取渲染指令,为了能够将生产者与消费者之间解耦合,则可以预先配置有用于存储渲染指令的内存缓存区,这样在生产者产生渲染指令时,则可以获取到由生产者所产生的指令写入请求和待写入渲染指令,而后可以基于指令写入请求将待写入渲染指令存储在内存缓存区中,从而可以生成待处理的渲染指令。
125.而后,消费者可以通过内存缓存区获取获取待处理的渲染指令,具体的,参考附图7所示,本实施例中的获取待处理的渲染指令可以包括:
126.步骤s701:获取指令调用请求。
127.步骤s702:基于指令调用请求,获取位于内存缓存区中所有待处理的渲染指令。
128.当消费者需要获取到待处理的渲染指令时,则可以产生指令调用请求,而后可以基于指令调用请求获取位于内存缓存区中的所有待处理的渲染指令,从而有效地实现了通过指令调用请求可以批量获取位于内存缓存区内的待处理的渲染指令。
129.本实施例中,通过获取指令写入请求和待写入渲染指令,基于指令写入请求,将待写入渲染指令存储在内存缓存区内,以作为待处理的渲染指令;通过获取指令调用请求,而后基于指令调用请求获取位于内存缓存区中所有待处理的渲染指令,有效地实现了生产者可以将所产生的渲染指令存储在内存缓存区内,在消费者获取渲染指令时,则可以通过访
问内存缓存区获取渲染指令,使得该图形渲染方法适用于生产者

消费者模型,进一步提高了该图形渲染方法的实用性和适用范围。
130.具体实现时,本应用实施例提供了一种基于新的引擎架构的图形渲染方法,其中,引擎架构可以参考附图1所示,该引擎架构主要包括:wal窗体适配组件(或称为wal窗体适配层)、canvas画布实现组件(canvas画布实现层)、js引擎组件(js引擎层):
131.wal窗体适配组件用于管理平台的窗体环境,并且,wal窗体适配组件用于部署在预设平台架构上;wal窗体适配组件可以包括:画布配置模块egl/eagl,用于实现平台与画布实现组件之间的桥接,具体的,在js引擎组件获取容器组件下发的渲染指令之前,建立与操作系统和js指令相对应的窗口环境,窗口环境用于显示图形渲染结果,操作系统与容器组件相对应。界面管理模块,用于管理渲染后图形的生命周期、释放时间、显示时间、窗体大小等等。
132.canvas画布实现组件包括:用于实现2d渲染操作的canvas画布渲染单元和用于实现3d渲染操作(可以为webgl渲染操作)的webgl渲染单元,上述的canvas画布渲染单元可以是以skia引擎为核心实现canvas 2d渲染;需要注意的是,为了能够支持标准通讯协议,可以通过选用skia引擎实现2d渲染操作,这样可以确保渲染表现与浏览器的渲染表现相一致,满足用户需求,并且还能够保证渲染的正确性和效果。webgl渲染单元可以基于原生的opengles图形接口进行开发,同时可以支持webgl1.0和2.0标准接口。
133.js引擎组件包括:js引擎模块和引擎关联模块,js引擎模块包括:js v8引擎、javascriptcore引擎、quick js引擎等主流类型的引擎模块,用于获取容器组件下发的js指令,在多个不同类型的js引擎单元中,确定与js指令相对应的目标引擎单元,利用目标引擎单元对js指令进行分析识别,以确定js指令所对应的指令类型和执行操作。
134.引擎关联模块用于将预设的图形应用程序接口与js引擎模块进行关联,以实现js api封装操作,为了能够屏蔽不同类型的js引擎之间的差异性,引擎关联模块可以将预设的图形api通过jsi中间组件与各个不同类型的js引擎进行关联绑定操作。
135.需要注意的是,本应用实施例中的引擎架构可以包括一个或多个canvas画布渲染单元,通过一个或多个canvas画布渲染单元可以同时进行多个图形渲染操作。与浏览器内核中的渲染引擎相比,本实施例中的引擎架构具有引擎架构简单、渲染管线比较精简的特性,并且,在通过引擎架构进行图形渲染操作时,能够保证图形渲染的正确性,具体能够达到浏览器渲染的效果。
136.参考附图8

图9所示,基于上述引擎架构,本应用实施例提供了一种图形渲染方法,具体可以包括以下步骤:
137.步骤1:获取容器组件下发的待处理的js指令。
138.其中,在js引擎组件获取到容器组件下发的原始js指令之后,可以通过skia引擎(skcanvas)和图像记录器将js指令存储在显示列表中,从而使得显示列表中可以存储有多个原始js指令,此时的原始js指令中可以包括有效指令和无效指令,为了能够提高图形渲染操作的质量和效率,获取容器组件下发的待处理的js指令可以包括:获取显示列表中包括的所有原始js指令;识别所有原始js指令中包括的无效指令,具体可以通过预设规则对所有原始js指令进行分析处理,以识别出所有原始js指令中所包括的无效指令,该无效指令可以包括被覆盖指令、错误指令等等。在识别出原始js指令中所包括的无效指令之后,可
以删除无效指令,从而获得待处理的js指令。
139.步骤2:建立与js指令相对应的画布环境。
140.步骤3:在js指令包括图形渲染指令时,则在画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、webgl渲染操作。
141.具体的,在建立与js指令相对应的画布环境之后,可以通过封装图形api支持webgl和canvas 2d渲染能力,再通过js关联模块将渲染能力以标准化接口透出到容器的js上下文,从而可以在画布环境内进行2d渲染操作和/或webgl渲染操作。
142.步骤4:对渲染后图形进行显示和/或管理。
143.在一些实例中,在需要对渲染后图形进行显示时,可以利用同层渲染技术将渲染后图形插入或者覆盖到webview容器或者其他容器中,以实现对渲染后图形进行显示。在另一些实例中,对渲染后图形进行显示可以包括:获取与显示器相对应的垂直同步信号;基于垂直同步信号,对渲染后图形进行光栅化处理,并通过显示器对渲染后图形进行显示。
144.在又一些实例中,在需要将cpu中的图片上传至gpu时,相关技术中的图片上传方式通常为通过gpu线程将图片从cpu上传至gpu中,然而,这样图片的上传操作比较耗时,并且图片上传操作的等待时间较长。为了在将图片从cpu上传至gpu中时,缩短主线程上gpu的等待时间,参考附图9所示,本实施例中的图形渲染方法还可以包括以下步骤:
145.步骤11:在js指令包括纹理上传指令时,则确定与纹理上传指令相对应的纹理上传线程,纹理上传线程与用于实现图形渲染操作的图形处理器gpu线程之间同享上下文。
146.步骤12:基于纹理上传线程,将核心处理器cpu中存储的图片上传至gpu,生成gpu纹理对象,并与gpu线程共享gpu纹理对象。
147.具体的,在获取到js指令之后,可以对js指令进行分析处理,以识别js指令所对应的指令类型和执行动作,在js指令包括纹理上传指令时,则可以建立js线程,而后通过所建立的js线程将记录纹理上传指令记录到显示列表displaylist,在每次获取到垂直同步信号vsync时,则可以在gpu线程执行光栅化,将显示列表中的指令解析为图形指令gl,然后将图形送至gpu进行渲染,最终将渲染后图形呈现在显示屏上。
148.需要注意的是,在不需要对渲染后图形进行显示时,则可以将渲染后图形存储在内存或者预设区域中,以可以在需要渲染后图形时,可以对渲染后图形进行调用和使用操作。
149.本实施例中,通过共享gl上下文的方式实现异步上传操作,使得主线程(gpu线程)可以直接使用所上传的图片,具体的,通过js线程来将图片从cpu上传到gpu中,由于js线程与gpu线程是两个线程,因此,实现了异步纹理上传操作,具体通过js线程将图片上传至gpu,可以有效地保证图片上传的质量和效率,并且能够有效缩短图形上传至gpu时所需要的时长,进一步提高了该图形渲染方法的实用性。
150.在另一些实例中,本实施例中的图形渲染方法可以应用于生产者消费者模型中,此时,在获取待处理的js指令之前,本实施例中的方法还可以包括:
151.步骤s21:获取指令写入请求和待写入js指令。
152.步骤s22:基于指令写入请求,将待写入js指令存储在内存缓存区内,以作为待处理的js指令。
153.而后消费者可以通过内存缓存区获取到待处理的js指令,具体的,获取待处理的
js指令可以包括:
154.步骤s23:获取指令调用请求。
155.步骤s24:基于指令调用请求,获取位于内存缓存区中所有待处理的js指令。
156.其中,在生产者消费者模型中,生产者和消费者可以分别在两个线程中实现指令写入和指令调用操作,生产端可以将webgl指令编码写入至内存缓存区,消费者可以定时定期地对内存缓存区中的数据进行解码操作,从而可以批量提交多个js指令。在获取到多个js指令之后,可以将js指令批量提交至gpu,这样可以使得生产端能够一次提交多条指令而无需阻碍,而多线程调度可以提高整体的并行度,不阻塞js线程。
157.本应用实施例提供的技术方案,能够实现如下效果:
158.(1)通过一套代码可以支持android、ios双平台等不同的运行平台,并且还可以支持小程序、小部件、weex等多容器,实现了一种跨平台、跨容器的图形渲染方案;
159.(2)通过jsi技术支持多种不同类型的js引擎,从而实现了跨js引擎操作;
160.(3)通过skia引擎和opengles实现2d渲染操作和webgl渲染操作,能够实现与浏览器内核完全一致的标准接口,从而提高了该图形渲染方案的实用性和适用范围;
161.(4)通过同层渲染技术可以将canvas渲染图嵌入到webview等容器,而在滚动、渲染、事件处理等方面与webview表现一致,用户感觉不到差别,进而保证了该图形渲染操作的质量和效果;
162.(5)该图形渲染方法可以支持主流游戏引擎,具体可以基于统一的游戏适配层支持主流类型的游戏引擎如laya、egret等;另外,该图形渲染方法还可以在店铺、品牌区域等应用场景中有大规模使用,进一步提高了该技术方案的适用范围。
163.图10为本技术实施例提供的一种图形渲染装置的结构示意图;参考附图10所示,本实施例提供了一种图形渲染装置,该图形渲染装置用于执行上述图1b所示的图形渲染方法,具体的,该图形渲染装置可以包括:
164.引擎组件11,用于获取容器组件下发的渲染指令,确定与渲染指令相对应的指令类型和执行操作;
165.画布实现组件12,用于在渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
166.在一些实例中,引擎组件11可以包括:引擎模块11a,包括多个不同类型的引擎单元,用于获取容器组件下发的渲染指令,在多个不同类型的引擎单元中,确定与渲染指令相对应的目标引擎单元,利用目标引擎单元确定与渲染指令相对应的指令类型和执行操作。
167.在一些实例中,引擎组件11还可以包括:引擎关联模块11b,用于将预设的图形应用程序接口与引擎模块进行关联,在渲染指令包括图形绘制指令时,通过图形应用程序接口和图形绘制指令在画布环境内进行图形绘制操作。
168.在一些实例中,画布实现组件12可以包括:
169.canvas画布渲染单元12a,用于在设定的画布环境内通过skia引擎进行图形的2d渲染操作;
170.webgl渲染单元12b,用于在设定的画布环境内进行图形的3d渲染操作。
171.在一些实例中,装置还可以包括:窗体适配组件13,用于部署在预设平台架构上;
窗体适配组件13包括:画布配置模块13a,用于在引擎组件获取容器组件下发的渲染指令之前,建立与操作系统和渲染指令相对应的窗口环境,窗口环境用于显示图形渲染结果,操作系统与容器组件相对应。
172.在一些实例中,窗体适配组件13还可以包括:界面管理模块13b,用于获取渲染后图形,并对渲染后图形进行显示和/或管理。
173.图10所示装置可以执行图1a、图1b、图8

图9所示实施例的方法,本实施例未详细描述的部分,可参考对图1a、图1b、图8

图9所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1a、图1b、图8

图9所示实施例中的描述,在此不再赘述。
174.在一个可能的设计中,图10所示图形渲染装置的结构可实现为一电子设备,该电子设备可以是手机、平板电脑、服务器等各种设备。如图11所示,该电子设备可以包括:第一处理器21和第一存储器22。其中,第一存储器22用于存储相对应电子设备执行上述图1a、图1b、图8

图9所示实施例中提供的图形渲染方法的程序,第一处理器21被配置为用于执行第一存储器22中存储的程序。
175.程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第一处理器21执行时能够实现如下步骤:
176.利用引擎组件获取容器组件下发的渲染指令,确定与渲染指令相对应的指令类型和执行操作;
177.利用画布实现组件在渲染指令包括图形渲染指令时,则在设定的画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
178.进一步的,第一处理器21还用于执行前述图1a、图1b、图8

图9所示实施例中的全部或部分步骤。
179.其中,电子设备的结构中还可以包括第一通信接口23,用于电子设备与其他设备或通信网络通信。
180.另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图1a、图1b、图8

图9所示方法实施例中图形渲染方法所涉及的程序。
181.此外,本实施例通过了一种计算机程序产品,该计算机程序产品包括:计算机程序,当计算机程序被电子设备的处理器执行时,使处理器执行上述图1a、图1b、图8

图9所示方法实施例中图形渲染方法。
182.图12为本技术实施例提供的一种图形渲染装置的结构示意图;参考附图12所示,本实施例提供了一种图形渲染装置,该图形渲染装置可以用于执行上述图2所示的图形渲染方法,具体的,本实施例中的图形渲染装置可以包括:
183.第一获取模块31,用于获取待处理的渲染指令;
184.第一建立模块32,用于建立与渲染指令相对应的画布环境;
185.第一处理模块33,用于在渲染指令包括图形渲染指令时,则在画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
186.在一些实例中,在第一获取模块31获取待处理的渲染指令时,该第一获取模块31
用于执行:获取显示列表中包括的所有原始渲染指令;识别所有原始渲染指令中包括的无效指令;删除无效指令,获得待处理的渲染指令。
187.在一些实例中,在获得渲染后图形之后,本实施例中的第一处理模块33用于:对渲染后图形进行显示和/或管理。
188.在一些实例中,在第一处理模块33对渲染后图形进行显示时,该第一处理模块33用于执行:获取与显示器相对应的垂直同步信号;基于垂直同步信号,对渲染后图形进行光栅化处理,并通过显示器对渲染后图形进行显示。
189.在一些实例中,本实施例中的第一处理模块33用于执行:在渲染指令包括纹理上传指令时,则确定与纹理上传指令相对应的纹理上传线程,纹理上传线程与用于实现图形渲染操作的图形处理器gpu线程之间同享上下文;基于纹理上传线程,将cpu中存储的图片上传至gpu,生成gpu纹理对象,并与gpu线程共享gpu纹理对象。
190.在一些实例中,在获取待处理的渲染指令之前,本实施例中的第一获取模块31和第一处理模块33用于执行以下步骤:
191.第一获取模块31,用于获取指令写入请求和待写入渲染指令;
192.第一处理模块33,用于基于指令写入请求,将待写入渲染指令存储在内存缓存区内,以作为待处理的渲染指令。
193.在一些实例中,在第一获取模块31获取待处理的渲染指令时,该第一获取模块31用于执行:获取指令调用请求;基于指令调用请求,获取位于内存缓存区中所有待处理的渲染指令。
194.图12所示装置可以执行图2

图9所示实施例的方法,本实施例未详细描述的部分,可参考对图2

图9所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2

图9所示实施例中的描述,在此不再赘述。
195.在一个可能的设计中,图12所示图形渲染装置的结构可实现为一电子设备,该电子设备可以是手机、平板电脑、服务器等各种设备。如图13所示,该电子设备可以包括:第二处理器41和第二存储器42。其中,第二存储器42用于存储相对应电子设备执行上述图2

图9所示实施例中提供的图形渲染方法的程序,第二处理器41被配置为用于执行第二存储器42中存储的程序。
196.程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第二处理器41执行时能够实现如下步骤:
197.获取待处理的渲染指令;
198.建立与渲染指令相对应的画布环境;
199.在渲染指令包括图形渲染指令时,则在画布环境内进行图形渲染操作,获得渲染后图形,其中,图形渲染操作包括以下至少之一:2d渲染操作、3d渲染操作。
200.进一步的,第二处理器41还用于执行前述图2

图9所示实施例中的全部或部分步骤。
201.其中,电子设备的结构中还可以包括第二通信接口43,用于电子设备与其他设备或通信网络通信。
202.另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图2

图9所示方法实施例中图形渲染方法所涉及的程序。
203.此外,本实施例通过了一种计算机程序产品,该计算机程序产品包括:计算机程序,当计算机程序被电子设备的处理器执行时,使处理器执行上述图2

图9所示方法实施例中图形渲染方法。
204.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
205.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
206.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
207.这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
208.这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
209.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
210.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
211.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备
或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
212.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献