CN105719331A - 精灵绘制方法、装置及游戏系统 - Google Patents
精灵绘制方法、装置及游戏系统 Download PDFInfo
- Publication number
- CN105719331A CN105719331A CN201610029148.7A CN201610029148A CN105719331A CN 105719331 A CN105719331 A CN 105719331A CN 201610029148 A CN201610029148 A CN 201610029148A CN 105719331 A CN105719331 A CN 105719331A
- Authority
- CN
- China
- Prior art keywords
- spirit
- smart
- drafting
- draw
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/80—2D [Two Dimensional] animation, e.g. using sprites
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种精灵绘制方法、装置及游戏系统,其中,该方法包括:依据精灵的全局Z值对待绘制精灵进行排序,其中,精灵的全局Z值用于标识精灵被遮挡的容易程度;确定排序后各个待绘制精灵的材质;根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制,通过本发明,解决了相关技术中对精灵的批量绘制,需要逻辑层烦杂的控制,不仅大大浪费了逻辑层的控制资源,而且绘制效率也不高的问题,进而达到了有效降低CPU的消耗,以及提高精灵绘制效率的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种精灵绘制方法、装置及游戏系统。
背景技术
在游戏中,存在一些场景,在这些场景中存在大量精灵需要绘制,如果对精灵一个一个进行绘制,不仅需要浪费大量的时间,而且也不现实。因此,在需要对大量精灵进行绘制时,需要进行批量绘制以达到合并drawcall的目的。例如,在相关技术中,Coco2dx.2.x版本自带的CCSpriteBatcheNode在进行批绘制时,要求所有子节点绘制纹理及绘制状态等必须完全相同,这需要逻辑层进行精心控制,不仅烦杂,而且效率不高。
因此,在相关技术中,对精灵的批量绘制,需要逻辑层烦杂的控制,不仅大大浪费了逻辑层的控制资源,而且绘制效率也不高。
发明内容
本发明提供了一种精灵绘制方法、装置及游戏系统,以至少解决相关技术中对精灵的批量绘制,需要逻辑层烦杂的控制,不仅大大浪费了逻辑层的控制资源,而且绘制效率也不高的问题。
根据本发明的一个方面,提供了一种精灵绘制方法,包括:依据精灵的全局Z值对待绘制精灵进行排序,其中,所述精灵的全局Z值用于标识所述精灵被遮挡的容易程度;确定排序后各个待绘制精灵的材质;根据确定的所述各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
优选地,在依据精灵的全局Z值对所述待绘制精灵进行排序之前,还包括:对所述待绘制精灵进行缓存。
优选地,确定排序后各个待绘制精灵的所述材质包括:获取所述精灵的纹理属性,所述精灵的着色Shader属性,所述精灵的混合方式属性;将获取的所述纹理属性,所述Shader属性,和所述混合方式属性统一为所述材质。
优选地,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制包括:判断当前时间是否达到flush时机,其中,所述flush时机包括:非精灵节点绘制时,或者,一帧结束时;在判断结果为是的情况下,在所述当前时间,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制。
优选地,根据确定的所述各个待绘制精灵的所述材质,对排序后的所述待绘制精灵进行批量绘制包括:判断排序后的所述待绘制精灵中相邻待绘制精灵的材质是否相同;在判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
优选地,所述待绘制精灵的个数不少于200个。
根据本发明的另一方面,提供了一种精灵绘制装置,包括:排序模块,用于依据精灵的全局Z值对待绘制精灵进行排序,其中,所述精灵的全局Z值用于标识所述精灵被遮挡的容易程度;确定模块,用于确定排序后各个待绘制精灵的材质;绘制模块,用于根据确定的所述各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
优选地,该装置还包括:缓存模块,用于对所述待绘制精灵进行缓存。
优选地,所述确定模块包括:获取单元,用于获取所述精灵的纹理属性,所述精灵的着色Shader属性,所述精灵的混合方式属性;统一单元,用于将获取的所述纹理属性,所述Shader属性,和所述混合方式属性统一为所述材质。
优选地,所述绘制模块包括:第一判断单元,用于判断当前时间是否达到flush时机,其中,所述flush时机包括:非精灵节点绘制时,或者,一帧结束时;第一绘制单元,用于在所述第一判断单元的判断结果为是的情况下,在所述当前时间,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制。
优选地,所述绘制模块包括:第二判断单元,用于判断排序后的所述待绘制精灵中相邻待绘制精灵的材质是否相同;第二绘制单元,用于在所述第二判断单元的判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
根据本发明的还一方面,提供了一种游戏系统,包括上述任一项所述的精灵绘制装置。
通过本发明,采用依据精灵的全局Z值对待绘制精灵进行排序,其中,所述精灵的全局Z值用于标识所述精灵被遮挡的容易程度;确定排序后各个待绘制精灵的材质;根据确定的所述各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制,解决了相关技术中对精灵的批量绘制,需要逻辑层烦杂的控制,不仅大大浪费了逻辑层的控制资源,而且绘制效率也不高的问题,进而达到了有效降低CPU的消耗,以及提高精灵绘制效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的精灵绘制方法的流程图;
图2是根据本发明实施例的排序前相同材质精灵非连续分布的示意图;
图3是根据本发明实施例的排序后相同材质精灵连续分布的示意图;
图4是根据本发明实施例的排序前相同材质精灵非连续跨层级分布的示意图;
图5是根据本发明实施例的排序后相同材质精灵连续分布的示意图;
图6是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示为大小64*64,精灵个数为48的情况下,分别连续绘制和交叉绘制时分别对应的示意图;
图7是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示大小为32*32,精灵个数为150的情况下,分别连续绘制和交叉绘制时分别对应的示意图;
图8是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示大小为10*10,精灵个数1500的情况下,分别连续绘制和交叉绘制时分别对应的示意图;
图9是根据本发明实施例的精灵绘制装置的结构框图;
图10是根据本发明实施例的精灵绘制装置的优选结构框图;
图11是根据本发明实施例的精灵绘制装置中确定模块94的优选结构框图;
图12是根据本发明实施例的精灵绘制装置中绘制模块96的优选结构框图一;
图13是根据本发明实施例的精灵绘制装置中绘制模块96的优选结构框图二;
图14是根据本发明实施例的游戏系统的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种精灵绘制方法,图1是根据本发明实施例的精灵绘制方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,依据精灵的全局Z值对待绘制精灵进行排序,其中,精灵的全局Z值用于标识精灵被遮挡的容易程度;
步骤S104,确定排序后各个待绘制精灵的材质;
步骤S106,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
通过上述步骤,依据全局Z值对精灵进行排序,以及根据精灵的材质对排序后的精灵进行批量绘制,相对于相关技术中,对精灵进行批量绘制时,需要逻辑层控制要求批量绘制的精灵具备完全相同的绘制状态,导致逻辑层控制烦杂的问题,采用该方案处理,不仅解决了相关技术中对精灵的批量绘制,需要逻辑层烦杂的控制,不仅大大浪费了逻辑层的控制资源,而且绘制效率也不高的问题,进而达到了有效降低CPU的消耗,以及提高精灵绘制效率的效果。
在本实施例中提供的精灵绘制方法,较佳地,属于一种非连续分布精灵自动批绘制(AutoBatchRender)方法,弥补了相关技术中对精灵进行批绘制时存在的不足。需要说明的是,该方法可以基于多种场景,例如,可以基于cocos2d-x2.x版本,即实现基于cocos2d-x2.x版本下,精灵的批量绘制处理。下面以基于cocos2d-x2.x版本为例,对本发明实施例的精灵绘制方法进行描述。
在依据精灵的全局Z值对待绘制精灵进行排序之前,可以对待绘制精灵进行缓存。即,改写精灵的draw函数,仅将精灵信息放入全局数组队列进行缓存,不绘制。
在对精灵进行批量绘制之前,需要进行两方面的准备:一方面准备是,需要依据精灵的全局Z值对待绘制精灵进行排序,即,绘制前对精灵按GlobalZ值(即上述的全局Z值)进行排序,需要进行合并的精灵需要逻辑层指定正确的GlobalZ值。需要说明的是,该精灵的该全局Z值用于表述精灵被遮挡的容易程度,例如,Z值越大精灵越不容易被遮挡,Z值越小精灵越容易被遮挡。比如,精灵A的Z值为a,精灵B的Z值为b,并且,a大于b,那么精灵A相对于精灵B来说越不容易被遮挡。举例来说,对于材质相同的精灵,在在两种情况,一种情况是,相同材质精灵非连续同级分布;另一种情况是,相同材质精灵非连续跨层级分布。针对这两种情况下对精灵的排序,下面以图的形式来说明。针对第一种情况,图2是根据本发明实施例的排序前相同材质精灵非连续分布的示意图,图3是根据本发明实施例的排序后相同材质精灵连续分布的示意图;针对第二种情况,图4是根据本发明实施例的排序前相同材质精灵非连续跨层级分布的示意图,图5是根据本发明实施例的排序后相同材质精灵连续分布的示意图。
另一方面准备是,需要确定精灵的材质,优选地,确定排序后各个待绘制精灵的材质可以采用以下方式:获取精灵的纹理属性,精灵的着色Shader属性,精灵的混合方式属性;将获取的纹理属性,Shader属性,和混合方式属性统一为材质。即将纹理、shader、混合方式统一为材质ID,绘制时根据材质ID判断是否可以合并。
在确定了上述两方面后,就可以依据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。而在根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制时,依据考虑的方面不同,所采用的对应处理也可以是多种,例如,在根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制之前,可以先判断当前时间是否达到flush时机,其中,flush时机包括:非精灵节点绘制时,或者,一帧结束时;在判断结果为是的情况下,在当前时间,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。换句话说,Cocos2d-x2.x精灵在draw的时候,就已经调用opengl进行绘制,在本发明实施例中,为了能够达到批量绘制的目的,flush时开始绘制,flush时机包括:非精灵节点绘制时和一帧结束时。
又例如,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制包括:判断排序后的待绘制精灵中相邻待绘制精灵的材质是否相同;在判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。需要说明的是,在采用该方法绘制精灵的过程中,子节点不需要在逻辑层手动添加到父节点;也不需要逻辑保证子节点使用的纹理与父节点相同;子节点的GlobalZ值会影响绘制的顺序;子节点的顶点世界坐标在绘制前保存。该绘制批处理会将相邻的纹理、shader、混合方式相同的精灵进行合并。之后,绘制命令中包含该精灵的模型视图矩阵信息,绘制前各自转换为世界坐标。
为体现采用上述方法进行精灵批量绘制所带来的良好效果,下面结合上述方法所应用的场景来对上述方法所带来的有益效果进行说明。
(1)绘制精灵数量较多时,批量绘制效果更好
自动批绘制对帧率的提升,体现在有效降低了CPU消耗,并没有减少GPU的工作量,因此,只有当绘制精灵数量较多时效果才能明显体现,例如,待绘制精灵的个数不少于200个,即至少绘制200以上个数的精灵时才考虑使用上述批量绘制。
(2)绘制精灵尺寸越小时,批量绘制的效果越好
随着精灵在屏幕最终显示尺寸的增大,GPU会逐渐成为帧率提升的瓶颈,批绘制带来的提升效果也逐渐被淹没。因此,批绘制适合绘制类似子弹,底图小方格子等尺寸较小的精灵。
(3)可以应用于相同纹理的精灵非连续分布的场景
相同纹理的精灵非连续分布时,无法使用cocos2dx自带的CCSpriteBatcheNode进行批绘制。而ABR自动批绘制通过对Z值进行排序可以解决该问题。
基于上述各个场景,下面分别对各个场景所对应的实施分别进行说明。
(1)纹理大小、屏幕显示尺寸对帧率的影响
方法:在屏幕指定的3个位置,分别重叠绘制600个带角度旋转的精灵,采用不同的纹理并将纹理缩放到不同尺寸。
结果1:纹理大小79*33
结果2:精灵大小128*128
结果3:精灵大小274*274
结论分析:
在精灵数量不变的情况下,CPU负载稳定;
随着屏幕显示尺寸的增加,像素计算量会增加,导致GPU逐渐成为帧率提升的瓶颈;纹理原始尺寸越大,GPU随显示尺寸增加成为瓶颈的速度越快。
(2)精灵数目对帧率的影响
方法:在屏幕指定的3个位置,分别重叠绘制不同个数固定大小带角度旋转的的精灵。
结果4:精灵大小79*33,屏幕显示大小32*32
结论分析:
精灵个数较多时,CPU负载提升效果明显;
精灵个数对GPU负载几乎没有影响;
(3)精灵绘制次序对帧率的影响
方法:在屏幕平铺绘制满屏带角度旋转的精灵,分别测试连续绘制和交叉绘制情况。
结果5:屏幕显示大小64*64,精灵个数48
图6是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示为大小64*64,精灵个数为48的情况下,分别连续绘制和交叉绘制时分别对应的示意图,如图6所示。
结果6:屏幕显示大小32*32,精灵个数150
图7是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示大小为32*32,精灵个数为150的情况下,分别连续绘制和交叉绘制时分别对应的示意图,如图7所示。
结果7:屏幕显示大小10*10,精灵个数1500
图8是根据本发明实施例的在屏幕平铺绘制满屏带角度旋转的精灵,在屏幕显示大小为10*10,精灵个数1500的情况下,分别连续绘制和交叉绘制时分别对应的示意图,如图8所示。
结论分析:
精灵数量较少时,绘制方式帧率没有影响;
精灵数量较多时,连续绘制的效率要略高于间隔绘制的效率,但差别不大;
与相关技术相比,上述实施例及优选实施方式的有益效果是:
DrawCall的合并,可以有效降低CPU的消耗,但对GPU的负载影响不大;
随着精灵最终显示尺寸的增加,GPU会逐渐称为帧率提升的瓶颈,Drawcall合并带来的提示亦随之逐渐消失;
纹理原始尺寸越大,GPU随显示尺寸增加成为瓶颈的速度越快。
需要说明的是,在具体实施时,可以采用以下实现方式:
实现主要依赖CCBatchNodeMgr类,需要修改CCNode.h、CCNode.cpp、CCSprite.cpp三个文件以及需要加入flush的其他绘制文件。
将头文件和实现文件加入工程
...\cocos2dx\base_nodes\CCBatchNodeMgr.h
...\cocos2dx\base_nodes\CCBatchNodeMgr.cpp
改写CCSrpite类的draw函数
在CCDirector的drawScene函数中加入每帧最后的Flush
voidCCDirector::drawScene(void)
{
......
metis::CCBatchNodeMgr::GetInstance()->FlushDraw();
......
}
在CCNode的中增加模型视图矩阵变量并在transform函数中赋值
在CCNode的中加入FlushDraw函数
在其他类型的节点绘制时,加入FlushDraw。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
在本实施例中还提供了一种精灵绘制装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图9是根据本发明实施例的精灵绘制装置的结构框图,如图9所示,该装置包括:排序模块92、确定模块94和绘制模块96,下面对该装置进行说明。
排序模块92,用于依据精灵的全局Z值对待绘制精灵进行排序,其中,精灵的全局Z值用于标识精灵被遮挡的容易程度;确定模块94,连接至上述排序模块92,用于确定排序后各个待绘制精灵的材质;绘制模块96,连接至上述确定模块94,用于根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
图10是根据本发明实施例的精灵绘制装置的优选结构框图,如图10所示,该装置除包括图9所示的所有模块外,还包括:缓存模块102,下面对该装置进行说明。
缓存模块102,连接至上述排序模块92,用于对待绘制精灵进行缓存。
图11是根据本发明实施例的精灵绘制装置中确定模块94的优选结构框图,如图11所示,该确定模块94包括:获取单元112和统一单元114,下面对该确定模块94进行说明。
获取单元112,用于获取精灵的纹理属性,精灵的着色Shader属性,精灵的混合方式属性;统一单元114,连接至上述获取单元112,用于将获取的纹理属性,Shader属性,和混合方式属性统一为材质。
图12是根据本发明实施例的精灵绘制装置中绘制模块96的优选结构框图一,如图12所示,该绘制模块96包括:第一判断单元122和第一绘制单元124,下面对该绘制模块96进行说明。
第一判断单元122,用于判断当前时间是否达到flush时机,其中,flush时机包括:非精灵节点绘制时,或者,一帧结束时;第一绘制单元124,连接至上述第一判断单元122,用于在第一判断单元的判断结果为是的情况下,在当前时间,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
图13是根据本发明实施例的精灵绘制装置中绘制模块96的优选结构框图二,如图13所示,该绘制模块96包括:第二判断单元132和第二绘制单元134,下面对该绘制模块96进行说明。
第二判断单元132,用于判断排序后的待绘制精灵中相邻待绘制精灵的材质是否相同;第二绘制单元134,连接至上述第二判断单元132,用于在第二判断单元的判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
图14是根据本发明实施例的游戏系统的结构框图,如图14所示,该游戏系统140包括上述任一项的精灵绘制装置142。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,依据精灵的全局Z值对待绘制精灵进行排序,其中,精灵的全局Z值用于标识精灵被遮挡的容易程度;
S2,确定排序后各个待绘制精灵的材质;
S3,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S1,在依据精灵的全局Z值对待绘制精灵进行排序之前,还包括:对待绘制精灵进行缓存。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
确定排序后各个待绘制精灵的材质包括:
S1,获取精灵的纹理属性,精灵的着色Shader属性,精灵的混合方式属性;
S2,将获取的纹理属性,Shader属性,和混合方式属性统一为材质。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制包括:
S1,判断当前时间是否达到flush时机,其中,flush时机包括:非精灵节点绘制时,或者,一帧结束时;
S2,在判断结果为是的情况下,在当前时间,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制包括:
S1,判断排序后的待绘制精灵中相邻待绘制精灵的材质是否相同;
S2,在判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S1,待绘制精灵的个数不少于200个。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
依据精灵的全局Z值对待绘制精灵进行排序,其中,精灵的全局Z值用于标识精灵被遮挡的容易程度;确定排序后各个待绘制精灵的材质;根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
在依据精灵的全局Z值对待绘制精灵进行排序之前,还包括:对待绘制精灵进行缓存。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
确定排序后各个待绘制精灵的材质包括:获取精灵的纹理属性,精灵的着色Shader属性,精灵的混合方式属性;将获取的纹理属性,Shader属性,和混合方式属性统一为材质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制包括:判断当前时间是否达到flush时机,其中,flush时机包括:非精灵节点绘制时,或者,一帧结束时;在判断结果为是的情况下,在当前时间,根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
根据确定的各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制包括:判断排序后的待绘制精灵中相邻待绘制精灵的材质是否相同;在判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:
待绘制精灵的个数不少于200个。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种精灵绘制方法,其特征在于,包括:
依据精灵的全局Z值对待绘制精灵进行排序,其中,所述精灵的全局Z值用于标识所述精灵被遮挡的容易程度;
确定排序后各个待绘制精灵的材质;
根据确定的所述各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
2.根据权利要求1所述的方法,其特征在于,在依据精灵的全局Z值对所述待绘制精灵进行排序之前,还包括:
对所述待绘制精灵进行缓存。
3.根据权利要求1所述的方法,其特征在于,确定排序后各个待绘制精灵的所述材质包括:
获取所述精灵的纹理属性,所述精灵的着色Shader属性,所述精灵的混合方式属性;
将获取的所述纹理属性,所述Shader属性,和所述混合方式属性统一为所述材质。
4.根据权利要求1所述的方法,其特征在于,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制包括:
判断当前时间是否达到flush时机,其中,所述flush时机包括:非精灵节点绘制时,或者,一帧结束时;
在判断结果为是的情况下,在所述当前时间,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制。
5.根据权利要求1至4中任一项所述的方法,其特征在于,根据确定的所述各个待绘制精灵的所述材质,对排序后的所述待绘制精灵进行批量绘制包括:
判断排序后的所述待绘制精灵中相邻待绘制精灵的材质是否相同;
在判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
6.根据权利要求5所述的方法,其特征在于,所述待绘制精灵的个数不少于200个。
7.一种精灵绘制装置,其特征在于,包括:
排序模块,用于依据精灵的全局Z值对待绘制精灵进行排序,其中,所述精灵的全局Z值用于标识所述精灵被遮挡的容易程度;
确定模块,用于确定排序后各个待绘制精灵的材质;
绘制模块,用于根据确定的所述各个待绘制精灵的材质,对排序后的待绘制精灵进行批量绘制。
8.根据权利要求7所述的装置,其特征在于,还包括:
缓存模块,用于对所述待绘制精灵进行缓存。
9.根据权利要求7所述的装置,其特征在于,所述确定模块包括:
获取单元,用于获取所述精灵的纹理属性,所述精灵的着色Shader属性,所述精灵的混合方式属性;
统一单元,用于将获取的所述纹理属性,所述Shader属性,和所述混合方式属性统一为所述材质。
10.根据权利要求7所述的装置,其特征在于,所述绘制模块包括:
第一判断单元,用于判断当前时间是否达到flush时机,其中,所述flush时机包括:非精灵节点绘制时,或者,一帧结束时;
第一绘制单元,用于在所述第一判断单元的判断结果为是的情况下,在所述当前时间,根据确定的所述各个待绘制精灵的材质,对排序后的所述待绘制精灵进行批量绘制。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述绘制模块包括:
第二判断单元,用于判断排序后的所述待绘制精灵中相邻待绘制精灵的材质是否相同;
第二绘制单元,用于在所述第二判断单元的判断结果为是的情况下,将相邻的材质相同的待绘制精灵进行合并绘制。
12.一种游戏系统,其特征在于,包括权利要求7至11中任一项所述的精灵绘制装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029148.7A CN105719331A (zh) | 2016-01-15 | 2016-01-15 | 精灵绘制方法、装置及游戏系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029148.7A CN105719331A (zh) | 2016-01-15 | 2016-01-15 | 精灵绘制方法、装置及游戏系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105719331A true CN105719331A (zh) | 2016-06-29 |
Family
ID=56147630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610029148.7A Pending CN105719331A (zh) | 2016-01-15 | 2016-01-15 | 精灵绘制方法、装置及游戏系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105719331A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214768A1 (zh) * | 2017-05-24 | 2018-11-29 | 阿里巴巴集团控股有限公司 | 一种绘制方法及装置 |
CN108965975A (zh) * | 2017-05-24 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种绘制方法及装置 |
CN110109667A (zh) * | 2019-04-30 | 2019-08-09 | 广东趣炫网络股份有限公司 | 一种ui界面绘制校验方法、装置、终端及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102572391A (zh) * | 2011-12-09 | 2012-07-11 | 深圳市万兴软件有限公司 | 一种摄像头视频帧的精灵化方法和装置 |
CN103426197A (zh) * | 2012-05-17 | 2013-12-04 | 上海闻泰电子科技有限公司 | 一种基于活性边表和辅助数组的逆画家消隐算法 |
-
2016
- 2016-01-15 CN CN201610029148.7A patent/CN105719331A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102572391A (zh) * | 2011-12-09 | 2012-07-11 | 深圳市万兴软件有限公司 | 一种摄像头视频帧的精灵化方法和装置 |
CN103426197A (zh) * | 2012-05-17 | 2013-12-04 | 上海闻泰电子科技有限公司 | 一种基于活性边表和辅助数组的逆画家消隐算法 |
Non-Patent Citations (5)
Title |
---|
ALEX ZHOU: "cocos2d-x手游性能优化总结", 《HTTPS://WEB.ARCHIVE.ORG/WEB/20150901002405/JU.OUTOFMEMORY.CN/ENTRY/203972》 * |
ALEX ZHOU: "cocos2d-x手游性能优化总结", 《HTTPS://WEB.ARCHIVE.ORG/WEB/20151025100458/CODINGNOW.CN/COCOS2D-X/1658.HTML》 * |
ALEX ZHOU: "cocos2d-x手游性能优化总结", 《HTTPS://WWW.TUICOOL.COM/ARTICLES/Z2UQIEA》 * |
DAVID_YANG: "Cocos2dx3.0的自动批次渲染原理", 《HTTPS://BLOG.CSDN.NET/YANGCHANGDA1/ARTICLE/DETAILS/49406867》 * |
满硕泉: "《Cocos2D X权威指南 第2版》", 30 September 2014, 机械工业出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214768A1 (zh) * | 2017-05-24 | 2018-11-29 | 阿里巴巴集团控股有限公司 | 一种绘制方法及装置 |
CN108965975A (zh) * | 2017-05-24 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种绘制方法及装置 |
CN108965975B (zh) * | 2017-05-24 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种绘制方法及装置 |
CN110109667A (zh) * | 2019-04-30 | 2019-08-09 | 广东趣炫网络股份有限公司 | 一种ui界面绘制校验方法、装置、终端及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
CN103460253B (zh) | 用于图形处理的像素值精简 | |
CN102368779B (zh) | 一种用于移动互联网设备的超大图像加载显示方法 | |
CN108055264A (zh) | 推流服务器的调度装置、方法及计算机可读存储介质 | |
US9424617B2 (en) | Graphics command generation device and graphics command generation method | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
WO2014026602A1 (en) | A data processing method, apparatus and mobile terminal | |
CN102289782A (zh) | 信息处理装置、用于控制信息处理装置的方法、和程序 | |
CN101604454A (zh) | 图形处理系统 | |
CN105719331A (zh) | 精灵绘制方法、装置及游戏系统 | |
CN103188521B (zh) | 转码分配方法及装置,转码方法及设备 | |
CN110427256A (zh) | 基于优先级的作业调度优化方法、设备、存储介质及装置 | |
US20240248759A1 (en) | Scheduling of a plurality of graphic processing units | |
CN110298780B (zh) | 地图渲染方法、装置及计算机存储介质 | |
CN107231817A (zh) | 降低地图界面中的时延 | |
CN112801855B (zh) | 基于图元的渲染任务调度的方法、装置及存储介质 | |
CN109675309A (zh) | 一种游戏场景的构造方法和装置 | |
CN113076152B (zh) | 渲染方法及装置、电子设备和计算机可读存储介质 | |
CN114022344B (zh) | 基于Linux服务器的Android容器渲染资源共享方法和装置 | |
CN105247478A (zh) | 命令指令管理 | |
CN106325976A (zh) | 一种渲染任务调度处理方法及服务器 | |
CN110738720A (zh) | 特效渲染方法、装置、终端及存储介质 | |
CN109377552A (zh) | 图像遮挡计算方法、装置、计算设备及存储介质 | |
CN113426130B (zh) | 一种模型的合批处理方法和装置 | |
CN105957133B (zh) | 一种加载贴图的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160629 |