一种图形绘制方法和装置制造方法及图纸

技术编号:21627193 阅读:34 留言:0更新日期:2019-07-17 10:33
本申请公开了一种图形绘制方法和装置,该方法包括:接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。这样,通过将多条指令整合为一个指令集,运行器中的JS引擎可以直接调用指令集进行图形绘制,相较于现有技术而言,由于JS引擎由调用多次指令进行图形绘制改为调用一次指令集进行图形绘制,因此,可以减少JS到C++代码的调用次数,提高运行器的运行效率。

A Graphic Drawing Method and Device

【技术实现步骤摘要】
一种图形绘制方法和装置
本申请涉及计算机
,尤其涉及一种图形绘制方法和装置。
技术介绍
在2D图形或3D图形的绘制中,为了提高运行效率,在不依赖于浏览器为载体的情况下,可以使用运行器(runtime)进行图形绘制。运行器可以基于原生应用开发(例如iOS、android原生框架)对JavaScript(以下简称JS)引擎进行封装,实现JS语言与C++语言的相互调用,并通过OpenGLES(OpenGLforEmbeddedSystems)进行画面显示。通常,运行器中可以包含JS引擎和C++引擎框架,运行器在实现JS语言与C++语言的相互调用时,JS引擎可以对JS语言进行解析,将解析后的JS语言通过JS引擎中的引擎接口调用至C++引擎框架中以实现C++语言对JS语言的调用,同时,JS引擎也可以通过该引擎接口将C++语言调用至JS语言中,以实现JS语言与C++语言的相互调用。在实现JS语言与C++语言的相互调用后,可以通过OpenGLES进行渲染处理并显示画面。在实际应用中,运行器在绘制图形时,JS引擎可以将用于绘制图形的WebGL指令(使用JS语言编写)进行解析并调用至C++的引擎框架来完成图形的绘制。然而,由于webGL指令特别底层,JS引擎往往需要调用多次WebGL指令才可以完成一次图形绘制。这样,由于JS引擎需要频繁调用WebGL指令才能完成一次图形绘制,导致JS引擎的效率比较低,运行器的运行效率比较低。
技术实现思路
本申请实施例提供一种图形绘制方法和装置,用于解决现有技术中运行器在绘制图形时,其内部的JS引擎的引擎接口需要频繁调用WebGL指令才能完成一次图形绘制,导致运行器的运行效率比较低的问题。第一方面,提供了一种图形绘制方法,包括:接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。第二方面,提供了一种图形绘制装置,包括:接收单元,接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;确定单元,根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;绘制单元,根据所述指令集中包含的多条指令,对所述目标图形进行绘制。第三方面,提供了一种运行器,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例提供的技术方案,运行器在进行图形绘制时,接收对目标图形的绘制请求,根据所述绘制请求中包含的图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令,根据所述指令集中包含的多条指令,对所述目标图形进行绘制。这样,通过将多条指令整合为一个指令集,运行器中的JS引擎可以直接调用指令集进行图形绘制,相较于现有技术而言,由于JS引擎由调用多次指令进行图形绘制改为调用一次指令集进行图形绘制,因此,可以减少JS到C++代码的调用次数,提高运行器的运行效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请的一个实施例图形绘制方法的流程示意图;图2为本申请的一个实施例图形绘制方法的示意图;图3为本申请的一个实施例图形绘制方法的示意图;图4为本申请的一个实施例图形绘制设备的结构示意图;图5为本申请的一个实施例运行器的结构示意图。具体实施方式HTML5是一种HTML标准,可以通过canvas(画布)提供标准的绘图API,通过这些绘图API可以将Web画面展现更好的效果。另外,还可以通过WebGL(英文全称:WebGraphicsLibrary)绘图协议对显卡GPU进行控制,为HTML5Canvas提供硬件加速渲染,以提高2D或3D的显示效率和显示效果。现有技术中,HTML5以及WebGL均使用JavaScript语言(以下简称JS语言)开发,在使用HTML5或WebGL绘制图形时,通常依托浏览器为载体。随着市场的需求,大部分应用需要打包成APP,即不再以浏览器为载体运行,此时就产生了运行器。运行器可以基于原生应用开发对JS引擎进行封装,实现JS语言与C++语言的相互调用,并通过OpenGLES进行画面显示。现有技术中,运行器的通用做法主要由两种,一种是对WebGL指令进行直接封装,另一种是对WebGL指令进行高级封装。但是,在实际应用中,上述两种做法得到的运行器都有一定的局限性,具体地:对WebGL指令进行直接封装的方式,由于WebGL指令特别底层,在使用运行器绘制一张简单的图片时,往往需要调用多条(大于10条)WebGL指令。这样,由于调用的指令的条数比较多,导致通过JS引擎对JS语言和C++语言进行相互调用时效率比较低,严重影响运行器的运行效率和整体性能,从而影响用户体验。在对WebGL指令进行高级封装的方式中,JS引擎不直接调用WebGL指令,而是通过在运行器中直接调用更高级的JS对象或方法。比如,提供类似于HTML的dom对象,提供图片、文字等接口。然而,虽然这种方式能减少大量的JS语言和C++语言的相互调用,但是,由于需要对象层提供明确的规则和限制,导致系统开放性和扩展性受影响,特别是针对3D游戏领域,由于3D游戏自定义功能比较多,对JS对象或方法的需求不明确,导致不可能设计出通用的运行器。由此可见,现有的运行器普遍存在运行效率低、扩展性差的缺点。为了解决上述问题,本申请实施例提供一种图形绘制方法和装置,该方法包括:接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。本申请实施例提供的技术方案,可以将用于绘制图形的多条WebGL指令整合为一个指令集,运行器在绘制图形时,运行器中的JS引擎可以直接调用指令集进行图形绘制,相较于现有技术而言,由于JS引擎由调用多次指令进行图形绘制改为调用一次指令集进行图形绘制,因此,可以减少JS到C++代码的调用次数,提高运行器的运行效率。下面结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。需要说明的是,本申请实施例提供的图形绘制方法可以由运行器实现,所述运行器中可以包含JS引擎、C++引擎框架以及OpenGLES,其中,JS引擎可以是开源的引擎,例如Goog本文档来自技高网...

