一种帧率动态获取的方法及系统.pdf

上传人:xia****o6 文档编号:6012403 上传时间:2019-04-03 格式:PDF 页数:10 大小:600.42KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610794959.6

申请日:

2016.08.31

公开号:

CN106371786A

公开日:

2017.02.01

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 3/14申请日:20160831|||公开

IPC分类号:

G06F3/14

主分类号:

G06F3/14

申请人:

福建省天奕网络科技有限公司

发明人:

刘德建; 彭震; 巩振烨; 周小白; 林陶钧; 丁迪锋; 曾捷

地址:

350212 福建省福州市长乐市湖南镇大鹤村

优先权:

专利代理机构:

福州市博深专利事务所(普通合伙) 35214

代理人:

林志峥

PDF下载: PDF下载
内容摘要

本发明涉及监控领域,尤其涉及一种帧率动态获取的方法及系统。本发明通过获取显示画面函数的入口地址,得到第一地址;所述显示画面函数用于将后台绘制好的画面显示在当前界面上;预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和显示帧率;获取所述第一函数的入口地址,得到第二地址;设置所述显示画面函数的函数指针指向所述第二地址;设置所述第一函数的函数指针指向所述第一地址。实现了无需修改源代码即可实时获取当前界面的帧率。

权利要求书

1.一种帧率动态获取的方法,其特征在于,包括:
获取显示画面函数的入口地址,得到第一地址;所述显示画面函数用于将后台绘制好
的画面显示在当前界面上;
预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和显示
帧率;
获取所述第一函数的入口地址,得到第二地址;
设置所述显示画面函数的函数指针指向所述第二地址;
设置所述第一函数的函数指针指向所述第一地址。
2.根据权利要求1所述的一种帧率动态获取的方法,其特征在于,所述计算帧率,具体
为:
获取当前系统时间,得到当前帧的显示时间点;
获取前一帧的显示时间点;
将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单帧的显示时间差;
将单位时间除以所述单帧的显示时间差,得到帧率。
3.根据权利要求1所述的一种帧率动态获取的方法,其特征在于,执行所述显示画面函
数的函数体,具体为:
获取所述第一函数的函数指针指向的入口地址,得到第三地址;
通过所述第三地址调用所述显示画面函数。
4.根据权利要求1所述的一种帧率动态获取的方法,其特征在于,所述显示帧率,具体
为:
预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中的两种颜色值所表示的
颜色互为补色;
获取帧率显示区域的中心点的颜色值,得到第一颜色值;
从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,得到第二颜色值;
设置所述帧率的颜色值为所述第二颜色值;
在当前界面的左上角显示通过第一函数计算得到的帧率的值。
5.根据权利要求1所述的一种帧率动态获取的方法,其特征在于,所述获取显示画面函
数的入口地址,具体为:
获取绘图接口地址;所述绘图接口中包含所述显示画面函数;
获取所述显示画面函数的偏移量;
将所述绘图接口地址加上所述偏移量,得到显示画面函数的入口地址。
6.一种帧率动态获取的系统,其特征在于,包括:
第一获取模块,用于获取显示画面函数的入口地址,得到第一地址;所述显示画面函数
用于将后台绘制好的画面显示在当前界面上;
第一预设模块,用于预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函
数的函数体和显示帧率;
第二获取模块,用于获取所述第一函数的入口地址,得到第二地址;
第一设置模块,用于设置所述显示画面函数的函数指针指向所述第二地址;
第二设置模块,用于设置所述第一函数的函数指针指向所述第一地址。
7.根据权利要求6所述的一种帧率动态获取的系统,其特征在于,还包括:
第三获取模块,用于获取当前系统时间,得到当前帧的显示时间点;
第四获取模块,用于获取前一帧的显示时间点;
减模块,用于将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单帧的
显示时间差;
除模块,用于将单位时间除以所述单帧的显示时间差,得到帧率。
8.根据权利要求6所述的一种帧率动态获取的系统,其特征在于,还包括:
第五获取模块,用于获取所述第一函数的函数指针指向的入口地址,得到第三地址;
调用模块,用于通过所述第三地址调用所述显示画面函数。
9.根据权利要求6所述的一种帧率动态获取的系统,其特征在于,还包括:
第二预设模块,用于预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中的两
种颜色值所表示的颜色互为补色;
第六获取模块,用于获取帧率显示区域的中心点的颜色值,得到第一颜色值;
搜索模块,用于从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,得到
第二颜色值;
第三设置模块,用于设置所述帧率的颜色值为所述第二颜色值;
显示模块,用于在当前界面的左上角显示通过第一函数计算得到的帧率的值。
10.根据权利要求6所述的一种帧率动态获取的系统,其特征在于,所述第一获取模块
包括:
第七获取模块,用于获取绘图接口地址;所述绘图接口中包含所述显示画面函数;
第八获取模块,用于获取所述显示画面函数的偏移量;
加模块,用于将所述绘图接口地址加上所述偏移量,得到显示画面函数的入口地址。

