CN104765636B - 一种远程桌面图像的合成方法和装置 - Google Patents
一种远程桌面图像的合成方法和装置 Download PDFInfo
- Publication number
- CN104765636B CN104765636B CN201410002158.2A CN201410002158A CN104765636B CN 104765636 B CN104765636 B CN 104765636B CN 201410002158 A CN201410002158 A CN 201410002158A CN 104765636 B CN104765636 B CN 104765636B
- Authority
- CN
- China
- Prior art keywords
- view data
- virtual machine
- opengl
- rendering
- remote desktop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提出了一种远程桌面图像的合成方法、装置和系统,服务器端的渲染服务器能够实现将Direct3D和OpenGL分别渲染后图像的快速融合,以获得远程桌面图像,避免现有技术分别将渲染得到的图像返回给虚拟机进行组合的低效率的问题,实现了渲染后图像的快速融合,高效地获得远程桌面图像。
Description
技术领域
本发明实施例涉及计算机技术,特别是一种远程桌面图像的合成方法、系统和装置。
背景技术
远程桌面是目前企业办公环境的一种流行技术,常用来将一台计算机屏幕显示的内容传送到另外一处的显示屏显示,通常我们使用的windows远程登录程序(mstsc.exe)是最常见远程桌面程序,可以方便的登录另外的远程计算机。目前大多数的远程桌面系统都是基于IP网络来传送远程桌面。远程桌面并不仅指远程的屏幕显示,还可以包含远程声音传送、可插拔硬件映射等技术。远程桌面又可以称为虚拟桌面。在虚拟桌面场景下至少存在一台服务器和一台客户机,通过客户机上安装的虚拟桌面客户端软件登陆到服务器上。
当用户使用远程桌面时,如果有三维(three-dimensional,3D)图像需要处理的时候,就需要我们提供的虚拟桌面有图形处理器(Graphic Processing Unit,GPU)进行图形处理,而GPU虚拟化技术就是让多台远程主机(如虚拟机)共享使用一块或多块GPU进行图形运算。目前,业界存在多种3D绘图编程接口,例如Direct 3D和OpenGl(Open GraphicsLibrary)。在采用GPU软件虚拟化方案中,由于Direct 3D和OpenGl两种绘图接口的不同,因此在GPU中需要分别进行渲染实现。
现有技术中的一种远程桌面GPU虚拟化方案中Direct 3D和OpenGL渲染图像结果融合的方法,是服务端虚拟机将Direct 3D和OpenGL指令和数据分别发送到渲染服务器上进行分开渲染,虚拟机获取到两种渲染后的图像后,在虚拟机中进行融合并形成桌面图像并发送到客户端显示。该方案的缺陷是Direct 3D和OpenGL分别渲染后的图像在虚拟机进行融合效率不高,特别是在虚拟桌面开启Windows Aero特效的情况下,OpenGL渲染后的图像会从虚拟机再次发送到Direct 3D所在的渲染服务器进行再次渲染,效率不高。
发明内容
本发明实施例提出了一种远程桌面图像的合成方法、装置和系统,用于在GPU虚拟化中将Direct 3D和OpenGL分别渲染后图像快速融合,以获得远程桌面图像。
第一方面,本发明实施例提出了一种远程桌面图像的合成方法,客户端通过远程桌面协议接入到虚拟机,所述虚拟机与渲染服务器通信以获得所述客户端的远程桌面图像,所述渲染服务器包括Direct 3D渲染模块和OpenGL渲染模块,所述方法包括:
所述渲染服务器接收所述虚拟机发送的Direct 3D渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据;
所述渲染服务器接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
所述渲染服务器采用所述Direct 3D渲染模块根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
所述渲染服务器采用所述OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
所述渲染服务器将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
所述渲染服务器将所述远程桌面图像发送给所述虚拟机
结合第一方面,在第一种可能的实现方式中,所述渲染服务器将所述远程桌面图像编码为桌面视频流数据;
所述渲染服务器向所述虚拟机发送所述桌面视频流数据。
结合第一方面或第一方面的第一种可能,在第二种可能的实现方式中,所述将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像包括:
所述OpenGL渲染模块向所述虚拟机发送所述第四图像数据的地址和桌面显示位置信息;
所述Direct 3D渲染模块获取所述虚拟机转发的所述第四图像数据的地址和桌面显示位置信息;
所述Direct 3D渲染模块根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据;
所述Direct 3D渲染模块根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
结合第一方面或者第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像包括:
所述Direct 3D渲染模块获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄;
所述OpenGL渲染模块从所述Direct 3D渲染模块获取所述Direct 3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄;
所述OpenGL渲染模块根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
所述Direct 3D渲染模块获得由所述第三图像数据和第四图像数据组合成的远程桌面图像。
第二方面,本发明实施例提出了一种渲染服务器,客户端通过远程桌面协议接入到虚拟机,所述渲染服务器与所述虚拟机通信以获得所述客户端的远程桌面图像,包括:
接收单元,用于接收所述虚拟机发送的Direct 3D渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据,以及接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
Direct 3D渲染模块,用于根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
OpenGL渲染模块,用于根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
所述Direct 3D渲染模块,还用于将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
发送单元,用于将所述远程桌面图像发送给所述虚拟机。
结合第二方面,在第一种可能的实现方式中,所述发送单元具体用于:将所述远程桌面图像编码为桌面视频流数据,向所述虚拟机发送所述桌面视频流数据。
结合第二方面或第二方面的第一种可能,在第二种可能的实现方式中,所述OpenGL渲染模块还用于向所述虚拟机发送所述第四图像数据的地址和桌面显示位置信息;
所述Direct 3D渲染模块还用于获取所述虚拟机转发的所述第四图像数据的地址和桌面显示位置信息;以及,根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据,根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
结合第二方面或者第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,还包括:
结合第二方面或第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述Direct 3D渲染模块具体用于获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄;
所述OpenGL渲染模块具体用于从所述Direct 3D渲染模块获取所述Direct 3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄,根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
所述Direct 3D渲染模块具体用于获得由所述第三图像数据和第四图像数据组合成的所述远程桌面图像。
第三方面,本发明实施例提出了一种远程桌面服务器系统,包括:
虚拟机,用于与客户端通过远程桌面协议建立远程会话连接,接收客户端的远程桌面获取请求,根据所述远程桌面获取请求生成Direct 3D渲染指令和OpenGL渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
渲染服务器,用于接收所述虚拟机发送的所述Direct 3D渲染指令和OpenGL渲染指令,采用Direct 3D渲染模块根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据,采用OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据,以及将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像,并向所述虚拟机发送所述远程桌面图像。
本发明实施例提供的方法、装置和系统,服务器端的渲染服务器能够实现将Direct 3D和OpenGL分别渲染后图像的快速融合,以获得远程桌面图像,避免现有技术分别将渲染得到的图像返回给虚拟机进行组合的低效率的问题,实现了渲染后图像的快速融合,高效地获得远程桌面图像。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是远程桌面连接的系统架构图;
图2是根据本发明实施例提供的一种系统的架构图;
图3是根据本发明实施例提供的又一种系统的架构图;
图4是根据本发明实施例提供的一种方法流程图;
图5是根据本发明实施例提供的渲染服务器的组成图;
图6是根据本发明实施例提供的远程桌面服务器系统的组成图;
图7是根据本发明实施例提供的一种计算机的组成图。
具体实施方式
本发明实施例提出了一种远程桌面图像的合成方法、装置和系统,能够实现将Direct 3D和OpenGL分别渲染后图像快速融合,以获得远程桌面图像。
远程桌面基础架构场景如图1所示,本实施场景仅是一种示例性说明,只是给出了与本发明实施例相关的组成部分,但是图1并不是对本发明应用的具体限定。图1中左侧是远程桌面的客户端,这些客户端的设备形式在本发明实施例中可以是平板电脑101a、智能手机101b、台式计算机103c等。它们通过网络102使用远程桌面协议103访问远程桌面服务。服务器104a….104n提供了远程桌面,用户的远程桌面以虚拟机105a、105b....105n的形式存在于服务器上。远程桌面管理系统106,用于提供用户的客户端与虚拟机的映射等功能。客户端首先连接到远程桌面管理系统106,获取用户的虚拟机地址,进而连接到虚拟机,远程桌面管理系统106可以为服务器,也可以为普通个人计算机等,本发明对此不作具体限定。用户通过客户端访问服务器上分配给该用户的虚拟机,服务器将用户访问的内容传输到用户的客户端进行显示。渲染服务器107向有高清制图需求的用户提供图形虚拟机的共享渲染平台,渲染进程(117-a、117-b、107-n)为3D应用程序提供3D硬件能力的重定向渲染。
本发明实施例一种远程桌面图像的合成方法、装置和系统,为避免Direct 3D和OpenGL分别渲染后的图像在虚拟机进行融合效率不高的问题,由渲染服务器完成Direct3D和OpenGL的图像融合。
结合图1所示的远程桌面系统,客户端通过远程桌面协议接入到虚拟机,所述虚拟机与渲染服务器通信以获得所述客户端的远程桌面图像,所述渲染服务器包括Direct 3D渲染模块和OpenGL渲染模块,图2为本发明实施例的一个方法流程图,本发明实施例提供的一种远程桌面图像的合成方法,包括:
S201:渲染服务器接收所述虚拟机发送的Direct 3D渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据;
S202:所述渲染服务器接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
S201和S202没有执行顺序的先后限制。
S203:所述渲染服务器采用所述Direct 3D渲染模块根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
S204:所述渲染服务器采用所述OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
S203和S204没有执行顺序的先后限制。
S205:所述渲染服务器将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
S206:所述渲染服务器将所述远程桌面图像发送给所述虚拟机。
本发明实施例中,服务器端的渲染服务器能够实现将Direct 3D和OpenGL分别渲染后图像的快速融合,以获得远程桌面图像,避免现有技术分别将渲染得到的图像返回给虚拟机进行组合的低效率的问题,实现了渲染后图像的快速融合,高效地获得远程桌面图像。
结合图1所示的远程桌面系统,图3为本发明实施例的又一个方法流程图,本发明实施例提供的一种远程桌面图像的合成方法,包括:
S301:客户端与虚拟机建立远程桌面连接。
具体地,客户端的桌面协议模块与虚拟机的桌面协议模块建立远程桌面连接。
S302:虚拟机的桌面协议模块通知虚拟机的Direct 3D重定向模块(D3DRedirector)启动远程桌面渲染进程。
S303:虚拟机的D3D Redirector对运行的Direct 3D进程(例如windows桌面管理程序dwm)进行指令数据的重定向,将Direct 3D的渲染指令和待渲染的第一图像数据重定向到虚拟机的桌面协议模块;
S304:虚拟机的桌面协议模块将Direct 3D的渲染指令和待渲染的第一图像数据转发到渲染服务器中对应所述虚拟机的Direct 3D渲染模块(D3D Render)上;
S305:所述D3D Render根据所述Direct 3D的渲染指令进行所述第一图像数据的渲染,获得第三图像数据;
S306:所述虚拟机启动OpenGL应用程序。
本步骤的实施顺序不限制,可在虚拟机与客户端建立远程桌面连接之后的任何时候。
S307:虚拟机的OpenGL重定向模块(OpenGL Redirector)进行指令数据的重定向,将OpenGL的渲染指令和待渲染的第二图像数据重定向到渲染服务器中对应所述虚拟机的OpenGL渲染模块(OpenGL Render);
S308:OpenGL Render根据所述OpenGL渲染指令进行所述第二图像数据的渲染,得到第四图像数据;
S309:OpenGL Render将所述第四图像数据的地址和桌面显示位置信息发送给OpenGL Redirector;
S310:OpenGL Redirector再将所述第四图像数据的地址和桌面显示位置信息转发给虚拟机的桌面协议模块;
S311:虚拟机的桌面协议模块再将所述第四图像数据的地址和桌面显示位置信息转发给D3D Render;
S312:D3D Render根据收到的所述第四图像数据的地址,从OpenGL Render获取对应的渲染后的第四图像数据,并根据所述第四图像数据和第三图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据组合成远程桌面图像;
S313:D3D Render将所述远程桌面图像编码为桌面视频流数据;
S314:D3DRender将所述桌面视频流数据发送到虚拟机的桌面协议模块;
S315:虚拟机的桌面协议模块通过远程桌面协议将所述桌面视频流数据发送到客户端,由所述客户端进行处理和桌面显示。
本发明实施例所提供的远程桌面图像的合成方法,渲染服务器中的D3D渲染模块需要从虚拟机的桌面协议模块获取OpenGL渲染模块渲染后的第二图像数据的地址和显示位置信息,并根据这些信息从渲染服务器上的OpenGL渲染模块获取对应的第二图像数据,将获取到的渲染后的第一图像数据和第二图像数据在相应的位置进行显示处理,最终组合而成远程桌面图像,避免了现有技术分别将渲染后的两种图像发送会虚拟机进行融合而产生的效率问题,实现了远程桌面图像的快速融合。
结合图1所示的远程桌面系统,图4为本发明实施例的又一个方法流程图,本发明实施例提供的一种远程桌面图像的合成方法,包括:
S401:客户端与虚拟机建立远程桌面连接。
具体地,客户端的桌面协议模块与虚拟机的桌面协议模块建立远程桌面连接。
S402:虚拟机的桌面协议模块通知虚拟机的Direct 3D重定向模块(D3DRedirector)启动远程桌面渲染进程。
S403:虚拟机的D3D Redirector对运行的Direct 3D进程(例如windows桌面管理程序dwm)进行指令数据的重定向,将Direct 3D的渲染指令和待渲染的第一图像数据重定向到虚拟机的桌面协议模块;
S404:虚拟机的桌面协议模块将Direct 3D的渲染指令和待渲染的第一图像数据转发到渲染服务器中对应所述虚拟机的Direct 3D渲染模块(D3D Render)上;
S405:所述D3D Render根据所述Direct 3D的渲染指令进行所述第一图像数据的渲染,获得第三图像数据;
所述D3D Render可以进一步获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄。
S406:所述虚拟机启动OpenGL应用程序。
本步骤的实施顺序不限制,可在虚拟机与客户端建立远程桌面连接之后的任何时候。
S407:虚拟机的OpenGL重定向模块(OpenGL Redirector)进行指令数据的重定向,将OpenGL的渲染指令和待渲染的第二图像数据重定向到渲染服务器中对应所述虚拟机的OpenGL渲染模块(OpenGL Render);
S408:OpenGL Render根据所述OpenGL渲染指令进行所述第二图像数据的渲染,得到第四图像数据;
S409:OpenGL Render从D3D Render的所述Direct 3D渲染模块获取所述Direct3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄;
S410:OpenGL Render根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
S411:D3D Render获得由所述第三图像数据和第四图像数据组合成的远程桌面图像,并将所述远程桌面图像编码为桌面视频流数据;
S412:D3D Render将所述桌面视频流数据发送到虚拟机的桌面协议模块;
S413:虚拟机的桌面协议模块通过远程桌面协议将所述桌面视频流数据发送到客户端,由所述客户端进行处理和桌面显示。
本发明实施例所提供的远程桌面图像的合成方法,渲染服务器中的OpenGL渲染模块需要获取D3D渲染模块中的桌面窗口句柄,并根据所述桌面窗口句柄,将自身渲染得到的图像数据直接在远程桌面的渲染窗口进行绘制,这样,D3D渲染模块就可以直接获取到组合而成的远程桌面图像,避免了现有技术分别将渲染后的两种图像发送会虚拟机进行融合而产生的效率问题,实现了远程桌面图像的快速融合。
如图5所示,为本发明实施例中提供的渲染服务器,包括:
接收单元51,用于接收所述虚拟机发送的Direct 3D渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据,以及接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
Direct 3D渲染模块52,用于根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
OpenGL渲染模块53,用于根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
所述Direct 3D渲染模块52,还用于将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
发送单元54,用于将所述远程桌面图像发送给所述虚拟机。
具体地,所述发送单元54具体用于:将所述远程桌面图像编码为桌面视频流数据,向所述虚拟机发送所述桌面视频流数据。
其中的一个优选实施例中,所述OpenGL渲染模块53还用于向所述虚拟机发送所述第四图像数据的地址和桌面显示位置信息;
所述Direct 3D渲染模块52还用于获取所述虚拟机转发的所述第四图像数据的地址和桌面显示位置信息;以及,根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据,根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
另一个优选实施例中,所述Direct 3D渲染模块52具体用于获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄;
所述OpenGL渲染模块53具体用于从所述Direct 3D渲染模块获取所述Direct 3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄,根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
所述Direct 3D渲染模块52具体用于获得由所述第三图像数据和第四图像数据组合成的所述远程桌面图像。
如图6所示,本发明实施例提供的远程桌面服务器系统,包括:
虚拟机61,用于与客户端通过远程桌面协议建立远程会话连接,接收客户端的远程桌面获取请求,根据所述远程桌面获取请求生成Direct 3D渲染指令和OpenGL渲染指令,所述Direct 3D渲染指令包含Direct 3D的渲染指令和第一图像数据,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
渲染服务器62,用于接收所述虚拟机发送的所述Direct 3D渲染指令和OpenGL渲染指令,采用Direct 3D渲染模块根据所述Direct 3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据,采用OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据,以及将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像,并向所述虚拟机发送所述远程桌面图像。
如图7,为本发明实施例的计算机的结构组成示意图。本发明实施例的计算机可包括:
处理器701、存储器702、系统总线704和通信接口705。CPU701、存储器702和通信接口705之间通过系统总线704连接并完成相互间的通信。
处理器701可能为单核或多核中央处理单元,或者为特定集合成电路,或者为被配置成实施本发明实施例的一个或多个集合成电路。
存储器702可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
存储器702用于计算机执行指令703。具体的,计算机执行指令703中可以包括程序代码。
当计算机运行时,处理器701运行计算机执行指令703,可以执行本发明实施例任意一个实施例所提供的方法。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种远程桌面图像的合成方法,其特征在于,客户端通过远程桌面协议接入到虚拟机,所述虚拟机与渲染服务器通信以获得所述客户端的远程桌面图像,所述渲染服务器包括Direct3D渲染模块和OpenGL渲染模块,所述方法包括:
所述渲染服务器接收所述虚拟机发送的Direct3D渲染指令,所述Direct3D渲染指令包含Direct3D的渲染指令和第一图像数据;
所述渲染服务器接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
所述渲染服务器采用所述Direct3D渲染模块根据所述Direct3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
所述渲染服务器采用所述OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
所述渲染服务器将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
所述渲染服务器将所述远程桌面图像发送给所述虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述将所述远程桌面图像发送给所述虚拟机,包括:
所述渲染服务器将所述远程桌面图像编码为桌面视频流数据;
所述渲染服务器向所述虚拟机发送所述桌面视频流数据。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像包括:
所述OpenGL渲染模块向所述虚拟机发送所述第四图像数据的地址和桌面显示位置信息;
所述Direct3D渲染模块获取所述虚拟机转发的所述第四图像数据的地址和桌面显示位置信息;
所述Direct3D渲染模块根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据;
所述Direct3D渲染模块根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像包括:
所述Direct3D渲染模块获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄;
所述OpenGL渲染模块从所述Direct3D渲染模块获取所述Direct3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄;
所述OpenGL渲染模块根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
所述Direct3D渲染模块获得由所述第三图像数据和第四图像数据组合成的远程桌面图像。
5.一种渲染服务器,其特征在于,客户端通过远程桌面协议接入到虚拟机,所述渲染服务器与所述虚拟机通信以获得所述客户端的远程桌面图像,包括:
接收单元,用于接收所述虚拟机发送的Direct3D渲染指令,所述Direct3D渲染指令包含Direct3D的渲染指令和第一图像数据,以及接收所述虚拟机发送的OpenGL渲染指令,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
Direct3D渲染模块,用于根据所述Direct3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据;
OpenGL渲染模块,用于根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据;
所述Direct3D渲染模块,还用于将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像;
发送单元,用于将所述远程桌面图像发送给所述虚拟机。
6.根据权利要求5所述的渲染服务器,其特征在于,所述发送单元具体用于:将所述远程桌面图像编码为桌面视频流数据,向所述虚拟机发送所述桌面视频流数据。
7.根据权利要求5或6所述的渲染服务器,其特征在于,所述OpenGL渲染模块还用于向所述虚拟机发送所述第四图像数据的地址和桌面显示位置信息;
所述Direct3D渲染模块还用于获取所述虚拟机转发的所述第四图像数据的地址和桌面显示位置信息;以及,根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据,根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
8.根据权利要求5或6所述的渲染服务器,其特征在于,所述Direct3D渲染模块具体用于获取并保存所述第三图像数据绘制在所述虚拟机的远程桌面的桌面窗口句柄;
所述OpenGL渲染模块具体用于从所述Direct3D渲染模块获取所述Direct3D渲染模块正在绘制的所述虚拟机的远程桌面图像的窗口句柄,根据获得的所述远程桌面图像的窗口句柄绘制所述第四图像数据;
所述Direct3D渲染模块具体用于获得由所述第三图像数据和第四图像数据组合成的所述远程桌面图像。
9.一种远程桌面服务器系统,其特征在于,包括:
虚拟机,用于与客户端通过远程桌面协议建立远程会话连接,接收客户端的远程桌面获取请求,根据所述远程桌面获取请求生成Direct3D渲染指令和OpenGL渲染指令,所述Direct3D渲染指令包含Direct3D的渲染指令和第一图像数据,所述OpenGL渲染指令包含OpenGL的渲染指令和第二图像数据;
渲染服务器,用于接收所述虚拟机发送的所述Direct3D渲染指令和OpenGL渲染指令,采用Direct3D渲染模块根据所述Direct3D的渲染指令对所述第一图像数据进行渲染,得到第三图像数据,采用OpenGL渲染模块根据所述OpenGL的渲染指令对所述第二图像数据进行渲染,得到第四图像数据,以及将所述第三图像数据和第四图像数据组合成所述虚拟机的远程桌面图像,并向所述虚拟机发送所述远程桌面图像。
10.根据权利要求9所述的系统,其特征在于,所述虚拟机还用于接收所述OpenGL渲染模块发送的所述第四图像数据的地址和桌面显示位置信息,以及将所述第四图像数据的地址和桌面显示位置信息转发给所述Direct3D渲染模块;
所述Direct3D渲染模块,具体用于根据所述第四图像数据的地址从所述OpenGL渲染模块获取所述第四图像数据,根据所述第三图像数据的桌面显示位置信息和所述第四图像数据的桌面显示位置信息,将所述第三图像数据和第四图像数据绘制成所述远程桌面图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410002158.2A CN104765636B (zh) | 2014-01-02 | 2014-01-02 | 一种远程桌面图像的合成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410002158.2A CN104765636B (zh) | 2014-01-02 | 2014-01-02 | 一种远程桌面图像的合成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765636A CN104765636A (zh) | 2015-07-08 |
CN104765636B true CN104765636B (zh) | 2018-05-04 |
Family
ID=53647484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410002158.2A Active CN104765636B (zh) | 2014-01-02 | 2014-01-02 | 一种远程桌面图像的合成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765636B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107483390B (zh) * | 2016-06-08 | 2020-10-16 | 成都云创互联信息技术有限公司 | 一种云渲染网络部署子系统、系统及云渲染平台 |
CN106873932B (zh) * | 2017-02-17 | 2020-03-03 | 浙江大学 | 一种Android系统服务端、远程桌面图像重定向方法及系统 |
CN108897596A (zh) * | 2018-07-05 | 2018-11-27 | 北京景行锐创软件有限公司 | 一种图形界面传输方法及装置 |
CN110545415A (zh) * | 2019-07-16 | 2019-12-06 | 西安万像电子科技有限公司 | 数据传输方法、装置及服务器 |
CN111402363A (zh) * | 2020-06-04 | 2020-07-10 | 广东睿江云计算股份有限公司 | 一种框架图片色彩填充的方法和系统 |
CN112099884A (zh) * | 2020-08-11 | 2020-12-18 | 西安万像电子科技有限公司 | 一种图像渲染方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630246A (zh) * | 2003-12-15 | 2005-06-22 | 联想(北京)有限公司 | 一种远程桌面获取数据的实现方法 |
CN101849224A (zh) * | 2007-10-20 | 2010-09-29 | 思杰系统有限公司 | 用于远程处理三维图像数据的方法和系统 |
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
CN102084650A (zh) * | 2009-05-12 | 2011-06-01 | 华为终端有限公司 | 远程呈现系统、方法及视频采集设备 |
US8253732B2 (en) * | 2008-01-03 | 2012-08-28 | International Business Machines Corporation | Method and system for remote visualization client acceleration |
CN102763063A (zh) * | 2009-12-09 | 2012-10-31 | 思杰系统有限公司 | 用表示远程应用的用户界面元素更新停靠栏的方法和系统 |
CN102833517A (zh) * | 2012-08-31 | 2012-12-19 | 华为技术有限公司 | 远程呈现方法及系统 |
CN103294439A (zh) * | 2013-06-28 | 2013-09-11 | 华为技术有限公司 | 一种图像更新方法、系统及装置 |
CN103412701A (zh) * | 2012-11-01 | 2013-11-27 | 华为技术有限公司 | 远程桌面图像处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8274518B2 (en) * | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
-
2014
- 2014-01-02 CN CN201410002158.2A patent/CN104765636B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630246A (zh) * | 2003-12-15 | 2005-06-22 | 联想(北京)有限公司 | 一种远程桌面获取数据的实现方法 |
CN101849224A (zh) * | 2007-10-20 | 2010-09-29 | 思杰系统有限公司 | 用于远程处理三维图像数据的方法和系统 |
US8253732B2 (en) * | 2008-01-03 | 2012-08-28 | International Business Machines Corporation | Method and system for remote visualization client acceleration |
CN102084650A (zh) * | 2009-05-12 | 2011-06-01 | 华为终端有限公司 | 远程呈现系统、方法及视频采集设备 |
CN102763063A (zh) * | 2009-12-09 | 2012-10-31 | 思杰系统有限公司 | 用表示远程应用的用户界面元素更新停靠栏的方法和系统 |
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
CN102833517A (zh) * | 2012-08-31 | 2012-12-19 | 华为技术有限公司 | 远程呈现方法及系统 |
CN103412701A (zh) * | 2012-11-01 | 2013-11-27 | 华为技术有限公司 | 远程桌面图像处理方法及装置 |
CN103294439A (zh) * | 2013-06-28 | 2013-09-11 | 华为技术有限公司 | 一种图像更新方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104765636A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765636B (zh) | 一种远程桌面图像的合成方法和装置 | |
US10192363B2 (en) | Math operations in mixed or virtual reality | |
US20170192734A1 (en) | Multi-interface unified displaying system and method based on virtual reality | |
CN109522070B (zh) | 显示处理方法和系统 | |
KR20200037442A (ko) | 포인트-클라우드 스트리밍을 위한 방법 및 장치(method and apparatus for point-cloud streaming) | |
AU2016210884A1 (en) | Method and system for providing virtual display of a physical environment | |
CN107223270B (zh) | 一种显示数据处理方法及装置 | |
CN109725956B (zh) | 一种场景渲染的方法以及相关装置 | |
US10437055B2 (en) | Master device, slave device, and control method therefor | |
CN109992111B (zh) | 增强现实扩展方法和电子设备 | |
US20220044468A1 (en) | Artificial reality system using superframes to communicate surface data | |
US20150145876A1 (en) | Graphics Data Processing Method, Apparatus, and System | |
CN113852841A (zh) | 一种可视化场景建立方法、装置、设备、介质和系统 | |
CN112565883A (zh) | 一种用于虚拟现实场景的视频渲染处理系统和计算机设备 | |
CN114513512B (zh) | 界面渲染的方法及装置 | |
US20180160133A1 (en) | Realtime recording of gestures and/or voice to modify animations | |
CN117237532A (zh) | 模型外点位的全景图展示方法和装置、设备、介质 | |
CN114327790A (zh) | 基于Linux系统Android容器的渲染方法 | |
CN113051032A (zh) | 应用画面处理方法、装置和系统 | |
CN113254123A (zh) | 云桌面场景的识别方法和装置、存储介质及电子装置 | |
US20190163434A1 (en) | Technologies for networked virtual content in a mobile computing environment | |
KR102674102B1 (ko) | 비주얼 네트워크 서비스 처리 방법 및 장치 | |
US20220101002A1 (en) | Real-world object inclusion in a virtual reality experience | |
CN117215064A (zh) | 头戴显示设备及显示方法 | |
CN117215449A (zh) | 交互控制方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220225 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |