一种游戏引擎渲染方法及装置制造方法及图纸

技术编号:10248266 阅读:135 留言:0更新日期:2014-07-24 02:29
本发明专利技术公开了一种游戏引擎渲染方法。所述游戏引擎渲染方法包括:执行线程执行JS代码生成渲染命令组;将所述渲染命令组写入预设队列的空闲帧中;渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧;根据读取的所述可用帧中的渲染命令组进行渲染。本发明专利技术还相应公开了一种游戏引擎渲染装置。本发明专利技术实施例所提供的游戏引擎渲染方法及装置,通过设置预设队列,使执行线程与渲染线程分别作为两个独立的执行线程,两部分执行线程的执行很少受对方执行进程的限制,因此,缩短了游戏引擎的程序的循环周期,提高了渲染速度,也提高了渲染效率。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种游戏引擎渲染方法。所述游戏引擎渲染方法包括:执行线程执行JS代码生成渲染命令组;将所述渲染命令组写入预设队列的空闲帧中;渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧;根据读取的所述可用帧中的渲染命令组进行渲染。本专利技术还相应公开了一种游戏引擎渲染装置。本专利技术实施例所提供的游戏引擎渲染方法及装置,通过设置预设队列,使执行线程与渲染线程分别作为两个独立的执行线程,两部分执行线程的执行很少受对方执行进程的限制,因此,缩短了游戏引擎的程序的循环周期,提高了渲染速度,也提高了渲染效率。【专利说明】一种游戏引擎渲染方法及装置
本专利技术涉及移动通信
,更具体而言,涉及一种游戏引擎渲染方法及装置。
技术介绍
作为一款第五代超文本标记语言(HyperText Markup Language5, HTML5)游戏引擎,X-Canvas广泛应用于移动终端的游戏开发中,其工作流程包括JS (JavaScript脚本语言)执行部分和图像渲染部分。当进入游戏后,X-Canvas引擎被激活,开始执行JS程序。如图1所示,步骤S001,执行JS代码。JS执行部分通过执行JS代码生成一组渲染命令,这组渲染命令可以包括图像绘制命令、图形绘制命令、文字绘制命令及绘图环境设置命令,也可以包括采集图像数据的命令;步骤S002,执行渲染。执行渲染命令组所指定的操作,在步骤S002执行,步骤SOOl进入等待,当步骤S002的渲染过程执行完成后,程序进入下一轮运行,步骤SOOl的JS执行部分进入下一组渲染命令的计算。可以发现,X-Canvas采用单线程程序执行模式,所述单线程程序执行模式是指,程序的执行路径是以时间为顺序的串行结构。也就是说,在X-Canvas的程序执行过程中,图像渲染部分必须在JS执行部分执行完成后才能开始执行,而JS执行部分在完成一次计算后,需要等待图像渲染部分执行完成后,才能进行下一次计算。因此,导致游戏引擎的程序循环周期过长,渲染效率过低。
技术实现思路
有鉴于此,本专利技术实施例提供一种游戏引擎渲染方法及装置,能够缩短程序的循环周期,提高渲染效率。第一方面,本专利技术实施例提供了一种游戏引擎渲染方法,所述方法包括:执行线程执行JS代码生成渲染命令组;将所述渲染命令组写入预设队列的空闲帧中;渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧;根据读取的所述可用帧中的渲染命令组进行渲染。在第一方面的第一种可能的实现方式中,将所述渲染命令组写入预设队列的空闲帧中之前包括:判断所述预设队列是否有空闲帧;若是,一直执行将所述渲染命令组写入预设队列的空闲帧的步骤,若否,则等待。结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,将所述渲染命令组写入预设队列的空闲帧中之后包括:执行线程通知渲染线程;渲染线程根据所述通知执行从所述预设队列按顺序读取已经写入渲染命令组的可用帧的步骤。结合第一方面或第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧包括:渲染线程从所述预设队列按先入先出的顺序读取已经写入渲染命令组的可用帧。结合第一方面或第一方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧时,若发现没有可用帧,则重复执行上一渲染操作。结合第一方面或第一方面的第一种或第二种或第三种或第四种可能的实现方式,在第五种可能的实现方式中,所述根据读取的可用帧中的渲染命令组进行渲染后,所述渲染线程将所述被读取的可用帧标识为空闲帧,使得所述执行线程执行写入操作时将生成的渲染命令组按覆盖的方式写入。第二方面,本专利技术实施例还提供了一种游戏引擎渲染装置,所述装置包括:生成单元,用于执行线程执行JS代码生成渲染命令组;写入单元,用于将所述渲染命令组写入预设队列的空闲帧中;读取单元,用于从所述预设队列按顺序读取已经写入渲染命令组的可用帧;渲染单元,用于根据所述读取单元读取的所述可用帧中的渲染命令组进行渲染。在第二方面的第一种可能的实现方式中,所述装置还包括:判断单元,其中,所述判断单元,用于判断所述预设队列是否有空闲帧;所述写入单元在所述预设队列有空闲帧时,一直执行将所述渲染命令组写入预设队列的空闲帧的步骤;在所述预设队列无空闲帧时,执行等待。结合第二方面及第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括,通知单元,其中,所述通知单元,用于当所述写入单元将所述渲染命令组写入预设队列的空闲帧中后,通知渲染线程。结合第二方面及第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括标识单元,所述标识单元,用于在所述渲染单元完成渲染之后,将所述被读取的可用帧标识为空闲帧,以便于所述写入单元将生成的渲染命令组按覆盖的方式写入。由以上技术方案可知,本专利技术实施例所提供的游戏引擎渲染方法及装置,首先,执行线程执行JS代码生成渲染命令组,将渲染命令组写入预设队列的空闲帧中,而渲染线程从预设队列按顺序读取已经写入渲染命令组的可用帧,根据读取的可用帧中的渲染命令组进行渲染。由此可见,本专利技术所提供的技术方案通过设置预设队列,使执行线程与渲染线程分别作为两个独立的执行线程,两部分执行线程的执行很少受对方执行进程的限制,因此,缩短了游戏引擎的程序的循环周期,提高了渲染速度,也提高了渲染效率。【专利附图】【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本专利技术的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本专利技术的主旨。图1为本专利技术实施例提供的现有的渲染方法流程图;图2为本专利技术实施例提供的渲染方法的第一种实施方式方法流程图;图3为本专利技术实施例提供的渲染方法的第二种实施方式方法流程图;图4为本专利技术实施例提供的渲染方法的第三种实施方式方法流程图;图5为本专利技术提供的双线程渲染方式的第一示例图;图6为本专利技术提供的双线程渲染方式的第二示例图;图7为本专利技术实施例提供的渲染装置的第一种实施方式结构示意图;图8为本专利技术实施例提供的渲染装置的第二种实施方式结构示意图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参见图2,为本专利技术实施例提供的渲染方法的第一种实施方式方法流程图,本实施例中,执行线程的工作内容包括:执行JS代码生成渲染命令组;将所述渲染命令组写入预设队列的空闲帧,并执行下一次计算,重复上述步骤;渲染线程的工作内容包括:从所述预设队列按顺序读取已经写入渲染命令组的可用帧;根据读取的所述本文档来自技高网
...

【技术保护点】
一种游戏引擎渲染方法,其特征在于,所述方法包括:执行线程执行JS代码生成渲染命令组;将所述渲染命令组写入预设队列的空闲帧中;渲染线程从所述预设队列按顺序读取已经写入渲染命令组的可用帧;根据读取的所述可用帧中的渲染命令组进行渲染。

【技术特征摘要】

【专利技术属性】
技术研发人员:方任扬
申请(专利权)人:优视科技有限公司
类型:发明
国别省市:北京;11

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

1