说明书

一种帧率动态获取的方法及系统

技术领域

本发明涉及监控领域,尤其涉及一种帧率动态获取的方法及系统。

背景技术

帧率是用来分析游戏显示是否出现瞬间卡顿的重要参数。随着信息技术的发展,
目前新开发的游戏中大多自带有帧率统计功能。但是,早期开发的游戏大部分没有帧率统
计功能,只能靠个人感觉来判断是否出现卡顿的现象。现有技术中,若要在没有帧率统计功
能的游戏中添加该功能,需要通过修改源码的方式实现。然而,游戏的源码量大多比较庞
大,且早期开发该游戏的程序人员可能早已调离其它项目组,新的工程师对该游戏的源码
进行修改需要耗费大量不必要的时间和精力。

发明内容

本发明所要解决的技术问题是:本发明提出一种帧率动态获取的方法及系统,实
现无需修改源码即可实时获取当前界面的帧率。

为了解决上述技术问题,本发明采用的技术方案为:

本发明提供一种帧率动态获取的方法,包括:

获取显示画面函数的入口地址,得到第一地址;所述显示画面函数用于将后台绘
制好的画面显示在当前界面上;

预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和
显示帧率;

获取所述第一函数的入口地址,得到第二地址;

设置所述显示画面函数的函数指针指向所述第二地址;

设置所述第一函数的函数指针指向所述第一地址。

本发明还提供一种帧率动态获取的系统,包括:

第一获取模块,用于获取显示画面函数的入口地址,得到第一地址;所述显示画面
函数用于将后台绘制好的画面显示在当前界面上;

第一预设模块,用于预设第一函数;所述第一函数用于计算帧率、执行所述显示画
面函数的函数体和显示帧率;

第二获取模块,用于获取所述第一函数的入口地址,得到第二地址;

第一设置模块,用于设置所述显示画面函数的函数指针指向所述第二地址;

第二设置模块,用于设置所述第一函数的函数指针指向所述第一地址。

本发明的有益效果在于:通过调换显示画面函数和第一函数的函数指针所指向的
入口地址,实现无需修改源代码即可实时获取当前界面的帧率;所述第一函数用于计算帧
率、执行所述显示画面函数的函数体和显示帧率,通过所述第一函数可实时获取当前界面
的帧率并显示在当前界面上。

附图说明

图1为本发明一种帧率动态获取的方法的流程框图;

图2为本发明一种帧率动态获取的系统的结构框图;

标号说明:

1、第一获取模块;2、第一预设模块;3、第二获取模块;4、第一设置模块;5、第二设
置模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附
图予以说明。

本发明最关键的构思在于:通过调换显示画面函数和第一函数的函数指针所指向
的入口地址,实现无需修改源代码即可实时获取当前界面的帧率。

如图1所示,本发明提供一种帧率动态获取的方法,包括:

