[发明专利]一种基于Direct3D共享纹理的交互方法及系统有效
申请号: | 201910368862.2 | 申请日: | 2019-05-05 |
公开(公告)号: | CN110321193B | 公开(公告)日: | 2022-03-18 |
发明(设计)人: | 罗大军 | 申请(专利权)人: | 四川盛趣时代网络科技有限公司 |
主分类号: | G06F9/451 | 分类号: | G06F9/451;G06T15/04;G06T15/00;A63F13/50 |
代理公司: | 成都君合集专利代理事务所(普通合伙) 51228 | 代理人: | 张鸣洁 |
地址: | 610000 四川省成都市自由贸易试*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 direct3d 共享 纹理 交互 方法 系统 | ||
1.一种基于Direct3D共享纹理的交互方法,其特征在于,将共享纹理注册到GPU中,将得到的纹理句柄注册到共享资源管理接口中,以供游戏进程中的模块获取共享纹理句柄;在客户端运行过程中,所有的可视区域直接绘制到共享纹理上,游戏中的模块通过GPU内存获取纹理;
通过创建消息钩子,在游戏启动时,消息钩子将图像绘制与控制模块注入到游戏进程中,以获取目标进程的Direct3D绘制接口;通过客户端的接口获取共享纹理的句柄,从而获取到GPU中对应的客户端可视区域内容;
将客户端可视加载到共享纹理中,当模块初始化时,则首先通过D3D11CreateDevice创建一个支持BGRA图像格式的Direct3D设备,并使用CreateTexture2D创建两个DXGI_FORMAT_B8G8R8A8_UNORM格式的纹理A和纹理B;当创建A纹理时,将创建参数的MiscFlags标志位传入D3D11_RESOURCE_MISC_SHARED,以作为最终游戏进程中共享的纹理;所述纹理B作为临时绘制缓存,在渲染过程中,客户端可视区域的图像先绘制到纹理B中,然后再复制到纹理A中,有效避免直接绘制到纹理A中带来的画面撕裂。
2.根据权利要求1所述的一种基于Direct3D共享纹理的交互方法,其特征在于,创建纹理C作为将客户端可视区域渲染到纹理B中的代理,创建时将CPUAccessFlags设置为D3D11_CPU_ACCESS_WRITE,以将客户端可视区域的位图信息从CPU中复制到纹理C。
3.根据权利要求2所述的一种基于Direct3D共享纹理的交互方法,其特征在于,加载渲染使用的着色器代码,将渲染区域设置为整个A纹理的大小,当客户端更新界面时,首先将位图信息传送到纹理C中,通过ID3D11DeviceContext的Map方法将纹理C的GPU内存映射到渲染程序CPU可以访问的内存,然后将位图信息复制到内存中,当复制完成时,使用ID3D11DeviceContext的Unmap方法将映射取消;将纹理C与需要渲染的输入法界面混合,然后渲染到纹理B中;最后通过CopyResource将纹理B的内容复制到纹理A中,完成界面更新。
4.根据权利要求1-3任一项所述的一种基于Direct3D共享纹理的交互方法,其特征在于,复制游戏进程中的图形绘制功能函数的具体地址,并通过HOOK的方式将绘制代码附加到游戏的绘制代码中,并且在HOOK游戏窗口的消息处理过程中,将游戏窗口的操作转换并转发到客户端中;将共享纹理A中的内容渲染到游戏的界面中,初始化时创建对应的Direct3D设备,通过Rpc接口获取共享纹理A的共享句柄,通过Open Shared Resource获取到对应的IDXGISurface1,然后获取到对应的共享纹理D;加载相应的着色器代码,创建顶点数据,将共享纹理D中的纹理大小传递到创建的绘制设备中,当游戏界面需要渲染时,附加的绘制代码将共享纹理D中的内容绘制到GPU的命令队列中。
5.根据权利要求4所述的一种基于Direct3D共享纹理的交互方法,其特征在于,将游戏窗口中的鼠标及键盘操作转发到客户端进程,通过HOOK游戏的窗口过程,获取传递到游戏窗口消息,然后将对应的坐标转换为实际的设备物理坐标,封装之后,通过Rpc接口将消息发送到客户端中;如果不需要游戏处理,则直接从HOOK之后的消息过程返回,否则将消息传递给游戏自身的消息处理函数。
6.根据权利要求1所述的一种基于Direct3D共享纹理的交互方法,其特征在于,在客户端中,将输入法的候选词窗口渲染到共享纹理中,处理IME消息,将输入法状态变化绘制到共享纹理中,从而在游戏窗口中展示输入状态。
7.根据权利要求6所述的一种基于Direct3D共享纹理的交互方法,其特征在于,转发输入法消息到客户端程序中,通过将游戏窗口的输入法切换请求转换为控制命令并转发到客户端中,客户端加载系统的输入法模块进行输入;基于Windows系统,必须获取键盘焦点的程序进行输入;在游戏显示中,游戏窗口不会被覆盖,实现客户端获取键盘焦点且不干扰游戏窗口显示。
8.一种基于Direct3D共享纹理的交互系统,其特征在于,包括独立运行的客户端渲染组件和注入到游戏进程中的图像绘制与控制模块;所述客户端渲染组件包括用于将客户端可视区域内容渲染到共享纹理中的渲染模块、用于接收并解析从游戏客户端传送到客户端的操作控制命令的远程操作解析模块、用于将接收到的操作控制命令转换成客户端操作的操作执行模块、用于将图像绘制与控制模块注入到游戏进程中的注入模块;所述图像绘制与控制模块包括用于将共享纹理中的客户端可视区域绘制到游戏窗口中的图像绘制模块、用于将游戏中的操作转换为控制命令并发送到客户端的解析模块中的控制模块;
所述远程操作解析模块接收控制命令并将控制命令中的坐标转换为客户端的窗口坐标,屏蔽不需要处理的窗口消息,将消息转发到客户端的操作执行模块;所述操作执行模块将接收到的窗口消息发送到实际的客户端窗口中,并将执行结果反馈到远程操作解析模块中;所述操作执行模块将接受到的消息转化到客户端对应的事件,将不同DPI窗口的的坐标转换成实际的物理坐标,然后通过PostMessage或者SendMessage将消息转发到实际的客户端窗口,从而避免鼠标位置的偏移。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川盛趣时代网络科技有限公司,未经四川盛趣时代网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910368862.2/1.html,转载请声明来源钻瓜专利网。