一种基于WebGL的图形绘制方法、装置及系统制造方法及图纸

技术编号:22913785 阅读:30 留言:0更新日期:2019-12-24 21:48
本申请公开了一种基于WebGL的图形绘制方法、装置及系统。该方法包括:运行器接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;运行器根据所述图形绘制规则指令集对所述目标图形进行绘制。通过该技术方案,可以解决图形绘制效率较低的问题。

A drawing method, device and system based on webgl

【技术实现步骤摘要】
一种基于WebGL的图形绘制方法、装置及系统
本申请涉及计算机图形绘制
,尤其涉及一种基于WebGL的图形绘制方法、装置及系统。
技术介绍
在网络游戏、动画展现等应用场景中,需要进行大量的多维图形(比如2D图形或3D图形)的绘制工作。图形绘制的快慢在较大程度上决定各种应用、程序对用户相应操作的响应速度,进而影响到该应用或程序的用户使用量。为提高图形绘制效率,在不依赖于浏览器为载体的情况下,一般使用专门开发的运行器(RunTime)如图1a,运行器的核心组成部分包括JS解析引擎和C++引擎框架,前者用于对JS项目中的指令集进行识别、解析,后者用于调用封装的C语言函数对指令进行执行操作。参见图1b,在运行器内运行JS代码编写的JS项目时,由运行器的JS解析引擎对JS代码项目中的指令集进行解析,然后将解析后的各条指令(如图中第一压栈中的A、B、C等)以“压栈”方式推送到C++引擎框架中执行,再通过OpenGLES进行渲染,最终完成预定图形的绘制工作。按照上述方式进行的图形绘制,指令集中的每条指令将按照“压栈”的顺序逐条执行,这种方式能够满足一些简单的应用场景,对于一些复杂的应用场景却“爱莫能助”。在现实应用中,指令集中的指令并非均是按序执行。比如,可能大量存在指令跳转(IF语句)的情形,即在满足预设条件时,由本条指令跳转到另一条指令执行(比如图1b中C执行后,在一定条件下执行D,在另一条件下执行F),而不是执行紧随本条指令之后的那条指令;再比如,可能大量存在指令循环(WHILE语句)的情形,即在满足预设循环条件时,由本条指令回跳到其先前的某条指令,直至满足预设结束循环条件,才跳出循环执行随后的指令。这种具有跳转、循环等复杂应用场景下,由于“压栈”顺序固定,针对每周新的执行顺序必须重新组装、重新压栈,然后推送新的压栈的指令到C++引擎框架中执行。显然,这种方式将降低指令的重用性,不能适用复杂场景需要,浪费较多资源,影响图形绘制的效率。
技术实现思路
本申请实施例提供一种基于WebGL的图形绘制方法和装置,用于增强指令重用性,扩展适用场景,节约资源和提高或改善图形绘制效率。一方面,本申请实施例提供的基于WebGL的图形绘制方法包括:运行器接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;运行器根据所述图形绘制规则指令集对所述目标图形进行绘制。另一方面,本申请实施例提供的基于WebGL的图形绘制装置包括:接收单元,用于接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;绘制单元,用于根据所述图形绘制规则指令集对所述目标图形进行绘制。再一方面,本申请实施例提供的基于WebGL的图形绘制系统,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上权利要求所述的方法的步骤。又一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上权利要求所述的方法的步骤。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例提供的技术方案,在运行器接收的目标图形的绘制请求中其包含的基于WebGL的图形绘制规则指令集中的指令,至少包含一条对寄存器进行操作的指令,运行器根据这样的图形绘制规则指令集对目标图形进行绘制。由于寄存器处于汇编语言级别,在指令集中包含这种对寄存器进行操作的指令,可以通过其“串联”起其他指令,在JS解析器解析完后以压栈方式推送执行时,将按照对寄存器操作的结果执行本指令和指令集中的其他指令,从而有利于增强了代码的重用性,提高图形绘制的效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1a为Web引擎端与运行器的框架结构示意图;图1b为运行器中指令压栈方式示意图;图2为本申请基于WebGL的图形绘制方法实施例的流程示意图;图3为本申请基于WebGL的图形绘制装置实施例的结构示意图;图4为本申请基于WebGL的图形绘制系统实施例的结构示意图。具体实施方式在对本申请的各种实施例进行充分介绍之前,为便于理解,先对一些基本背景进行介绍。随着计算机技术的发展,人们对计算机信息处理的响应速度要求越来越高,尤其在一些实时应用场景之中,更是如此。比如,常见的网络对战型的实时性网络游戏,这些游戏通常涉及大量目标对象的动作、场景、角色、能力值、武器装备等的迅速变换,为更好呈现视觉效果,需要进行“任务艰巨”的图形绘制,图形绘制成为这类软件吸引用户量的关键瓶颈。HTML5协议在网络展现上的广泛、深入的发展,对网络Web画面的显现提出了更高的要求,早期,人们通过canvas(画布)提供的标准绘图API实现丰富画面的展现。但是,这种方式的效果有限,后续逐步出现了WebGL(英文全称:WebGraphicsLibrary)接口协议,该接口协议能够对显卡GPU进行直接控制,为HTML5Canvas提供硬件加速渲染,大大提高了2D或3D的显示效率和显示效果。WebGL接口与HTML5协议类似,在项目应用层上,使用JavaScript语言(以下简称JS语言)开发。在将Web引擎端的JS项目导入到运行器中运行时,将由运行器中的JS解析器进行解析,然后将解析后的指令按照执行顺序以压栈方式推送给C++引擎框架中执行。这种作业模式导致以JS语言编写的判断型语句如果要得以实现,必须对判断的多个分支分别进行完整的编译,形成指令栈,从而降低了指令代码的重用性,不利于提高图形绘制的效率。而且,也不能适应一些复杂的运算场景,导致这种方式的运用受到极大限制。为了解决上述问题,本申请实施例提供一种基于WebGL的图形绘制方法,参见图2,该图示出的实施例方法包括:S201:运行器接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;S202:运行器根据所述图形绘制规则指令集对所述目标图形进行绘制。为了更好理解该技术方案,在前述背景介绍的基础上,对该方案中的一些重要信息进行说明:上述技术方案中步骤S201、S202涉及的执行主体为“运行器”,运行器中通常包含三部分:一是JS解析引擎部分,比如,具有该功能的V8、JSC等。从Web引擎端获得的代码尽管包含WebGL接口的一些内容,但仍然是JS代码,需要通过该JS解析引擎解析、识别,转换成运行器其他部分可操作的目标代码;二是C++引擎框架部分,该部分本文档来自技高网
...