获取显示画面函数的入口地址,得到第一地址;所述显示画面函数用于将后台绘
制好的画面显示在当前界面上;

预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和
显示帧率;

获取所述第一函数的入口地址,得到第二地址;

设置所述显示画面函数的函数指针指向所述第二地址;

设置所述第一函数的函数指针指向所述第一地址。

其中,显示画面函数用于将后台绘制好的画面显示在当前界面上;第一函数为自
定义的函数,包括计算帧率,执行显示画面函数的函数体和显示帧率的功能。通过交换第一
函数和显示画面函数的函数指针所指向的入口地址,使得当程序调用画面显示函数时,由
于此时画面显示函数的函数指针实际指向的是第一函数的入口地址,因此,执行的是第一
函数的函数体。第一函数先执行计算帧率的操作,再执行显示画面函数的函数体将后台绘
制好的画面显示在当前界面上,最后将计算所得的帧率显示在当前界面上。可通过观察帧
率直接明了的判断游戏是否卡顿,比如游戏的帧率为60帧/秒时处于稳定状态,当前界面显
示的帧率突然变成30帧/秒,则说明游戏发生了卡顿的现象。

进一步地,所述计算帧率,具体为:

获取当前系统时间,得到当前帧的显示时间点;

获取前一帧的显示时间点;

将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单帧的显示时间
差;

将单位时间除以所述单帧的显示时间差,得到帧率。

由上述描述可知,可实现实时计算当前画面的帧率。

显示每一帧画面都需要调用显示画面函数,因此,在执行显示画面函数的函数体
之前记录下当前的系统时间,并与为了显示上一帧而调用显示画面函数的时间进行比较,
可获得单帧的显示时间差。将单位时间除以所述单帧的显示时间差,可得到每单位时间可
显示多少帧,即帧率。优选地,单位时间一般为1秒。

进一步地,执行所述显示画面函数的函数体,具体为:

获取所述第一函数的函数指针指向的入口地址,得到第三地址;

通过所述第三地址调用所述显示画面函数。

由上述描述可知,可实现执行所述显示画面函数的函数体。

由于第一函数和显示画面函数的函数指针所指向的入口地址进行了调换,此时显
示画面函数的函数指针所指向的入口地址实际为第一函数的入口地址,若直接通过函数名
调用显示画面函数无法执行显示画面函数实际的函数体。由于此时第一函数的函数指针指
向的入口地址为显示画面函数的入口地址,因此,需先获得第一函数的函数指针指向的入
口地址,再通过该入口地址调用显示画面函数,执行显示画面函数的函数体。

进一步地,所述显示帧率,具体为:

预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中的两种颜色值所表
示的颜色互为补色;

获取帧率显示区域的中心点的颜色值,得到第一颜色值;

从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,得到第二颜色
值;

设置所述帧率的颜色值为所述第二颜色值;

在当前界面的左上角显示通过第一函数计算得到的帧率的值。

由上述描述可知,可实现动态改变帧率的显示颜色,从而突出显示帧率。

随着游戏的进程,显示帧率区域的颜色会发生变化,若使用单一的颜色显示帧率,
难以避免显示帧率的颜色和显示帧率区域的背景颜色相近,从而无法清晰地观察到帧率的
变化。补色为反差较大的颜色,因此使用显示帧率区域的颜色的补色来显示帧率,可保证突
出显示帧率。

进一步地,所述获取显示画面函数的入口地址,具体为:

获取绘图接口地址;所述绘图接口中包含所述显示画面函数;

获取所述显示画面函数的偏移量;

将所述绘图接口地址加上所述偏移量,得到显示画面函数的入口地址。

由上述描述可知,可实现获取显示画面函数的入口地址。

如图2所示,本发明还提供一种帧率动态获取的系统,包括:

第一获取模块1,用于获取显示画面函数的入口地址,得到第一地址;所述显示画
面函数用于将后台绘制好的画面显示在当前界面上;

