一种图像渲染方法和图像渲染系统的制作方法

文档序号:9668224阅读:350来源:国知局
一种图像渲染方法和图像渲染系统的制作方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种图像渲染方法和图像渲染系统。
【背景技术】
[0002]在移动互联网应用日新月异的今天,用户对应用界面炫酷的特效表现要求越来越高,许多抢眼的特效会大大增强用户的认知和使用体验,产生过目不忘的流畅感受,但是这些繁杂的特效如果没有经过较好的优化常常会在运行时消耗很多的中央处理器(CPU,Central Processing Unit),耗电相对变快,造成整个应用卡顿,这是跟整个产品交互设计初衷相违背的。
[0003]在游戏引擎领域,积累了不少三角形图像计算法、图形处理器(GPU,GraphicsProcessing Unit)加速清染、预计算局部清染范围等特效清染的优化手段和相关经验,但是这些想法和技术通常被运用在需要复杂图形计算的3D游戏或大型角色扮演游戏(RPG,Role-playing game)中,而且对开发者的门滥要求较高;在移动终端(如手机)上的原生应用APP为了降低开发门槛都把这类接口封装的非常底层,使得在手机原生框架上开发应用的速度相对游戏框架而言更快,然而性能没有游戏应用那么高。
[0004]如何降低开发门槛的同时,实现高性能的原生应用特效,解决现有技术中繁杂的特效会降低CPU的运算压力,导致整个应用卡顿且耗电过快的技术问题,是人们关注的热点。

【发明内容】