【技术保护点】
1.一种基于WebGL的图形绘制方法,其特征在于,包括:/n运行器接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;/n运行器根据所述图形绘制规则指令集对所述目标图形进行绘制。/n

【技术特征摘要】
1.一种基于WebGL的图形绘制方法,其特征在于,包括:
运行器接收对目标图形的绘制请求,所述绘制请求中包含基于WebGL的图形绘制规则指令集,所述图形绘制规则指令集至少包含一条对寄存器进行操作的指令,所述寄存器为内存中的临时存储区域;
运行器根据所述图形绘制规则指令集对所述目标图形进行绘制。


2.根据权利要求1所述的方法,其特征在于,所述图形绘制请求中包含所述图形绘制规则指令以及作为所述图形绘制规则指令的参数的预定操作类型和操作对象;
所述运行器根据所述图形绘制规则指令集对所述目标对象进行绘制,具体包括:
运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作,以对所述目标图形进行绘制。


3.根据权利要求2所述的方法,其特征在于,当所述图形绘制规则指令为对寄存器进行操作的指令以外的指令时,所述操作对象为操作对象索引,则运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作,包括:
运行器根据所述操作对象索引从数据区中获取所述操作对象索引对应的操作数据;
运行器根据所述图形绘制规则指令按照所述预定操作类型对所述操作数据进行操作。


4.根据权利要求3所述的方法,其特征在于,所述数据区包括全局数据区和局部数据区,所述操作对象索引包括全局数据区内第一操作数据的全局索引和局部数据区内第二操作数据的局部索引,则运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作,包括:
运行器根据所述全局索引从全局数据区获取第一操作数据,根据所述局部索引从局部数据区内获取第二操作数据;
运行器根据所述图形绘制规则指令按照所述预定操作类型对第一操作数据和第二操作数据进行操作。


5.根据权利要求4所述的方法,其特征在于,所述全局数据区由Web引擎设置,在图形绘制之前或之时由Web引擎端同步到运行器的数据区。


6.根据权利要求2所述的方法,其特征在于,当所述图形规则指令为对寄存器进行操作的指令时,
所述操作对象包括操作对象索引和寄存器索引,则运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作,包括:
运行器根据所述操作对象索引从数据区中获取所述操作对象索引对应的操作数据,并写入到所述寄存器索引对应的寄存器内;
运行器根据所述图形规则指令按照所述预定操作类型对所述寄存器内的操作数据进行操作;
或者,所述操作对象包括寄存器索引,则运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作,包括:
运行器将预定数据写入所述寄存器索引对应的寄存器内,或者,在运行器根据所述图形绘制规则指令以及所述预定操作类型对所述操作对象进行操作之前,将预定数据写入所述寄存器索引对应的寄存器内;
运行器根据所述图形绘制规则指令按照所述预定操作类型对所述寄存器内的操作数据进行操作。


7.根据权利要求6所述的方法,其特征在于,所述预定操作类型为判断型操作,则所述运行器根据所述图形规则指令按照所述预定操作类型对所述寄存器内的操作数据进行操作,包括:
运行器判断所述寄存器内的操作数据是否满足预定条件;如果满足,则跳转到预设的图形绘制规则指令,以便运行器执行所述预设的图形绘制规则指令对目标图形进行绘制。


8.根据权利要求6所述的方法,其特征在于,所述预定操作类型为运算型操作,则所述运行器根据所述图形规则指令按照所述预定操作类型对所述寄存器内的操作数据进行操作,包括:
运行器根据所述图形规则指令对所述寄存器内的操作数据进行运算操作。


9.根据权利要求8所述的方法,其特征在于,所述寄存器索引包括第一寄存器索引和第二寄存器索引,则运行器根据所述...

【专利技术属性】
技术研发人员:谢成鸿
申请(专利权)人:搜游网络科技北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1