外设消息的响应方法及装置、存储介质、电子设备制造方法及图纸

技术编号:27289666 阅读:20 留言:0更新日期:2021-02-06 11:58
本发明专利技术公开了一种外设消息的响应方法及装置、存储介质、电子设备,属于计算机技术领域。其中,该方法包括:监测游戏客户端的画面渲染进程;在所述画面渲染进程将渲染数据提交至显存后,根据所述画面渲染进程调用目标渲染提交函数,其中,所述目标渲染提交函数禁止执行垂直同步;在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息。通过本发明专利技术,解决了相关技术只能通过提高显示刷新率来降低外设消息延迟的技术问题,节省了视频码率,达到既锁定游戏FPS上限,防止画面撕裂,又可以实时响应外设消息,降低了外设消息的延迟。迟。迟。

【技术实现步骤摘要】
外设消息的响应方法及装置、存储介质、电子设备


[0001]本专利技术涉及计算机领域,具体而言,涉及一种外设消息的响应方法及装置、存储介质、电子设备。

技术介绍

[0002]相关技术中,在游戏交互过程中,需要做到画面流程和操作同步,会涉及到FPS(Frames Per Second),画面撕裂,垂直同步(VSYNC,Verticalsynchronization)等参数。其中FPS是每秒传输帧数,指游戏一秒钟内刷新画面的次数。如果游戏需要显示高速移动的物体,则需要高FPS来呈现画面,否则玩家将感受到画面不顺畅。画面撕裂是当游戏FPS超过显示器刷新率时,可能会出现上一帧来不及显示完毕,下一帧就已经在显示,于是在显示器的一次刷新中,可以看到画面上半部分是上一帧,而下半部分是下一帧。这种上下两部分不是一个完整画面的现象叫做画面撕裂。为了避免画面撕裂,提出了垂直同步,是一种让游戏提交画面和显示器刷新同步的一种技术,它能锁定游戏FPS不超过显示器刷新率,使高速运动类的游戏不会产生画面撕裂。
[0003]相关技术中,将画面渲染和获取外设消息放置在一个线程中实现,在线程中同时处理外设消息和渲染数据,在一个渲染周期中,线程向显存提交渲染数据后,需要等到下一个周期才能处理外设消息,所以开启垂直同步会导致外设消息无法及时返回,从而导致外设消息不能及时获取并处理,通过垂直同步解决画面撕裂的同时带来处理外设消息延迟的问题,可以通过设置高刷新率显示器来缓解该问题,通过建议玩家购买高刷新率显示器,以降低显示器两次刷新之间的间隔时间,从而能更快速从渲染过程中返回,但是高刷新率显示器一般来说价格高昂,并且需要淘汰现有显示器,造成资源浪费。
[0004]针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。

技术实现思路