【技术保护点】
1.一种图形绘制方法,其特征在于,包括:接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。

【技术特征摘要】
1.一种图形绘制方法,其特征在于,包括:接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形进行绘制的多条指令;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。2.如权利要求1所述的方法,其特征在于,根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,包括:根据所述图形绘制请求中包含的所述图形标识,从存储设备中查找与所述图形标识对应的指令集,所述存储设备中存储有不同的图形标识以及与不同的图形标识对应的指令集。3.如权利要求2所述的方法,其特征在于,所述指令集中包含图形数据;根据所述指令集中包含的多条指令,对所述目标图形进行绘制,包括:根据所述指令集中包含的多条指令以及所述图形数据,对所述目标图形进行绘制。4.如权利要求2所述的方法,其特征在于,所述指令集中包含图形数据的数据标识,所述存储设备中还存储有与所述指令集对应的一个或多个数据区,所述数据区中包含与所述数据标识对应的图形数据;根据所述指令集中包含的多条指令,对所述目标图形进行绘制,包括:从所述存储设备中查找与所述指令集对应的其中一个所述数据区;根据所述指令集中包含的数据标识,从查找到的所述数据区中确定与所述数据标识对应的图形数据;根据所述图形数据以及所述指令集中包含的多条指令,对所述目标图形进行绘制。5.如权利要求2至4任一项所述的方法,其特征在于,所述存储设备中存储有不同类型的所述指令集,不同类型的所述指令集对应所述目标图形的不同显示状态;根据所述指令集中包含的多条指令,对所述目标图形进行绘制,包括:当所述目标图形的显示状态发生变化时,确定与所述目标图形变化后的显示状态对应的指令集;根据所述指令集中包含的多条指令,对所述目标图形进行绘制。6.如权利要求1所述的方法,其特征在于,所述方法还包括:在对应用中包含的多个所述目标图形进行绘制时,建立所述应用中的多个所述目标图形的第一树形结构,所述第一树形结构中包含多个节点,每一个所述节点分别对应其中一个所述目标图形;若上一帧应用的所述第一树形结构中存在多个节点的父子级关系未发生变化,则将所述上一帧所述应用中父子级关系未发生变化的节点对应的所述目标图形的绘制数据复制到下一帧应用的所述目标图形的绘制数据中,以对所述下一帧应用中的所述目标图形进行绘制。7.如权利要求6所述的方法,其特征在于,所述方法还包括:针对每一帧所述应用建立第二树形结构,所述第二树形结构中包含多个节点,每一个所述节点分别对应所述应用中包含的其中一个所述目标图形;确定所述第二树形结构中包含的每一个节点对应的指令集;根据每一个所述节点对应的指令集,对每一个所述节点进行绘制,以对所述应用中包含的多个所述目标图形进行绘制。8.一种图形绘制装置,其特征在于,包括:接收单元,接收对目标图形的绘制请求,所述绘制请求中包含所述目标图形的图形标识;确定单元,根据所述绘制请求中包含的所述图形标识,确定与所述图形标识对应的指令集,所述指令集中包含对所述目标图形...

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

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

1