双引擎游戏内置工具栏的方法、装置及终端的制作方法

文档序号:9597678阅读:286来源:国知局
双引擎游戏内置工具栏的方法、装置及终端的制作方法
【技术领域】
[0001]本发明涉及游戏显示处理技术领域,尤其涉及一种双引擎游戏内置工具栏的方法、装置以及终端。
【背景技术】
[0002]直播内置工具栏是一种由外部直播客户端注入到游戏进程内,将工具栏界面显示在游戏画面上,方便玩家在游戏过程中控制直播,查看直播信息的直播技术。

【发明内容】

[0003]经工程测试研究发现,目前业界的直播内置工具栏都是内置于单引擎架构的游戏中。但是对于日渐流行的双引擎架构的游戏来说,目前还没有对应的双引擎游戏内置工具栏的技术,能够使游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
[0004]为实现在双引擎架构的游戏中内置直播工具栏,我们提出了一种双引擎游戏内置工具栏的技术,当游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
[0005]为实现上述目的,本发明提供一种双引擎游戏内置工具栏的方法、装置及终端,能够将工具栏内置到双引擎架构的游戏中,并且当游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换。
[0006]本发明实施例提供了一种双引擎游戏内置工具栏的方法,包括:
[0007]在游戏进程运行时,实时检测工具栏进程的当前状态;
[0008]当检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
[0009]根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
[0010]作为上述方案的改进,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
[0011]在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
[0012]作为上述方案的改进,若工具栏启动,所述工具栏进程生成的状态ID为1 ;
[0013]若当前工具栏画面生成并写入所述共享内存中,所述工具栏进程生成的状态ID为2 ;
[0014]若工具栏关闭,所述工具栏进程生成的状态ID为3。
[0015]作为上述方案的改进,若实时检测所述匿名管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
[0016]作为上述方案的改进,对2D游戏引擎贴图流程进行初始化具体包括:
[0017]通过API HOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
[0018]作为上述方案的改进,对3D游戏引擎绘图流程进行初始化具体包括:
[0019]通过API HOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
[0020]作为上述方案的改进,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
[0021]所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
[0022]作为上述方案的改进,若当前调用的函数为IDirectDrawSurface7::Unlock,贝lj判断当前运行为2D游戏引擎;
[0023]若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
[0024]作为上述方案的改进,若实时检测所述匿名管道中的状态ID为2时,则从所述共享内存中读取所述当前工具栏画面到读写缓存模块中。
[0025]作为上述方案的改进,若实时检测所述匿名管道中的状态ID为3时,则清理所述写缓存模块中的工具栏画面。
[0026]作为上述方案的改进,将当前工具栏画面绘制到当前游戏画面上具体为:
[0027]将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
[0028]作为上述方案的改进,所述工具栏进程为直播工具栏进程。
[0029]作为上述方案的改进,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
[0030]在游戏进程运行时,以预设频率实时检测工具栏进程的当前状态。
[0031]本发明实施例对应提供了一种双引擎游戏内置工具栏的装置,包括:
[0032]检测模块,用于在游戏进程运行时,实时检测工具栏进程的当前状态;
[0033]工具栏画面读取模块,用于当检测模块检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
[0034]工具栏画面绘制模块,用于根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
[0035]作为上述方案的改进,所述检测模块进一步用于:
[0036]在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
[0037]作为上述方案的改进,所述工具栏进程生成的状态ID为1时表示工具栏启动;
[0038]所述工具栏进程生成的状态ID为2时表示当前工具栏画面生成并写入所述共享内存中;
[0039]所述工具栏进程生成的状态ID为3时表示工具栏关闭。
[0040]作为上述方案的改进,所述装置还包括初始化模块,用于若所述检测模块实时检测游戏进程的输入管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
[0041]作为上述方案的改进,所述初始化模块对2D游戏引擎贴图流程进行初始化操作包括:
[0042]通过API HOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
[0043]作为上述方案的改进,所述初始化模块对3D游戏引擎绘图流程进行初始化操作包括:
[0044]通过API HOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
[0045]作为上述方案的改进,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
[0046]所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
[0047]作为上述方案的改进,所述装置还包括判断模块,用于:若当前调用的函数为IDirectDrawSurface7::Unlock,贝lj判断当前运行为2D游戏引擎;
[0048]若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
[0049]作为上述方案的改进,若所述检测模块实时检测游
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1