第一预设模块2,用于预设第一函数;所述第一函数用于计算帧率、执行所述显示
画面函数的函数体和显示帧率;

第二获取模块3,用于获取所述第一函数的入口地址,得到第二地址;

第一设置模块4,用于设置所述显示画面函数的函数指针指向所述第二地址;

第二设置模块5,用于设置所述第一函数的函数指针指向所述第一地址。

进一步地,还包括:

第三获取模块,用于获取当前系统时间,得到当前帧的显示时间点;

第四获取模块,用于获取前一帧的显示时间点;

减模块,用于将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单
帧的显示时间差;

除模块,用于将单位时间除以所述单帧的显示时间差,得到帧率。

进一步地,还包括:

第五获取模块,用于获取所述第一函数的函数指针指向的入口地址,得到第三地
址;

调用模块,用于通过所述第三地址调用所述显示画面函数。

进一步地,还包括:

第二预设模块,用于预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中
的两种颜色值所表示的颜色互为补色;

第六获取模块,用于获取帧率显示区域的中心点的颜色值,得到第一颜色值;

搜索模块,用于从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,
得到第二颜色值;

第三设置模块,用于设置所述帧率的颜色值为所述第二颜色值;

显示模块,用于在当前界面的左上角显示通过第一函数计算得到的帧率的值。

进一步地,所述第一获取模块1包括:

第七获取模块,用于获取绘图接口地址;所述绘图接口中包含所述显示画面函数;

第八获取模块,用于获取所述显示画面函数的偏移量;

加模块,用于将所述绘图接口地址加上所述偏移量,得到显示画面函数的入口地
址。

本发明的实施例一为:

获取绘图接口地址;所述绘图接口中包含显示画面函数;

获取所述显示画面函数的偏移量;

将所述绘图接口地址加上所述偏移量,得到第一地址,即显示画面函数的入口地
址;所述显示画面函数用于将后台绘制好的画面显示在当前界面上;

预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和
显示帧率;

获取所述第一函数的入口地址,得到第二地址;

设置所述显示画面函数的函数指针指向所述第二地址;

设置所述第一函数的函数指针指向所述第一地址;

当需要将后台绘制好的画面显示到当前界面时,程序调用显示画面函数,由于此
时显示画面函数的函数指针指向的入口地址为所述第一函数的入口地址,此时实际上执行
的是第一函数的函数体;

获取当前系统时间,得到当前帧的显示时间点;

获取前一帧的显示时间点;

将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单帧的显示时间
差;

将单位时间除以所述单帧的显示时间差,得到帧率;

获取所述第一函数的函数指针指向的入口地址,得到第三地址;

通过所述第三地址调用所述显示画面函数,将后台绘制好的画面显示到当前界
面;

预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中的两种颜色值所表
示的颜色互为补色;

获取帧率显示区域的中心点的颜色值,得到第一颜色值;

从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,得到第二颜色
值;

设置所述帧率的颜色值为所述第二颜色值;

在当前界面的左上角显示通过第一函数计算得到的帧率的值。

本发明的实施例二为:

第一获取模块中的第七获取模块获取绘图接口地址;所述绘图接口中包含所述显
示画面函数;第八获取模块获取所述显示画面函数的偏移量;加模块,用于将所述绘图接口
地址加上所述偏移量,得到显示画面函数的入口地址。所述显示画面函数用于将后台绘制
好的画面显示在当前界面上;

第一预设模块预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函
数的函数体和显示帧率;

第二获取模块获取所述第一函数的入口地址,得到第二地址;

第一设置模块设置所述显示画面函数的函数指针指向所述第二地址;

第二设置模块设置所述第一函数的函数指针指向所述第一地址;

第三获取模块获取当前系统时间,得到当前帧的显示时间点;

第四获取模块获取前一帧的显示时间点;

