一种动态控制游戏帧率的方法技术

技术编号:8655789 阅读:252 留言:0更新日期:2013-05-01 23:25
本发明专利技术提供一种动态控制游戏帧率的方法,其将逻辑处理和画面渲染的帧率分开,在每次调用第一函数调用入口后,就统计当前游戏对渲染帧率的需求,来决定是否立即调用第二函数调用入口,以及下一次调用第一函数调用入口或者第二函数调用入口的时间间隔,然后将程序挂起,下次重新运行时,根据记录的上次调用第一函数调用入口的时间,再决定是否调用第一函数调用入口,以及再统计游戏对渲染帧率的需求,从而实现对画面渲染帧率的动态控制。本发明专利技术只在需要的时候才画面渲染,这样就在保证正常响应速度和画面流畅度的情况下,最大限度地降低了CPU的占用率,从而降低电池电量的消耗。

【技术实现步骤摘要】

本专利技术涉及。
技术介绍
随着智能手机的配置越来越高,市场占有率越来越高,针对手机平台开发的游戏也越来越多,人们随时随地可以打开手机享受游戏的乐趣,但在手机上玩游戏,手机很容易发热,电池电量减少得很快,这就影响到手机的正常使用,一旦电耗完了,就无法进行通信。手机游戏画面的实现原理和电影一样,在单位时间内使用固定的帧率刷新画面,每刷新一次画面,就要进行一次画面渲染。在个人电脑上的游戏,其帧率一般在3(Γ75左右。使用固定帧率的缺点就是,当游戏画面是静止时,程序刷新画面就显得多余了,这在电脑上问题不大,但在手机上,就消耗了本来可以节省下来的电量。 游戏的主要功能可以划分为,逻辑处理和画面渲染。对于游戏,所述逻辑是指与画面渲染无直接关系的处理,比如网络消息包的接收和发送,鼠标事件的捕获和处理等,逻辑处理只是内存中的数据运算,只占用很少的CPU,真正占用CPU最大的是画面渲染,所以优化从画面渲染入手。CPU占用率越高,电池电量消耗速度越快。如图1所示,直线表示程序运行时的时间进度,直线上方的椭圆表示逻辑处理的调用,直线下方的椭圆表示画面渲染的调用,游戏都会以一定的帧率来进行逻辑处理和画面渲染,比如60FPS(60Frames per Second),就是每秒刷新60次,每次刷新先进行逻辑处理(比如接收服务器传回的数据,判断做什么样的攻击动作等),然后进行一次画面渲染,显示新的游戏内容。在间隔的时间段里,程序处于挂起状态,不占用CPU,基本不消耗电量。帧率的高低会影响游戏的响应速度和画面流畅度,如果帧率太低,游戏反应变慢,并且游戏画面会显得断断续续。如果帧率太高,则CPU的占用会变高,电量消耗会增加。所以一般会选择一个刚好能使画面显示流畅的帧率,一般手机上休闲类游戏20FPS即能满足需求。如果是动作类游戏,就需要30FPS甚至更高。固定的帧率,就可能在很多不必要的情况下,重新刷新渲染了画面。本专利技术要解决的技术问题就是通过动态控制帧率降低冗余的画面渲染,使画面保持流畅的情况下,渲染的帧率能够最大限度地降低。
技术实现思路
本专利技术要解决的技术问题,在于提供,其将逻辑处理和画面渲染的帧率分开,保持逻辑处理的帧率不变,而对画面刷新的帧率进行动态控制。本专利技术是这样实现的:,包括如下步骤:步骤1、设置第一函数调用入口,所述第一函数调用入口是用于执行逻辑处理的函数调用入口 ;设置第二函数调用入口,所述第二函数调用入口是用于执行画面渲染的函数调用入口 ;每调用一次第一函数调用入口,即处理一次游戏逻辑,每调用一次第二函数入口,即进行刷新屏幕,进行一次画面渲染;步骤2、游戏调用一次第一函数调用入口,执行一次游戏的逻辑处理,且记录下此次运行的时刻;步骤3、分析出所有会对渲染内容和渲染帧率产生影响的地方,统计出游戏对画面渲染帧率的最高需求;步骤4、判断是否需要调用第二函数调用入口 若步骤3中的游戏逻辑处理过程中,有修改到渲染的内容,则调用第二函数调用入口,执行步骤5 ;若上次调用第二函数调用入口与此次将要调用第二函数调用入口之间的时间间隔超过或等于预设的画面渲染的时间间隔,则调用第二函数调用入口,执行步骤5 ;所述预设的画面渲染的时间间隔是从预先定义的画面渲染帧率中得到;若不符合上述两种情况,执行步骤6 ;步骤5、进行画面渲染,将游戏画面重新渲染一次,并记录下此次渲染的时刻,然后执行步骤6 ;步骤6、计算出最短的程序挂起时间,然后将程序挂起,所述将程序挂起就是使程序线程进入暂停状态,暂停使用CPU ;程序挂起时,将不占用CPU,相应的电量消耗就会减少。步骤7、当程序挂起时间消耗完毕,程序苏醒,即程序的线程由暂停状态变为执行状态,此时程序将重新占用CPU ;步骤8、判断是否调用第一函数调用入口 若上一次调用第一函数调用入口的时刻和当前时刻的时间间隔,超过或等于预设的逻辑处理的时间间隔,所述预设的逻辑处理的时间间隔是从预先定义的逻辑处理帧率中得,若是,执行步骤2,若否,则直接执行步骤4 ;上述步骤2至步骤8在游戏运行过程中,反复循环,直至退出游戏,循环停止。进一步地,所述步骤3中,会对渲染内容和渲染帧率产生影响的地方包括四种模型A、即时影响在调用第一函数调用入口进行逻辑处理时,对游戏内容做了修改,需要尽快从画面上反应出来;B、最小渲染时间间隔在调用第二函数调用入口过程中进行,收集游戏中所有对帧率有要求的地方,取各地方帧率要求中最大的帧率作为画面渲染对帧率的要求,这样能保证游戏中所有地方都能流畅显示;C、渲染事件需求对渲染时间间隔的要求由事件来触发和结束;D、最大渲染事件需求对渲染时间间隔的要求是由事件触发和结束,但它对渲染的需求更高,必须将画面渲染帧率提高到所述预先定义的最大画面渲染帧率,这样才能保证画面的流畅显示。进一步地,所述步骤6具体为首先计算当前到下一次调用第一函数调用入口进行逻辑处理的时间,再计算当前到下一次调用第二函数调用入口进行画面渲染的时间,取两者的最小值为程序挂起时间,然后将程序挂起。本专利技术具有如下优点通过追踪并统计当前屏幕范围内所有可见内容的变化情况,包括当前是否有变化以及下一次变化的时间间隔,然后决定当前是否需要画面渲染以及下一次画面渲染的时间。因此只在需要的时候才画面渲染,这样就在保证正常响应速度和画面流畅度的情况下,最大限度地降低了 CPU的占用率,从而降低电池电量的消耗。附图说明下面参照附图结合实施例对本专利技术作进一步的说明。图1为现有技术的示意图。图2为本专利技术的流程图。图3为本专利技术的效果图。具体实施方式请参阅图2,,包括如下步骤:步骤1、设置第一函数调用入口,例如可将第一函数调用入口自定义为ProcessO,所述第一函数调用入口是用于执行逻辑处理的函数调用入口 ;设置第二函数调用入口,例如可将第二函数调用入口自定义为Render O,所述第二函数调用入口是用于执行画面渲染的函数调用入口 ;每调用一次第一函数调用入口,即处理一次游戏逻辑,每调用一次第二函数入口,即进行刷新屏幕,进行一次画面渲染;步骤2、游戏调用一次第一函数调用入口,执行一次游戏的逻辑处理,且记录下此次运行的时刻;步骤3、分析出所有会对渲染内容和渲染帧率产生影响的地方,统计出游戏对画面渲染帧率的最高需求(也就是帧与帧之间的时间间隔的最小值)。帧率是指单位时间(通常是一秒)内,画面进行了多少次渲染。比如帧率是30,指一秒内游戏画面刷新渲染了 30次,对应的帧与帧之间的时间间隔就是1/30=0.033秒);所述会对渲染内容和渲染帧率产生影响的地方包括四种模型:A、即时影响:在调用第一函数调用入口进行逻辑处理时,对游戏内容做了修改,需要尽快从画面上反应出来;例如,在调用第一函数调用入口里对游戏内容作出了修改,需要尽快从画面上反应出来,又如,修改了界面控件上显示的文字,修改了人物当前的动作等,需要尽快从画面上反应出来;B、最小渲染时间间隔:在调用第二函数调用入口过程中进行,收集游戏中所有对帧率有要求的地方,例如界面在显示有闪烁效果的文字,那它对帧率的时间间隔要求就是它的闪烁间隔时间,又如人物在行走,行走动作I秒完成一次,动作资源共有20帧,那么I秒就需要播放20次,即它要求的渲染时间间隔就是50毫秒;取各地方帧率要求中最大的帧率作为画面渲染对帧率本文档来自技高网
...

【技术保护点】
一种动态控制游戏帧率的方法,其特征在于:包括如下步骤:步骤1、设置第一函数调用入口,所述第一函数调用入口是用于执行逻辑处理的函数调用入口;设置第二函数调用入口,所述第二函数调用入口是用于执行画面渲染的函数调用入口;每调用一次第一函数调用入口,即处理一次游戏逻辑,每调用一次第二函数入口,即进行刷新屏幕,进行一次画面渲染;步骤2、游戏调用一次第一函数调用入口,执行一次游戏的逻辑处理,且记录下此次运行的时刻;步骤3、分析出所有会对渲染内容和渲染帧率产生影响的地方,统计出游戏对画面渲染帧率的最高需求;步骤4、判断是否需要调用第二函数调用入口:若步骤3中的游戏逻辑处理过程中,有修改到渲染的内容,则调用第二函数调用入口,执行步骤5;若上次调用第二函数调用入口与此次将要调用第二函数调用入口之间的时间间隔超过或等于预设的画面渲染的时间间隔,则调用第二函数调用入口,执行步骤5;所述预设的画面渲染的时间间隔是从预先定义的画面渲染帧率中得到;若不符合上述两种情况,执行步骤6;步骤5、进行画面渲染,将游戏画面重新渲染一次,并记录下此次渲染的时刻,然后执行步骤6;步骤6、计算出最短的程序挂起时间,然后将程序挂起;所述将程序挂起就是使程序线程进入暂停状态,暂停使用CPU;步骤7、当程序挂起时间消耗完毕,程序苏醒,即程序的线程由暂停状态变为执行状态,此时程序将重新占用CPU;步骤8、判断是否需要调用第一函数调用入口:若上一次调用第一函数调用入口的时刻和当前时刻的时间间隔,超过或等于预设的逻辑处理的时间 间隔,所述预设的逻辑处理的时间间隔是从预先定义的逻辑处理帧率中得,若是,执行步骤2,若否,则直接执行步骤4;上述步骤2至步骤8在游戏运行过程中,反复循环,直至退出游戏,循环停止。...

【技术特征摘要】
1.一种动态控制游戏帧率的方法,其特征在于:包括如下步骤: 步骤1、设置第一函数调用入口,所述第一函数调用入口是用于执行逻辑处理的函数调用入口 ;设置第二函数调用入口,所述第二函数调用入口是用于执行画面渲染的函数调用入口 ;每调用一次第一函数调用入口,即处理一次游戏逻辑,每调用一次第二函数入口,即进行刷新屏幕,进行一次画面渲染; 步骤2、游戏调用一次第一函数调用入口,执行一次游戏的逻辑处理,且记录下此次运行的时刻; 步骤3、分析出所有会对渲染内容和渲染帧率产生影响的地方,统计出游戏对画面渲染帧率的最高需求; 步骤4、判断是否需要调用第二函数调用入口: 若步骤3中的游戏逻辑处理过程中,有修改到渲染的内容,则调用第二函数调用入口,执行步骤5 ; 若上次调用第二函数调用入口与此次将要调用第二函数调用入口之间的时间间隔超过或等于预设的画面渲染的时间间隔,则调用第二函数调用入口,执行步骤5 ;所述预设的画面渲染的时间间隔是从预先定义的画面渲染帧率中得到; 若不符合上述两种情况,执行步骤6 ; 步骤5、进行画面渲染,将游戏画面重新渲染一次,并记录下此次渲染的时刻,然后执行步骤6 ; 步骤6、计算出最短的程序挂起时间,然后将程序挂起;所述将程序挂起就是使程序线程进入暂停状态,暂停使用CPU ; 步骤7、当程序挂起时间消耗完毕,程序苏醒,即程序的线程由暂停状态变为执行状态,此时程序将重新占用CP...

【专利技术属性】
技术研发人员:郭锐刘德建陈宏展
申请(专利权)人:福州博远无线网络科技有限公司
类型:发明
国别省市:

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

1