本技术实施例涉及计算机图形,尤其涉及一种图像绘制方法及相关设备。
背景技术:
1、瓦片地图是现有游戏开发中一种常见的地图开发方式,它将地图分割成若干个较小的单元格,通过填充单元格的瓦片元素就能创造出各类地图。
2、目前绝大多数对瓦片地图的渲染方式是获取当前帧所需显示的瓦片元素一一绘制单元格,前后两帧相似画面较多,每次都需要重新绘制,对机器性能的消耗比较大。同时,每一游戏帧渲染单元格的个数较多,但帧与帧之间画面变化较小,造成渲染次数多,性能消耗大。
技术实现思路
1、本技术实施例提供了一种图像绘制方法及相关设备,用于节省瓦片地图绘制的次数,以尽可能地减少机器性能消耗。
2、本技术实施例第一方面提供了一种图像绘制方法,包括:
3、响应于针对地图图像的渲染请求,于展示画布上缓存对应于所述地图图像的当前图像帧;其中,所述当前图像帧包括所述地图图像的瓦片单元格数据、当前画布数据及地图数据;所述瓦片单元格数据用于描述所述地图图像中单元格内的图像数据,所述地图数据由m个所述瓦片单元格数据组成,所述当前画布数据由n个所述瓦片单元格数据组成,所述m大于所述n;
4、当存在对应于所述地图图像的历史图像帧时,检测所述当前画布数据于所述地图数据是否发生画布移动,且是否超出与所述历史图像帧对应的历史画布数据;
5、当所述当前画布数据超出所述历史画布数据时,确定所述当前画布数据的画布游标数据及画布移动后的画布移动数据;
6、根据所述画布游标数据、所述画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据,并于所述展示画布上展示与所述目标画布数据对应的所述地图图像。
7、可选地,所述方法还包括:
8、当未存在对应于所述地图图像的所述历史图像帧时,确定所述当前画布数据的所述画布游标数据及与所述画布游标数据对应的游标位置数据;其中,所述画布游标数据包括第一横向游标数据及第一纵向游标数据;
9、根据所述游标位置数据确定对应于所述地图数据的所有瓦片单元格数据;所述瓦片单元格数据包括横向瓦片单元格数据及纵向瓦片单元格数据;
10、根据所述第一纵向游标数据,以所述游标位置数据中的目标位置点作为起始行及起始列,将所述所有瓦片单元格数据中的所述目标位置点下方的所述横向瓦片单元格数据于所述展示画布上进行绘制;
11、当所述起始列上的所述所有瓦片单元格数据中,所述目标位置点下的所述纵向瓦片单元格数据于所述展示画布上绘制完成后,根据所述第一横向游标数据,将所述所有瓦片单元格数据中,所述目标位置点上方的所述横向瓦片单元格数据及所述纵向瓦片单元格数据于所述展示画布上进行绘制,并执行所述根据所述画布游标数据、所述画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据的步骤;其中,所述画布移动数据为空。
12、可选地,所述确定所述当前画布数据的画布游标数据及画布移动后的画布移动数据,包括:
13、当所述当前画布数据于所述地图数据发生画布横向移动,且超出所述历史画布数据时,确定第一画布移动数据,以及所述画布游标数据的第二横向游标数据及第二纵向游标数据;
14、所述根据所述画布游标数据、所述第一画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据,包括:
15、根据所述第二横向游标数据,确定对应于所述画布移动数据的纵向瓦片单元格数据;
16、根据所述第二纵向游标数据,以所述第二纵向游标数据作为第一起始列,绘制位于所述第二纵向游标数据下方的所述纵向瓦片单元格数据;
17、以所述第二纵向游标数据作为第二起始列,绘制位于所述第二纵向游标数据上方的所述纵向瓦片单元格数据;
18、根据所述纵向瓦片单元格数据及所述当前画布数据绘制所述目标画布数据。
19、可选地,所述绘制位于所述第二纵向游标数据上方的所述纵向瓦片单元格数据之后,所述方法还包括:
20、检测所述当前画布数据于所述地图数据是否发生画布纵向移动,且所述当前画布数据是否超出所述历史画布数据;
21、当所述当前画布数据于所述地图数据发生画布纵向移动,且所述当前画布数据超出所述历史画布数据时,确定第二画布移动数据,以根据所述画布游标数据、所述第二画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据;
22、当所述当前画布数据于所述地图数据未发生画布纵向移动时,执行所述于所述展示画布上展示与所述目标画布数据对应的所述地图图像的步骤。
23、可选地,所述确定所述当前画布数据的画布游标数据及画布移动后的画布移动数据,包括:
24、当所述当前画布数据于所述地图数据发生画布纵向移动,且超出所述历史画布数据时,确定所述画布移动数据,以及所述画布游标数据的第三横向游标数据及第三纵向游标数据;
25、所述根据所述画布游标数据、所述画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据,包括:
26、根据所述第三纵向游标数据,确定对应于所述画布移动数据的横向瓦片单元格数据;
27、根据所述第三横向游标数据,以所述第三横向游标数据作为第一起始行,绘制位于所述第三横向游标数据右方的所述横向瓦片单元格数据;
28、以所述第三横向游标数据作为第二起始行,绘制位于所述第三横向游标数据左方的所述横向瓦片单元格数据;
29、根据所述横向瓦片单元格数据及所述当前画布数据绘制所述目标画布数据。
30、可选地,所述方法还包括:
31、当所述当前画布数据未超出所述历史画布数据时,确定所述当前画布数据的所述画布游标数据及与所述画布游标数据对应的游标位置数据;
32、基于所述游标位置数据,根据所述画布游标数据将所述当前画布数据进行切割,获取对应不同排列顺序的待绘制画布数据;
33、按照目标排列顺序对所述待绘制画布数据进行组合,以执行所述根据所述画布游标数据、所述画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据的步骤;其中,所述画布移动数据为空。
34、可选地,所述于所述展示画布上展示与所述目标画布数据对应的所述地图图像之后,所述方法还包括:
35、加载下一图像帧的下一画布数据,将所述下一画布数据设置为所述当前画布数据,以执行所述检测所述当前画布数据于所述地图数据的画布移动的步骤。
36、本技术实施例第二方面提供了一种图像绘制系统,包括:
37、缓存单元,用于响应于针对地图图像的渲染请求,于展示画布上缓存对应于所述地图图像的当前图像帧;其中,所述图像帧包括所述地图图像的瓦片单元格数据、当前画布数据及地图数据;所述瓦片单元格数据用于描述所述地图图像中单元格内的图像数据,所述地图数据由m个所述瓦片单元格数据组成,所述当前画布数据由n个所述瓦片单元格数据组成,所述m大于所述n;
38、检测单元,用于当存在对应于所述地图图像的历史图像帧时,检测所述当前画布数据于所述地图数据是否发生画布移动,且是否超出与所述历史图像帧对应的历史画布数据;
39、确定单元,用于当所述当前画布数据超出所述历史画布数据时,确定所述当前画布数据的画布游标数据及画布移动后的画布移动数据;
40、绘制单元,用于根据所述画布游标数据、所述画布移动数据及所述当前画布数据绘制所述当前图像帧的目标画布数据,并于所述展示画布上展示与所述目标画布数据对应的所述地图图像。
41、本技术实施例第二方面提供的用于执行第一方面所述的图像绘制方法。
42、本技术实施例第三方面提供了一种图像绘制装置,包括:
43、中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;
44、所述存储器为短暂存储存储器或持久存储存储器;
45、所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行第一方面所述的图像绘制方法。
46、本技术实施例第四方面提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面所述的图像绘制方法。
47、从以上技术方案可以看出,本技术实施例具有以下优点:通过本技术实施例公开的一种图像绘制方法,先响应于针对地图图像的渲染请求,于展示画布上缓存对应于地图图像的当前图像帧;再当存在对应于地图图像的历史图像帧时,检测当前画布数据于地图数据是否发生画布移动,且是否超出与历史图像帧对应的历史画布数据;然后,当当前画布数据超出历史画布数据时,确定当前画布数据的画布游标数据及画布移动后的画布移动数据;最后,根据画布游标数据、画布移动数据及当前画布数据绘制当前图像帧的目标画布数据,并于展示画布上展示与目标画布数据对应的地图图像。从而,更新画布的时候不用全部刷新,只需把新增的部分进行绘制,达到相同的部分不需要更新的效果。由此,在后续的地图图像的加载过程中,可复用上一帧缓存的画布数据,从而节省大量单元格重绘的次数。