减模块将所述当前帧的显示时间点减去所述前一帧的显示时间点,得到单帧的显
示时间差;

除模块将单位时间除以所述单帧的显示时间差,得到帧率。

第五获取模块获取所述第一函数的函数指针指向的入口地址,得到第三地址;

调用模块通过所述第三地址调用所述显示画面函数;

第二预设模块预设颜色匹配表;所述颜色匹配表包含颜色对,所述颜色对中的两
种颜色值所表示的颜色互为补色;

第六获取模块获取帧率显示区域的中心点的颜色值,得到第一颜色值;

搜索模块从所述颜色匹配表中搜索所述第一颜色值对应的补色的颜色值,得到第
二颜色值;

第三设置模块设置所述帧率的颜色值为所述第二颜色值;

显示模块在当前界面的左上角显示通过第一函数计算得到的帧率的值。

本发明的实施例三为:

获取DirectX的接口地址;

获取Direct3DDevice9_Present_HookProc函数的偏移量;在DirectX的9.0版本
中,Direct3DDevice9_Present_HookProc函数的偏移量为17;

将DirectX的接口地址加上Direct3DDevice9_Present_HookProc函数的偏移量,
得到第一地址;Direct3DDevice9_Present_HookProc函数用于将后台绘制好的画面显示在
当前界面上;

预设第一函数;第一函数用于计算帧率、执行显示画面函数的函数体和显示帧率;

获取第一函数的入口地址,得到第二地址;

设置Direct3DDevice9_Present_HookProc函数的函数指针指向第二地址;

设置第一函数的函数指针指向第一地址;

当需要将后台绘制好的画面显示到当前界面时,程序调用Direct3DDevice9_
Present_HookProc函数,由于此时Direct3DDevice9_Present_HookProc函数的函数指针指
向的入口地址为第一函数的入口地址,此时实际上执行的是第一函数的函数体;

获取当前系统时间,得到当前帧的显示时间点;

获取前一帧的显示时间点;

将当前帧的显示时间点减去前一帧的显示时间点,得到单帧的显示时间差;

将单位时间除以单帧的显示时间差,得到帧率;

获取第一函数的函数指针指向的入口地址,得到第三地址;

通过第三地址调用Direct3DDevice9_Present_HookProc函数,将后台绘制好的画
面显示到当前界面;

预设颜色匹配表;颜色匹配表包含颜色对,颜色对中的两种颜色值所表示的颜色
互为补色;

获取当前帧率显示区域的中心点的颜色为紫色;

从颜色匹配表中搜索到紫色的补色为黄色;

设置帧率的颜色值为黄色;

在当前界面的左上角显示通过第一函数计算得到的帧率的值。

综上所述,本发明提供的一种帧率动态获取的方法及系统,通过调换显示画面函
数和第一函数的函数指针所指向的入口地址,实现无需修改源代码即可实时获取当前界面
的帧率;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和显示帧率,通过所
述第一函数可实时获取当前界面的帧率并显示在当前界面上;进一步地,可实现实时计算
当前画面的帧率;进一步地,可实现动态改变帧率的显示颜色,从而突出显示帧率。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发
明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括
在本发明的专利保护范围内。

一种帧率动态获取的方法及系统.pdf_第1页
第1页 / 共10页
一种帧率动态获取的方法及系统.pdf_第2页
第2页 / 共10页
一种帧率动态获取的方法及系统.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种帧率动态获取的方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种帧率动态获取的方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明涉及监控领域,尤其涉及一种帧率动态获取的方法及系统。本发明通过获取显示画面函数的入口地址,得到第一地址;所述显示画面函数用于将后台绘制好的画面显示在当前界面上;预设第一函数;所述第一函数用于计算帧率、执行所述显示画面函数的函数体和显示帧率;获取所述第一函数的入口地址,得到第二地址;设置所述显示画面函数的函数指针指向所述第二地址;设置所述第一函数的函数指针指向所述第一地址。实现了无需修改源代码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1