[0005]本发明实施例所要解决的技术问题在于,提供一种图像渲染方法和图像渲染系统,解决了现有技术中繁杂的特效会降低CPU的运算压力,导致整个应用卡顿且耗电过快的技术问题。
[0006]为了解决上述技术问题,本发明实施例第一方面公开了一种图像渲染方法,包括:
[0007]读取当前需渲染的特效对象,根据预先注册所述特效对象时切片保存的显示数据,确定当前帧以及下一帧需要渲染的局部区域;
[0008]通过预计算渲染器将所述局部区域在画布中擦除,并对所述中央处理器内存CpuRes中当前帧对应的第一类型显示数据进行预计算渲染,得到预计算图形;
[0009]通过预设的底层图形库渲染器对图形处理器内存GpuRes中当前帧对应的第二类型显示数据进行渲染,并与所述预计算图形进行合并渲染,得到当前帧完整的显示图像;
[0010]其中,所述当前帧需要渲染的局部区域包括所述第一类型显示数据和所述第二类型显示数据,所述第一类型显示数据小于所述第二类型显示数据。该底层图形库可以为比原生APP更加底层的开放图形库(0penGL,0pen Graphics Library),并通过外观模式封装成对上层友好的特效图像库,降低了开发门槛,使得应用开发者可以轻松开发出高性能的原生应用特效。
[0011]结合第一方面,在第一种可能的实现方式中,在所述读取当前需渲染的特效对象之前,还包括:
[0012]在将所述特效对象注册到图形引擎时,计算所述特效对象每一帧中有效的显示数据,并对所述显示数据进行切片;
[0013]将切片后的第一类型显示数据保存在CpuRes中,将切片后的第二类型显示数据保存在GpuRes中。
[0014]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述对所述显示数据进行切片之后,还包括:将切片后需要渲染的区域信息保存在擦除内存ClearRes 中;
[0015]所述根据预先注册所述特效对象时切片保存的显示数据,确定当前帧以及下一帧需要渲染的局部区域,包括:根据所述ClearRes中保存的当前帧以及下一帧的需要渲染的区域信息,确认当前帧以及下一帧需要渲染的局部区域。
[0016]结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述计算所述特效对象每一帧中有效的显示数据,并对所述显示数据进行切片;将切片后的第一类型显示数据保存在CpuRes中,将切片后的第二类型显示数据保存在GpuRes中,包括:
[0017]采用三角形图像计算法计算所述特效对象每一帧中有效的显示数据,并对所述显示数据进行三角形切片;
[0018]将小于第一预设阈值的三角形切片的显示数据保存在CpuRes中,将大于第二预设阈值的三角形切片的显示数据保存在GpuRes中;
[0019]其中所述小于第一预设阈值的三角形切片的显示数据为所述第一类型显示数据,所述大于第二预设阈值的三角形切片的显示数据为所述第二类型显示数据;所述第一预设阈值小于或等于所述第二预设阈值。
[0020]结合第一方面,在第四种可能的实现方式中,在所述确定当前帧以及下一帧需要渲染的局部区域之前,还包括:
[0021]预计算所述当前帧k渲染所需的时间Τκ,以及所述当前帧往下第一帧k+Ι渲染所需的时间Τκ+1;
[0022]当所述^大于所述Τκ+1时,预计算所述当前帧往下第二帧k+2渲染所需的时间Τκ+2,当所述IVJ、于所述T K+1时,将所述当前帧往下第一帧k+Ι作为所述下一帧;
[0023]当所述IVj、于所述Τ K+1与所述Τ κ+2之和时,将所述当前帧往下第二帧k+2作为所述下一帧;当所述^大于所述Τ K+1与Τ κ+2之和时,预计算所述当前帧往下第三帧k+3清染所需的时间Τκ+3,直到满足公式TK〈TK+1+TK+2...+Τκ+η时,所述Τ κ+η为所述当前帧往下第η帧k+n渲染所需的时间,其中所述η为大于2的自然数,将所述当前帧往下第η帧k+n作为所述下一帧。
[0024]结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述得到当前帧完整的显示图像之后,将所述下一帧作为当前帧并继续执行所述根据预先注册所述特效对象时切片保存的显示数据,确定当前帧以及下一帧需要渲染的局部区域的步骤。
[0025]结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,当对所述特效对象渲染完成后,在特效队列中将所述特效对象销毁,并从所述特效队列中读取下一个需要渲染的特效对象。
[0026]本发明实施例第二方面公开了一种图像渲染系统,包括:
[0027]读取模块,用于读取当前需渲染的特效对象;
[0028]区域确定模块,用于根据预先注册所述特效对象时切片保存的显示数据,确定当前帧以及下一帧需要渲染的局部区域;
[0029]预计算渲染模块,用于通过预计算渲染器将所述局部区域在画布中擦除,并对所述中央处理器内存CpuRes中当前帧对应的第一类型显示数据进行预计算渲染,得到预计算图形;
[0030]合并渲染模块,用于通过预设的底层图形库渲染器对图形处理器内存GpuRes中当前帧对应的第二类型显示数据进行渲染,并与所述预计算图形进行合并渲染,得到当前帧完整的显不图像;
[0031]其中,所述当前帧需要渲染的局部区域包括所述第一类型显示数据和所述第二类型显示数据,所述第一类型显示数据小于所述第二类型显示数据。
[0032]结合第二方面,在第一种可能的实现方式中,还包括:
[0033]计算切片模块,用于在所述读取模块读取当前需渲染的特效对象之前,在将所述特效对象注册到图形引擎时,计算所述特效对象每一帧中有效的显示数据,并对所述显示数据进行切片;
[0034]数据保存模块,用于将切片后的第一类型显示数据保存在CpuRes中,将切片后的第二类型显示数据保存在GpuRes中。
[0035]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据保存模块还用于,在所述计算切片模块对所述显示数据进行切片之后,将切片后需要渲染的区域信息保存在擦除内存ClearRes中;
[0036]所述区域确定模块具体用于,根据所述ClearRes中保存的当前帧以及下一帧的需要渲染的区域信息,确认当前帧以及下一帧需要渲染的局部区域。
[0037]结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述计算切片模块具体用于采用三角形图像计算法计算所述特效对象每一帧中有效的显示数据,并对所述显示数据进行三角形切片;
[0038]所述数据保存模块具体用于,将小于第一预设阈值的三角形切片的显示数据保存在CpuRes中,将大于第二预设阈值的三角形切片的显示数据保存在GpuRes中;
[0039]其中所述小于第一预设阈值的三角形切片的显示数据为所述第一类型显示数据,所述大于第二预设阈值的三角形切片的显示数据为所述第二类型显示数据;所述第一预设阈值小于或等于所述第二预设阈值。
[0040]结合第二方面,在第四种可能的实现方式中,还包括:
[0041]时间预计算模块,用于在所述区域确定模块确定当前帧以及下一帧需要渲染的局部区域之前,预计算所述当前帧k渲染所需的时间Τκ,以及所述当前帧往下第一帧k+Ι渲染所需的时间Τκ+1;
[0042]当所述^大于所述Τ K+1时,所述时间预计算模块还用于预计算所述当前帧往下第二帧k+2渲染所需的时间Τκ+2,当所述IVj、于所述Τ K+1时,将所述当前帧往下第一帧k+Ι作为所述下一帧;
[0043]当所述IVj、于所述Τ K+1与所述Τ κ+2之和时,将所述当前帧往下第二帧k+2作为所述下一帧;当所述^大于所述T K+1与τ κ+2之
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1