[0005]本专利技术实施例提供了一种外设消息的响应方法及装置、存储介质、电子设备。
[0006]根据本申请实施例的一个方面,提供了一种外设消息的响应方法,包括:监测游戏客户端的画面渲染进程;在所述画面渲染进程将渲染数据提交至显存后,根据所述画面渲染进程调用目标渲染提交函数,其中,所述目标渲染提交函数禁止执行垂直同步;在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息。
[0007]进一步,根据所述画面渲染进程调用目标渲染提交函数包括:若监测到所述画面渲染进程的原渲染提交函数,调用预设钩子函数;通过所述预设钩子函数访问所述原渲染提交函数的同步参数,其中,所述同步参数用于表征所述游戏客户端是否开启垂直同步;基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数;执行所述目标渲染提交函数。
[0008]进一步,基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数包括:将所述同步参数设置为第一状态值,其中,所述第一状态值用于指示所述游戏客户端禁
止执行垂直同步;使用所述第一状态值重新配置所述原渲染提交函数的同步参数,得到所述目标渲染提交函数。
[0009]进一步,在基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数之前,所述方法还包括:获取所述同步参数的状态值;判断所述状态值是否为第二状态值,其中,所述第二状态值用于指示所述游戏客户端允许执行垂直同步;若所述状态值为第二状态值,确定执行所述基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数。
[0010]进一步,在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息包括:获取所述游戏客户端在当前渲染周期的显示刷新时间;判断当前时间是否达到所述显示刷新时间之前的预设时间;若当前时间未达到所述预设时间,响应所述游戏客户端的外设消息,直到当前时间达到所述预设时间。
[0011]进一步,在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息包括:获取所述游戏客户端在当前渲染周期的显示刷新时间;计算当前时间与所述显示刷新时间的间隔时长;在所述间隔时长内,响应所述游戏客户端的外设消息。
[0012]进一步,响应所述游戏客户端的外设消息包括:采集所述游戏客户端的外设消息;将所述外设消息提交至游戏主线程,其中,所述游戏主线程运行在所述游戏客户端上。
[0013]进一步,在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息之后,所述方法还包括:在响应时间结束后,将所述目标渲染提交函数返回至游戏主线程。
[0014]根据本申请实施例的另一个方面,还提供了一种外设消息的响应装置,包括:监测模块,用于监测游戏客户端的画面渲染进程;调用模块,用于在所述画面渲染进程将渲染数据提交至显存后,根据所述画面渲染进程调用目标渲染提交函数,其中,所述目标渲染提交函数禁止执行垂直同步;响应模块,用于在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息。
[0015]进一步,所述调用模块包括:调用单元,用于若监测到所述画面渲染进程的原渲染提交函数,调用预设钩子函数;访问单元,用于通过所述预设钩子函数访问所述原渲染提交函数的同步参数,其中,所述同步参数用于表征所述游戏客户端是否开启垂直同步;设置单元,用于基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数;执行单元,用于执行所述目标渲染提交函数。
[0016]进一步,所述设置单元包括:设置子单元,用于将所述同步参数设置为第一状态值,其中,所述第一状态值用于指示所述游戏客户端禁止执行垂直同步;配置子单元,用于使用所述第一状态值重新配置所述原渲染提交函数的同步参数,得到所述目标渲染提交函数。
[0017]进一步,所述调用模块还包括:获取单元,用于在所述设置单元基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数之前,获取所述同步参数的状态值;判断单元,用于判断所述状态值是否为第二状态值,其中,所述第二状态值用于指示所述游戏客户端允许执行垂直同步;设置单元,用于若所述状态值为第二状态值,基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数。
[0018]进一步,所述响应模块包括:第一获取单元,用于获取所述游戏客户端在当前渲染周期的显示刷新时间;判断单元,用于判断当前时间是否达到所述显示刷新时间之前的预设时间;第一响应单元,用于若当前时间未达到所述预设时间,响应所述游戏客户端的外设
消息,直到当前时间达到所述预设时间。
[0019]进一步,所述响应模块包括:第二获取单元,用于获取所述游戏客户端在当前渲染周期的显示刷新时间;计算单元,用于计算当前时间与所述显示刷新时间的间隔时长;第二响应单元,用于在所述间隔时长内,响应所述游戏客户端的外设消息。
[0020]进一步,所述第一响应单元或所述第二响应单元在响应所述游戏客户端的外设消息时,具体用于:采集所述游戏客户端的外设消息;将所述外设消息提交至游戏主线程,其中,所述游戏主线程运行在所述游戏客户端上。
[0021]进一步,所述装置还包括:调用模块,用于在所述响应模块在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种外设消息的响应方法,其特征在于,包括:监测游戏客户端的画面渲染进程;在所述画面渲染进程将渲染数据提交至显存后,根据所述画面渲染进程调用目标渲染提交函数,其中,所述目标渲染提交函数禁止执行垂直同步;在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息。2.根据权利要求1所述的方法,其特征在于,根据所述画面渲染进程调用目标渲染提交函数包括:若监测到所述画面渲染进程的原渲染提交函数,调用预设钩子函数;通过所述预设钩子函数访问所述原渲染提交函数的同步参数,其中,所述同步参数用于表征所述游戏客户端是否开启垂直同步;基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数;执行所述目标渲染提交函数。3.根据权利要求2所述的方法,其特征在于,基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数包括:将所述同步参数设置为第一状态值,其中,所述第一状态值用于指示所述游戏客户端禁止执行垂直同步;使用所述第一状态值重新配置所述原渲染提交函数的同步参数,得到所述目标渲染提交函数。4.根据权利要求2所述的方法,其特征在于,在基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数之前,所述方法还包括:获取所述同步参数的状态值;判断所述状态值是否为第二状态值,其中,所述第二状态值用于指示所述游戏客户端允许执行垂直同步;若所述状态值为第二状态值,确定执行所述基于所述同步参数将所述原渲染提交函数设置为目标渲染提交函数。5.根据权利要求1所述的方法,其特征在于,在所述目标渲染提交函数的渲染周期内响应所述游戏客户端的外设消息包括:获取所述游戏客户端在当前渲染周期的显示刷新时间;判断当前时间是否达到所述显示刷新时...

【专利技术属性】
技术研发人员:郑明
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:

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

1