一种渲染方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种渲染方法及装置。
背景技术
渲染,是将基于对象的高级描述转换成在某种显示设备上显示的图形或图像。例如,在将三维物体或场景的数学模型转换成位图图形的过程中,将发生图形渲染的操作。图形渲染的另一个实例是将超文本标记语言(Hypertext Markup Language,HTML)文件转换成在计算机监视器上显示的图形。
渲染在浏览器中的应用,目前主要是浏览器(实际是浏览器的渲染引擎)使用HTML5的canvas标签进行渲染。canvas标签只是图形容器,必须使用脚本(JavaScript脚本,后简称JS脚本)来绘制及渲染图形。具体地,canvas标签可以把一个绘图API展现给JS脚本,以使JS脚本能够调用该绘图API。如果网页中包含canvas标签,则可以通过JS脚本调用canvas标签展现的绘图API,从而实现在canvas标签所定义的区域范围内进行渲染。
现有的基于canvas的渲染存在的问题在于:浏览器在通过执行JS脚本进行渲染前,在通过执行JS脚本获取到待渲染对象的各属性(如透明度、颜色等)的名称,以及各属性的目标值后,会采用if语句(if语句是JS脚本语句的一种)逐一判断待渲染对象的哪些属性需要进行渲染,此外,会逐一确定出需要进行渲染的各属性的目标值。其中,执行JS脚本获取待渲染对象的各属性的名称及相应的目标值的方式一般包括:浏览器会根据待渲染对象(如游戏人物“精灵A”)的对象描述,调用相应类(如游戏人物“精灵”这个类)的模板创建类的实例,创建出的该实例中,包含待渲染对象的各属性的名称及目标值;JS脚本可以获取该实例的各属性的名称及目标值。
接上文,当浏览器通过执行JS脚本,确定出待渲染对象需要进行渲染的各属性的名称,以及各属性的目标值后时,后续在进行待渲染对象的渲染时,浏览器就可以调用与各属性的名称相对应的渲染函数执行:根据属性的目标值对待渲染对象进行渲染。从而使渲染出的图形或图像的属性的值与目标值相同。
采用if语句确定所述各属性值的具体语句如下所示:
if(alpha){
处理alpha
}else if(scaleX){
处理ScaleX显示
}else if(clip){
处理裁剪显示
}else if(filter){
处理滤镜相关
}
其中,上述语句中诸如“处理alpha”,是指将alpha(透明度)这一属性的目标值赋值给该属性。其他类似语句含义与此类似。
现有技术中的上述渲染方式存在的问题在于,为了确定用于渲染待渲染对象的渲染函数,会采用if语句逐一进行各属性的目标值和基准值的比对,从而产生巨大的判断运算量,耗费大量的处理资源。
类似的,渲染引擎采用其他方式进行渲染时,但凡会采用if语句逐一进行各属性的目标值和基准值的比对,都会导致产生巨大的判断运算量,从而耗费大量的处理资源。
发明内容
本申请实施例提供一种渲染方法,用于解决现有技术中为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而耗费大量处理资源的问题。
本申请实施例还提供一种渲染装置,用于解决现有技术中为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而耗费大量处理资源的问题。
本申请实施例采用下述技术方案:
一种渲染方法,包括:
确定待渲染对象的处理逻辑链标识;所述处理逻辑链标识,根据表征所述待渲染对象所需求的渲染函数类型的信息生成;
确定与所述处理逻辑链标识对应的处理逻辑链;所述处理逻辑链,是渲染函数构成的集合;
利用所述处理逻辑链执行渲染操作。
一种渲染装置,包括:
标识确定单元,用于确定待渲染对象的处理逻辑链标识;所述处理逻辑链标识,根据表征所述待渲染对象所需求的渲染函数类型的信息生成;
逻辑链确定单元,用于确定与所述待渲染对象的处理逻辑链标识对应的处理逻辑链;所述处理逻辑链,是渲染函数构成的集合;
操作执行单元,用于利用所述处理逻辑链执行渲染操作。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
由于能够确定待渲染对象的处理逻辑链标识,进而根据该标识确定对应的处理逻辑链并利用该处理逻辑链对待渲染对象执行渲染操作,无需像现有技术那样为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而本方案可以避免耗费大量的处理资源。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种实现渲染方法的具体实施流程图;
图2为本申请实施例1提供的确定待渲染对象的处理逻辑链标识的示意图;
图3为本申请实施例1提供的确定与所述待渲染对象的处理逻辑链标识对应的处理逻辑链的示意图;
图4为本申请实施例1在实际场景中的工作流程示意图;
图5为本申请实施例2提供的渲染方法的实施流程示意图;
图6为本申请实施例2提供的待渲染对象X、Y和Z中包含的待渲染的属性示意图;
图7为本申请实施例2提供的确定待渲染对象X、Y和Z的处理逻辑链标识示意图;
图8为本申请实施例2提供的确定与所述待渲染对象X、Y和Z的处理逻辑链标识对应的处理逻辑链示意图;
图9为本申请实施例3提供的渲染装置示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
为解决现有技术中为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而耗费大量处理资源的问题,本申请实施例1提供一种渲染方法。该方法的执行主体,可以但不限于为手机、平板电脑、个人电脑(Personal Computer,PC)以及任何可以运行有所述方法设备中的至少一种。此外,该方法的执行主体,也可以是运行在所述设备中的诸如浏览器等执行器。
为便于描述,下文以该方法的执行主体为浏览器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为浏览器只是一种示例性的说明,并不应理解为对该方法的限定。
具体地,实施例1提供的渲染方法的实施流程示意图如图1所示,包括如下主要步骤:
步骤11,浏览器确定待渲染对象的处理逻辑链标识;
该待渲染对象,是指将要被渲染,并且在渲染后可以显示在屏幕上的对象。具体而言,浏览器可以通过执行JS脚本,实现:根据基于对象的描述(描述中会包含对象的属性,以及相应的属性值),利用对象对应的类的模板创建实例作为该待渲染对象。其中,所述JS脚本中,会定义所述类。
比如,假设浏览器要渲染出“精灵A”(是一种人物图形),那么,浏览器通过执行JS脚本,可以实现根据对于“精灵A”的描述,利用“精灵”这个类的模板创建“精灵A”的实例。
本申请实施例中,生成的该“精灵A”的实例中,除了包含“精灵A”的属性和属性值外,还可以包含处理逻辑链标识;或者,该实例中除了包含“精灵A”的属性和属性值外,也可以不包含处理逻辑链标识,而是包含表征所述待渲染对象所需求的渲染函数类型的信息。由于表征所述待渲染对象所需求的渲染函数类型的信息,也可以用于表征所述待渲染对象的待渲染的属性,因此所述信息,比如可以包括所述待渲染对象所需求的各渲染函数分别能够渲染的属性的标识。属性的标识比如可以是一个二进制数或者其他进制的数。
当所述实例中,包含处理逻辑链标识时,所述实例中包含的处理逻辑链标识的生成方式可以包括:
首先,根据基于对象的描述中包含的表征待渲染对象所需求的渲染函数类型的信息——如确定出表征待渲染对象所需求的透明度渲染函数的信息为:00000010;表征待渲染对象所需求的矩阵处理函数的信息为:00000100;表征待渲染对象所需求的裁剪处理函数的信息为00001000。本申请实施例中,可以将表征待渲染对象所需求的渲染函数类型的信息,预先设置到所述基于对象的描述中。
然后,根据表征待渲染对象所需求的渲染函数类型的信息,生成渲染逻辑链标识——沿用上例,假设对上述所有二进制数执行或运算,可以得到作为渲染逻辑链标识的运算结果00001110。
最后,根据生成的渲染逻辑链标识,利用对象对应的类的模板创建实例作为待渲染对象,生成的该实例中包含该渲染逻辑链标识。
待渲染对象需求的渲染函数有透明度处理函数、矩阵处理函数和裁剪处理函数,则通过二进制数或运算,得到运算结果为00001111,作为表征该待渲染对象需求的渲染函数类型的信息,即为该待渲染对象的处理逻辑链标识。
当所述实例中不包含处理逻辑链标识,而是包含表征所述待渲染对象所需求的渲染函数类型的信息时,采用下述第一种方式实现步骤11;当所述实例包含处理逻辑链标识时,采用下述第二种方式实现步骤11。
以下对两种方式进行具体介绍。
第一种方式:确定表征待渲染对象需求的渲染过程包含的渲染函数的信息,并根据所述信息,生成相应的处理逻辑链标识;
第一种方式可以包括以下三个子步骤:
子步骤一,通过执行JS脚本,从浏览器利用类的模板创建出的实例中,获取待渲染对象的待渲染属性的名称——如确定出的名称为alpha、ScaleX、clip;
子步骤二,根据通过执行子步骤一确定出的属性名称,确定所述表征待渲染对象需求的渲染过程包含的渲染函数的信息——如确定出分别对应于alpha、ScaleX、clip的渲染函数的信息依次为00000010、00000100和00001000;
子步骤三,根据表征待渲染对象所需求的渲染函数类型的信息,生成渲染逻辑链标识——沿用上例,假设对上述所有二进制数执行或运算,可以得到作为渲染逻辑链标识的运算结果00001110。
以下结合图2,说明第一种方式的具体实现方式。
如图2所示,首先通过执行JS脚本,从浏览器利用类的模板创建出的实例中,分别获取待渲染对象A~N的待渲染属性的名称:对象属性A1~A4,…,对象属性B1~B4,…,对象属性N1~N4,…;然后根据确定的属性名称,确定所述表征待渲染对象需求的渲染过程包含的渲染函数的信息;最后分别确定待渲染对象A~N的处理逻辑链标识A~N。
第二种方式:通过执行JS脚本,直接从实例中获取处理逻辑链标识。
处理逻辑链标识,后续可以作为查询相应的处理逻辑的查询依据。具体如何根据处理逻辑链标识进行查询,以及处理逻辑链标识与处理逻辑之间的映射关系是如何建立的,请参照后文的介绍。
比如浏览器通过执行JS脚本,从浏览器利用类的模板创建出的实例中,获取所述待渲染对象的处理逻辑链标识a。
步骤12,浏览器确定与通过执行步骤11确定出的处理逻辑链标识对应的处理逻辑链;
所述处理逻辑链,是渲染函数构成的集合。
为了确定与处理逻辑链标识对应的处理逻辑链,本申请实施例中,可以预先建立起处理逻辑链标识与处理逻辑链的映射关系。
比如,可以预先通过穷举方式,将所有可能用于渲染的渲染函数进行组合,并根据得到的各组合中的渲染函数的信息(如前文所实例的二进制数),生成分别对应于所述各组合的处理逻辑链标识。具体如何生成处理逻辑链标识,可以参见前文的说明,此处不再赘述。
例如,当所有可能用于渲染的渲染函数有10个时,通过穷举方式,可以得到的组合方式数量为:
即包括1528种组合方式,相应的,可以计算得到1528个处理逻辑链标识。
再例如,若有分别对应于待渲染的属性“透明度”、“矩阵”、“画布缓存”和“滤镜”的渲染函数,那么,得到的组合包括:{0}(表示组合为空)、{透明度}、{矩阵}、{画布缓存}、{滤镜}、{透明度+矩阵}、{透明度+画布缓存}、{透明度+滤镜}、{矩阵+画布缓存}、{矩阵+滤镜}、{画布缓存+滤镜}、{透明度+矩阵+画布缓存}、{透明度+矩阵+滤镜}、{透明度+画布缓存+滤镜}、{矩阵+画布缓存+滤镜}、{透明度+矩阵+画布缓存+滤镜}。一共为 种组合方式,则对应的处理逻辑链标识也有16个。
在按照上述方式得到各组合,并计算出相应的处理逻辑链标识后,就可以建立起处理逻辑链标识和各组合分别包含的渲染函数的映射关系。前文已经提到处理逻辑链是渲染函数构成的集合,那么,建立该映射关系,也就是建立处理逻辑链标识和处理逻辑链的映射关系。
各处理逻辑链分别包含的渲染函数,以及上述映射关系,均可以由浏览器从服务器处下载至浏览器本地,以便后续根据处理逻辑链标识查询相应的处理逻辑链,此外,以便浏览器调用查询到的处理逻辑链包含的渲染函数进行渲染操作。
基于建立的上述映射关系,具体地,步骤12可以包括以下两个子步骤:
(1)根据待渲染对象的处理逻辑链标识,查询预先设置的对应于不同处理逻辑链标识的处理逻辑链;
比如,沿用上例,根据待渲染对象的处理逻辑链标识,可查询预先设置的对应于1528个不同的处理逻辑链标识的处理逻辑链。
(2)若查询到所述待渲染对象的处理逻辑链标识的处理逻辑链,则将查询到的处理逻辑链,确定为对应于所述待渲染对象的处理逻辑链标识的处理逻辑链。
以下结合图3,说明步骤12的一种实际的具体实现方式。
如图3所示,根据待渲染对象的处理逻辑链标识a~n,查询预先设置的对应于处理逻辑链标识a~n的处理逻辑链,可以得到以下查询结果:
处理逻辑链标识a对应的处理链逻辑链为:透明度调整函数+矩阵处理函数+画布缓存处理函数+样式选择函数;
处理逻辑链标识b对应的处理逻辑链为:自定义渲染函数+裁剪处理函数+滤镜种类选择函数+调整透明度函数;
……;
处理逻辑链标识n对应的处理逻辑链为:透明度调整函数+滤镜种类选择函数+样式选择函数+画布缓存处理函数。
步骤13,浏览器利用通过执行步骤12确定出的处理逻辑链执行渲染操作。
对应步骤12中的渲染函数,这里所说的渲染操作指的是以下一种或一种以上:
调整透明度;
矩阵处理;
画布缓存处理;
选择混合模式;
裁剪处理;
滤镜种类选择;
样式选择;
位图绘制;
自定义渲染;
渲染子对象。
比如根据所述处理逻辑链对应的渲染操作,进行如下渲染操作:调整透明度+画布缓存处理+选择混合模式+裁剪处理+位图绘制,所述渲染操作则包括:调整透明度、画布缓存处理、选择混合模式、裁剪处理和位图绘制。
当确定出的处理逻辑链中不包含渲染函数时,即处理逻辑链是一个空链时,则对待渲染对象不执行渲染操作。
以下结合图4,说明该方法在实际场景中的实现流程。
如图4所示,假设针对各待渲染对象确定出的处理逻辑链标识分别为a,b,…,n。并且,逻辑链标识a对应的处理逻辑链对应的渲染操作包括渲染操作a1~a4、逻辑链标识b对应的渲染操作包括渲染操作b1~b4、...、逻辑链标识n对应的渲染操作包括渲染操作n1~n4。
那么,就可以对各待渲染对象分别执行处理逻辑链标识a,b,…,n各自对应的渲染操作。
采用本申请实施例1的技术方案,由于能够确定待渲染对象的处理逻辑链标识,进而根据该标识确定对应的处理逻辑链并利用该处理逻辑链对待渲染对象执行渲染操作,无需像现有技术那样为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而本方案可以避免耗费大量的处理资源。
实施例2
基于前述实施例1详细叙述了本申请的发明构思,为了便于更好的理解本申请的技术特征、手段和效果,下面对本申请的渲染方法进一步说明,从而形成了本申请的又一个实施例。
本申请实施例以待渲染对象X、Y和Z,这3个分别具有4个不同待调整属性的待渲染对象为例,详细说明本申请实施例的技术方案。
具体地,实施例2提供的渲染方法的实施流程示意图如图5所示,包括如下主要步骤:
步骤51,浏览器确定待渲染对象X、Y和Z的处理逻辑链标识;
待渲染对象X、Y和Z,是指将要被渲染,并且在渲染后可以显示在屏幕上的对象。具体而言,浏览器可以通过执行JS脚本,实现:根据基于对象的描述(描述中会包含对象的属性,以及相应的属性值),利用对象对应的类的模板创建实例作为该待渲染对象。其中,所述JS脚本中,会定义所述类。
如图6所示,为待渲染对象X、Y和Z中包含的待渲染的属性示意图。
其中待渲染对象X的属性包含:透明度、矩阵、画布缓存和混合模式;
待渲染对象Y的属性包含:自定义渲染、透明度、裁剪和滤镜种类;
待渲染对象Z的属性包含:渲染子对象、裁剪、透明度和混合模式。
本申请实施例中,通过确定表征待渲染对象X、Y和Z需求的渲染过程包含的渲染函数的信息,并根据所述信息,生成相应的处理逻辑链标识。
以下结合图7来说明其具体实现过程,包括以下三个子步骤:
子步骤一:通过执行JS脚本,从浏览器利用类的模板创建出的实例中,获取待渲染对象X、Y和Z的待渲染属性的名称;
其中,待渲染对象X包含的属性信息为透明度、矩阵、画布缓存和混合模式;
待渲染对象Y包含的属性信息为自定义渲染、透明度、裁剪和滤镜种类;
待渲染对象Z包含的属性信息为渲染子对象、裁剪、透明度和混合模式;
子步骤二,根据子步骤一确定的待渲染对象X、Y和Z的属性名称,确定所述表征待渲染对象X、Y和Z需求的渲染过程包含的处理逻辑的信息。
具体来说,表征待渲染对象所需求的渲染函数类型的信息,包括:分别用于标识所述待渲染对象需求的各渲染函数类型的各二进制数。
本申请实施例中,假设透明度处理函数的二进制数为00000010,矩阵处理函数的二进制数为00000100,画布缓存处理函数的二进制数为00000001,混合模式函数的二进制数为00001000,自定义渲染函数的二进制数为00010000,裁剪处理函数的二进制数为00100000,滤镜种类选择函数的二进制数为01000000,渲染子对象函数的二进制数为10000000。
子步骤三,在确定分别用于标识所述待渲染对象需求的各渲染函数类型的各二进制数之后,所述处理逻辑链标识采用下述方式生成:
对所述各二进制数采用或运算,得到运算结果,作为表征所述待渲染对象所需求的渲染函数类型的信息。
本申请实施例中,待渲染对象X的运算结果为00001111记为x,待渲染对象Y的运算结果为01110010记为y,待渲染对象Z的运算结果为10101010记为z。
如图7所示,根据待渲染对象X各属性(透明度、矩阵、画布缓存和混合模式)的信息,确定对应的处理逻辑标识x;
根据待渲染对象Y各属性(自定义渲染、透明度、裁剪和滤镜种类)的信息,确定对应的处理逻辑链标识y;
根据待渲染对象Z各属性(渲染子对象、裁剪、透明度和混合模式)的信息,确定对应的处理逻辑链标识z。
步骤52,确定与待渲染对象X、Y和Z的处理逻辑链标识对应的处理逻辑链;
这里所说的处理逻辑链,指的是渲染过程渲染函数构成的集合。
具体来说,确定与所述处理逻辑链标识对应的处理逻辑链,指的是从预先设置的对应于不同处理逻辑链标识的处理逻辑链中,确定对应于所述待渲染对象的处理逻辑链标识的处理逻辑链。
以下结合图8,说明步骤52的一种实际的具体实现方式。
如图8所示,处理逻辑链标识x对应的处理链逻辑链包含的渲染函数为:透明度调整函数+矩阵处理函数+画布缓存处理函数+混合模式选择函数;
处理逻辑链标识y对应的处理逻辑链包含的渲染函数为:自定义渲染函数+透明度调整函数+裁剪处理函数+滤镜种类选择函数;
处理逻辑链标识z对应的处理逻辑链包含的渲染函数为:渲染子对象函数+裁剪处理函数+透明度调整函数+混合模式选择函数。
步骤53,利用所述处理逻辑链,对待渲染对象X、Y和Z执行渲染操作。
结合图8,对步骤53的具体实现方案进行描述。
根据处理逻辑链标识x对应的操作,依次对待渲染对象X进行如下操作:调整透明度,矩阵处理,画布缓存和选择混合模式;
根据处理逻辑链标识y对应的操作,依次对待渲染对象Y进行如下操作:自定义渲染,调整透明度,裁剪处理和选择滤镜种类;
根据处理逻辑链标识z对应的操作,依次对待渲染对象Z进行如下操作:渲染子对象,裁剪处理,调整透明度和混合模式选择。
采用本申请实施例2的技术方案,由于能够确定待渲染对象的处理逻辑链标识,进而根据该标识确定对应的处理逻辑链并利用该处理逻辑链对待渲染对象执行渲染操作,无需像现有技术那样为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而本方案可以避免耗费大量的处理资源。
实施例3
本申请实施例3提供一种渲染装置,用于解决现有技术中为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而耗费大量处理资源的问题。
具体地,如图9所示,该渲染装置包含下述功能单元:
标识确定单元91,用于确定待渲染对象的处理逻辑链标识;所述处理逻辑链标识,根据表征所述待渲染对象所需求的渲染函数类型的信息生成;
逻辑链确定单元92,用于确定与所述待渲染对象的处理逻辑链标识对应的处理逻辑链;所述处理逻辑链,是渲染函数构成的集合;
操作执行单元93,用于利用所述处理逻辑链执行渲染操作。
可选的,所述逻辑链确定单元92,可以用于:
根据所述待渲染对象的处理逻辑链标识,查询预先设置的对应于不同处理逻辑链标识的处理逻辑链;
若查询到所述待渲染对象的处理逻辑链标识的处理逻辑链,则将查询到的处理逻辑链,确定为对应于所述待渲染对象的处理逻辑链标识的处理逻辑链。
可选的,当所述方法的执行主体包括浏览器时,标识确定单元91,可以用于:
确定表征待渲染对象需求的渲染过程包含的处理逻辑的信息,并根据所述信息,生成相应的处理逻辑链标识;或
通过执行JavaScript脚本,从浏览器利用类的模板创建出的实例中,获取所述待渲染对象的处理逻辑链标识。
具体来说,所述确定表征待渲染对象需求的渲染过程包含的处理逻辑的信息,包括:
通过执行JavaScript脚本,从浏览器利用类的模板创建出的实例中,获取所述待渲染对象的待渲染的属性的名称;
根据所述属性的名称,确定所述表征待渲染对象需求的渲染过程包含的处理逻辑的信息。
可选的,其中,表征所述待渲染对象所需求的渲染函数类型的信息,包括:分别用于表示所述待渲染对象需求的各渲染函数类型的各二进制数;则
所述处理逻辑链标识采用下述方式生成:
对所述各二进制数采用或运算,得到运算结果,作为表征所述待渲染对象所需求的渲染函数类型的信息。
采用本申请实施例3提供的装置,由于能够确定待渲染对象的处理逻辑链标识,进而根据该标识确定对应的处理逻辑链并利用该处理逻辑链对待渲染对象执行渲染操作,无需像现有技术那样为了确定用于渲染待渲染对象的渲染函数,会产生巨大的判断运算量,从而本方案可以避免耗费大量的处理资源。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。