CN101849224B - 用于远程处理三维图像数据的方法和*** - Google Patents

用于远程处理三维图像数据的方法和*** Download PDF

Info

Publication number
CN101849224B
CN101849224B CN200880112228.2A CN200880112228A CN101849224B CN 101849224 B CN101849224 B CN 101849224B CN 200880112228 A CN200880112228 A CN 200880112228A CN 101849224 B CN101849224 B CN 101849224B
Authority
CN
China
Prior art keywords
machine
local computing
remote computation
computing machine
application
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
Application number
CN200880112228.2A
Other languages
English (en)
Other versions
CN101849224A (zh
Inventor
J·布拉德
F·皮尔特
T·特里德
D·索尔斯伦德
B·安德森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN101849224A publication Critical patent/CN101849224A/zh
Application granted granted Critical
Publication of CN101849224B publication Critical patent/CN101849224B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

用于远程显示三维图像数据的***和方法,包括经由连接和远程计算机器通信的本地计算机器。本地计算机器上执行的应用产生被拦截并且被传送到远程计算机器或者到本地计算机器上的计算元件的三维图像命令。确定传送该三维图像命令到何处要求:分析该应用来获取应用特有的特征;分析远程计算机器以获取远程计算机器的性能;分析本地计算机器以获取本地计算机器的性能;分析该连接来获取连接的特征。响应于获取应用特征、远程计算机器的性能、本地计算机器的性能和连接特征,做出决定。

Description

用于远程处理三维图像数据的方法和***
技术领域
本发明总的涉及远程处理图像数据。
背景技术
对产生或者以其他方式使用增强图像(例如三维图像或者桌面)的应用提供远程访问可能难以实现。与诸如二维图像的基本图像不同,增强图像典型地需要大量处理资源和存储器。这些需求可通过延迟应用的功能性和能力以输出或者产生增强图像来削弱终端用户的体验。
存在多种方法用于缓解由增强的图像处理所引入的***压力。在这些方法中的一些方法特定地针对在对应用的远程访问的***上所增强的图像处理所带来的影响提供。
发明内容
在一个方面中,此处描述用于远程处理三维图像数据的方法。其包括由分布计算***中的本地计算机器拦截由本地计算机器上执行的应用所产生的三维图像命令。该方法还包括分析该应用来获取所述应用的应用特有的特征。分析远程计算机器和本地计算机器以获取远程计算机器的性能和本地计算机器的性能。还分析本地计算机器和远程计算机器之间的连接来获取连接的特征。响应于获取应用特有的特征、远程计算机器的性能、本地计算机器的性能和连接特征,将三维图像命令传送到将三维图像命令接收作为输入并且输出三维图像数据的远程计算机器或者本地计算机器上的计算元件。
本方法的一个实施例包括拦截原语三维图像命令,而本方法的另一个实施例包括拦截高级三维图像命令。
在本方法的另一个实施例中,分析远程计算机器包括确定远程计算机器是否具有可以将三维图像命令接收作为输入并且输出三维图像数据的计算元件。
本方法的其他实施例包括分析远程计算机器来确定是否存在和远程计算机器相关联的评分(score)。在一些实施例中,该评分可以和远程计算机器的硬件和软件配置相关联。
在本发明的一个实施例中,分析远程计算机器包括识别远程计算机器上可用的编解码器。
本方法的其它实施例包括分析本地计算机器来确定本地计算机器是否具有其可以接收三维图像命令并且输出三维图像数据的计算元件。
在一个实施例中,分析该连接可以包括确定连接中可用的带宽数量。
在一些实施例中,传送三维图像可以包括将命令传送给本地计算机器上的计算元件。在这样的实施例中,计算元件可以根据三维图像命令渲染三维图像数据。所渲染的三维图像数据随后由本地计算机器发送给远程计算机器。发送给本地计算机器还可以包括由远程计算机器接收三维图像数据并且随后显示该三维图像数据。在一些实施例中,传送给本地计算机器上的计算元件包括将三维图像命令传送给本地计算机器上的图像引擎。在其他实施例中,传送给本地计算机器上的计算元件包括将三维图像命令传送给本地计算机器上的处理器,其中该处理器可以接收三维图像命令并且输出三维图像数据。其他实施例包括将三维图像命令传送给本地计算机器上执行的应用,该应用接收三维图像命令并且输出三维图像数据。
在本方法的一个实施例中,传送还包括将三维图像命令传送给远程计算机器,其中远程计算机器在其上具有计算元件。远程计算机器上的计算元件可以接收三维图像命令,并且输出三维图像数据。另外的实施例包括将三维图像命令传送给远程计算机器上的图像引擎。其它的实施例包括将三维图像命令传送给远程计算机器上的处理器,其中该处理器可以接收三维图像命令并且输出三维图像数据。传送还可以包括将三维图像命令传送给远程计算机器上执行的应用。在此实施例中,该应用可以接收三维图像命令作为输入并且输出三维图像数据。仍在其它实施例中,一旦所渲染的三维图像数据被输出,则远程计算机器显示该所渲染的三维图像数据。
本方法的实施例包括将三维图像命令传送给远程计算机器或者给本地计算机器上的计算元件并且等待预定时间周期。在预定时间周期之后,重新获取应用特有的特征、远程计算机器性能、本地计算机器性能和连接特征。三维图像命令随后被传送给其它的远程计算机器或者给本地计算机器上的计算元件。
仍在另一个实施例中,三维图像命令在传输之前被保存在存储媒介上。
又一个实施例包括将三维图像命令传送给本地计算机器上的计算元件,其是可以根据图像命令渲染三维图像数据的计算机硬件元件。其他实施例包括将三维图像命令传送给远程计算机器上的计算元件,计算元件包括可以根据图像命令来渲染三维图像数据的计算机硬件元件。
在另一个方面中,此处描述用于远程处理三维图像数据的***。该***包括分布计算***中的本地计算机器。本地计算机器拦截由本地计算机器上执行的应用所产生的三维图像命令。本地计算机器上的计算元件可以接收三维图像命令作为输入并且输出三维图像数据。***还包括分布计算***中的远程计算机器,其中,远程计算机器经由安装在本地计算机器和远程计算机器之间的连接和本地计算机器进行通信。本地计算机器执行应用来:分析该应用以获取所述应用的应用特有的特征;分析远程计算机器以获取远程计算机器的性能;分析本地计算机器以获取本地计算机器的性能;分析连接来获取连接的特征;并且基于应用特征、远程计算机器的性能、本地计算机器的性能和连接特征,确定是否将所拦截的三维图像命令传送到远程计算机器,或者给本地计算机器上的计算元件。
附图说明
以下附图描述本发明的特定示例性实施例。包括在这些示例性实施例中的附图标记是指进一步在本发明中描述的相同元件。所描述的实施例仅用于示例本发明并且不限制本发明的保护范围。
图1A是示出具有和服务器通信的客户机的远程访问网络化环境的实施例的框图;
图1B和1C是示出用于实现此处描述的方法和***的计算机器的实施例的框图;
图2描述计算装置的实施例;
图3描述示出用于远程处理三维图像的方法的流程图;
图4描述示出用于远程处理三维图像的方法的流程图;
图5描述用于远程处理Direct3D图像的***的实施例的框图;
图6描述用于远程处理三维图像的***的实施例的框图;
图7描述用于Direct3DCOM对象建立或者访问流的方法的实施例的框图;
图8描述用于操作目标窗确定机制的方法的实施例的框图;
图9描述用于远程处理三维图像的架构的实施例的框图;
图10描述用于远程处理三维图像的架构的实施例的框图。
具体实施方式
图1A示出包括和服务器106A-102N通信的一个或者多个客户机102A-102N和安装在客户机102A-102N和服务器106A-106N之间的网络104的计算环境101的一个实施例。在一些实施例中,客户机102A-102N可以称之为单个客户机102或者单组客户机102,而服务器可以称之为单个服务器106或者单组服务器106。一个实施例包括和多于一个的服务器106通信的单个客户机102,另一个实施例包括和多于一个的客户机102通信的单个服务器106,而另一个实施例包括和单个服务器106通信的单个客户机102。
在有些实施例中,计算环境中的客户机102可以称之为以下术语中的一个:一个或多个客户机102、客户机、客户机计算机、客户机装置、客户计算装置、客户机节点、端点、端点节点,或者第二机器。在有些实施例中,服务器106可以称之为以下术语中的一个:服务器、服务器群组、寄载计算装置或者第一机器。
在有些实施例中,客户机器102可以执行、操作或以其他方式提供应用,所述应用可以是以下任意一个:软件,程序,可执行指令,web浏览器,基于web的客户机,客户机-服务器应用,瘦-客户机的计算客户机,ActiveX控件,Java小程序,例如软IP电话的与互联网电话协议(VoIP)通信相关的软件,用于流式传输视频和/或音频的应用,促进实时数据通信的应用,HTTP客户机,FTP客户机,Oscar客户机,Telnet客户机,或可以在客户机102上执行的任一其它类型和/或形式的可执行指令。依然在其他实施例中可以包括具有任意基于服务器或基于远程的应用和代表客户机102在服务器106上执行的应用的计算环境101。计算环境101的其他实施例包括被配置为使用瘦-客户机或远程显示协议来显示输出图像数据给客户机102的服务器106,其中所使用的协议可以是以下协议中的任一个:由位于Ft.Lauderdale,Florida的CitrixSystems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。
在一些实施例中,客户机102可以是诸如XenSolutions、CitrixSystems、IBM、VMware制造的虚拟机器102C或者可以执行此处所描述方法和***的任一其他虚拟机器。
在一些实施例中,计算环境101可以包括多于一个的服务器106A-106N,其中该服务器106A-106N是:集合在一起作为单个服务器106实体、一起逻辑集合在服务器群组106中;地理上分散并且逻辑上一起集合在服务器群组106中,互相位置相邻并且逻辑上一起集合在服务器群组中。在一些实施例中,服务器群组106中的地理上分散的服务器106A-106N可以使用WAN、MAN或者LAN进行通信,其中不同的地理区域可以被分为:不同的洲、洲的不同区域、不同国家、不同州、不同城市、不同校园、不同房间或者前述地理位置的任一组合。在一些实施例中,服务器群组106可以被管理为单一的实体,或者在其它实施例中可以包括多个服务器群组106。计算环境101可以包括一起集合在单个服务器群组106中的多于一个的服务器106A-106N,其中服务器群组106是异类的,使得一个服务器106A-106N被配置为根据第一类型的操作***平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWSNT)来进行操作,而一个或多个其它的服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)来进行操作;多于一个的服务器106A-106N被配置为根据第一类型的操作***平台(例如,WINDOWSNT)来进行操作,而另一个服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)来进行操作;或者多于一个的服务器106A-106N被配置为根据第一类型的操作***平台(例如,WINDOWSNT)来进行操作,而多于一个的其它服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)来进行操作。
在一些实施例中,计算环境101可以包括配置为提供以下服务器类型的任一的功能性的服务器106或者多于一个的服务器106:文件服务器,应用服务器,web服务器,代理服务器,设备,网络设备,网关,应用网关,网关服务器,虚拟服务器,配置服务器,SSLVPN服务器,防火墙,web服务器,应用服务器或者作为主应用服务器,配置为如活动目录一样操作的服务器106,配置为如提供防火墙功能性、应用功能性或者负载平衡功能性的应用加速应用一样操作的服务器106,或者配置为如服务器106操作的其它类型的计算机器。在一些实施例中,服务器106可以包括远程验证呼入用户服务,使得服务器106是RADIUS服务器。在计算环境101的实施例中,服务器106包括设备,服务器106可以是由以下任一制造商制造的设备:CitrixApplicationNetworkingGroup;SilverPeakSystems公司;RiverbedTechnology公司;F5Networks公司;或JuniperNetworks公司。一些实施例包括具有以下功能性的服务器106:从客户机器102接收请求的第一服务器106A,将该请求转发给第二服务器106B,并且使用来自第二服务器106B的响应来响应由客户机器产生的请求;获取客户机器102可用应用的列举和与寄载应用的列举所识别的应用的服务器106相关的地址信息;使用web接口将响应表示给客户请求,直接和客户机102通信来为客户机102提供对所识别应用的访问;接收通过在服务器106上执行所识别应用而产生的输出数据,诸如显示数据。
服务器106可以被配置为执行以下应用的任一个:提供瘦-客户机计算的应用或远程显示表示应用;CitrixSystems公司的例如MetaFrame或Citrix表示服务器的Citrix访问套件的任一部分;由微软公司出品的微软Windows终端服务;或者CitrixSystems公司开发的ICA客户机。另一个实施例包括被配置为执行应用使得服务器可以用作应用服务器的服务器106,该应用服务器诸如以下应用服务器类型的任一个:提供诸如微软公司出品的微软Exchange的电子邮件服务的电子邮件服务器,web或Internet服务器,桌面共享服务器,或协作服务器。其它的实施例包括执行作为以下类型的寄载服务器应用的任一个的应用的服务器106:CitrixOnline部门公司提供的GOTOMEETING,由位于SantaClara,California的WebEx公司提供的WEBEX,或由微软公司提供的微软OfficeLIVEMEETING。
在一个实施例中,服务器106可以是诸如由XenSolutions、CitrixSystems、IBM、VMware制造的虚拟机器106B或者可以执行此处所描述方法和***的任一其他虚拟机器。
在一些实施例中,客户机器102可以用作搜寻对由服务器106提供的资源的访问的客户机节点,或者作为给其它客户机102A-102N提供对寄载资源的访问的服务器106。计算环境101的一个实施例包括提供主节点功能性的服务器106。客户机器102和服务器106或者多个服务器106A-106N之间的通信可以经由以下方法的任一个来建立:客户机器102和服务器群组106中的服务器106A-106N之间的直接通信;客户机器102使用程序相邻应用和服务器群组106中的服务器106a-106n通信;或者客户机器102使用网络104和服务器群组106中的服务器106A-106N通信。计算环境101的一个实施例包括客户机器102,该客户机器102使用网络104来请求执行由服务器群组106中的服务器106A-106N寄载的应用,并且使用网络104来从服务器106A-106N接收表示应用执行的图像显示输出。在其他实施例中,主节点提供请求识别和提供与寄载所请求应用的服务器106相关联的地址信息的功能性。其他实施例包括的主节点可以是以下的任一个:服务器群组106中的服务器106A-106N;连接到服务器群组106但不包括在服务器群组106中的远程计算机器;连接到客户机102但不包括在一组客户机器102中的远程计算机器;或者客户机器102。
客户机器102和服务器106之间的网络104是通过其在客户机器102和服务器106之间传送数据的连接。尽管图1A示出将客户机器102连接到服务器106的网络104,但是其他实施例包括具有安装在同一网络上作为服务器106的客户机器102的计算环境101。其他实施例可以包括具有可以是以下任一个的网络104的计算环境101:局域网(LAN),城域网(MAN),广域网(WAN),包括位于客户机器102和服务器106之间的多个子网104’的初级网络104,具有专用子网104’的初级公用网104,具有公用子网104’的初级专用网104,或者具有专用子网104’的初级专用网104。其它的实施例包括可以是以下任何网络类型的网络104:点到点网络、广播网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络、有线网络,网络104包括无线链路,该无线链路可以是红外信道或卫星频带,或者能够将数据从客户机器102传送到服务器106并且反向传输来实现此处描述的方法和***的任意其他网络类型。网络拓扑在不同实施例中可以不同,可能的网络拓扑包括:总线形网路拓扑、星形网络拓扑、环形网络拓扑、基于转发器的网络拓扑、分层星形网络拓扑,或者能够将数据从客户机器102传送到服务器106并且反向传输来实现此处描述的方法和***的任意其他网络拓扑。另外的实施例可以包括移动电话网络的网络104,其使用协议在移动装置之间进行通信,其中该协议可以是以下任一个:AMPS、TDMA、CDMA、GSM、GPRSUMTS,或者能够将数据在移动装置之间进行传输来实现此处描述的方法和***的任意其他协议。
图1B所示是计算装置100的实施例,其中图1A中所示的客户机器102和服务器106可以被部署为和/或执行在此处示出和描述的计算装置100的任一实施例上。计算装置100中包括和以下部件通信的***总线150:中央处理单元121,主存储器122,存储装置128,输入/输出(I/O)控制器123,显示装置124A-124N,安装装置116和网络接口118。在一个实施例中,存储装置128包括:操作***、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和点击装置127。其他实施例可以包括连接到多于一个的输入/输出装置130A-130N的I/O控制器123。
图1C示出计算装置100的一个实施例,其中图1A中所示的客户机器102和服务器106可以被部署为和/或执行在此处示出和描述的计算装置100的任一实施例上。计算装置100中包括和以下部件通信的***总线150:桥接器170、第一I/O装置130A。在另一个实施例中,桥接器170还和中央处理单元121相通信,其中中央处理单元121还和第二I/O装置130B、主存储器122以及高速缓冲存储器140相通信。中央处理单元121中包括I/O端口、存储器端口103和主处理器。
计算机器100的实施例可以包括特征为以下部件配置的任一个的中央处理单元121:响应并处理从主存储器单元122获取的指令的逻辑电路;微处理器单元,诸如:由Intel公司出品的产品;由Motorola公司出品的产品;由位于SantaClara,California的Transmeta公司出品的产品;诸如由国际商业机器公司出品的RS/6000处理器;诸如由AdvancedMicroDevices公司出品的处理器;或者是能够执行如此处所描述的***和方法的任何其它组合的逻辑电路。中央处理单元122的其他实施例可以包括以下的任意组合:微处理器、微控制器、具有单个处理核的中央处理单元、具有两个处理核的中央处理单元,或者具有多于一个的处理核的中央处理单元。
计算机器100的一个实施例包括通过还被称为背端总线的次级总线来与高速缓存存储器140通信的中央处理单元121,而计算机器100的另一个实施例包括经由***总线150和高速缓冲存储器通信的中央处理单元121。在一些实施例中,中央处理单元可以使用本地***总线150与多个类型的I/O装置130A-130N进行通信。在一些实施例中,本地***总线150可以是以下类型总线的任一个:VESAVL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算机器100的其他实施例包括作为视频显示器124的I/O装置130A-130N,中央处理单元121经由高级图形端口(AGP)与该视频显示器124进行通信。计算机器100的其他版本包括经由以下连接的任一个连接到I/O装置130A-130N的处理器121:HyperTransport、快速I/O或InfiniBand。计算机器100的其他实施例包括通信连接,其中处理器121使用本地互连总线与I/O装置130A进行通信,并且使用直接连接与第二I/O装置130B进行通信。
计算装置100的一些实施例中包括主存储器单元122和高速缓冲存储器140的每一个。在一些实施例中,高速缓冲存储器140可以是以下类型存储器中的任一个:SRAM、BSRAM、或EDRAM。其它实施例包括高速缓冲存储器140和主存储器单元122,其可以是以下类型存储器中的任一个:静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发式扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双数据速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接RambusDRAM(DRDRAM)、或铁电RAM(FRAM),或者能够执行此处描述的***和方法的任意其它类型的存储装置。在一些实施例中,主存储器单元122和/或高速缓冲存储器140可以包括能够保存数据并且允许中央处理单元121直接访问任何存储位置的一个或者多个存储器装置。另外的实施例包括可以经以下任一个访问主存储器122的中央处理单元121:***总线150、存储器端口103,或者允许处理器121访问存储器122的任意其它连接、总线或者端口。
计算装置100的一个实施例提供支持任一以下的安装装置116:用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如的用作GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或者软件的任意其它装置。在一些实施例中,应用可以包括客户机代理120或客户机代理120的任意部分。计算装置100还可以包括存储装置128,其可以是一个或多个硬盘驱动器或一个或多个独立盘的冗余阵列;其中存储装置被配置为用于保存操作***、软件、程序应用、或者客户机代理120的至少一部分。计算装置100的另一个实施例包括用作存储装置128的安装装置116。
进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网(WAN)或者因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(例如,ISDN、帧中继、ATM、吉比特以太网、SONET上以太网)、无线连接或上述任意或所有连接的一些组合。连接可以使用多种通信协议建立,这些协议例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接。计算装置100的一个版本包括可以经由任一类型和/或形式的网关或者隧道协议和其他计算装置100’通信的网络接口118,这些网关或者隧道协议诸如安全套接字层(SSL)或者传输层安全(TLS)、或者CitrixSystem公司出品的Citrix网关协议。网络接口118的版本可以包括以下任一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100连接到能够传达并执行此处所描述的方法和***的网络的任意其它装置。
计算装置100的实施例包括以下I/O装置130A-130N中的任一个:键盘126、定点装置127、鼠标、轨道垫、光笔、轨道球、麦克风、绘画板、视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机以及可以执行此处描述的方法和***的任何其它输入/输出装置。在一些实施例中,I/O控制器123可以连接到多个I/O装置103A-103N以控制一个或者多个I/O装置。I/O装置130A-130N的一些实施例可以被配置为提供存储或安装介质116,而其他可以提供用于接收USB存储装置的通用串行总线(USB)接口,诸如TwintechIndustry公司出品的USB闪速驱动系列。I/O装置130的其他实施例可以是***总线150和外部通信总线之间的网桥,外部通信总线例如USB总线、AppleDesktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机***接口总线。
在一些实施例中,计算装置100可以连接到多个显示装置124A-124N,在其他实施例中,计算装置100可以连接到单个显示装置124,而仍然在其他实施例中,计算装置100可以连接到相同类型或者形式显示的显示装置124A-124N,或者不同类型或者形式显示的显示装置。显示装置124A-124N的实施例可以通过以下支持并启用:一个或者多个I/O装置130A-130N,I/O控制器123,I/O装置130A-130N和I/O控制器123的组合,可以支持显示装置124A-124N的硬件和软件的任意组合,任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以联系、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可以被配置为使用一个或者多个显示装置124A-124N,这些配置包括:具有多个连接器以联接到多个显示装置124a-124n,具有多个视频适配器,每个视频适配器连接到一个或多个显示装置124A-124N,具有被配置为用于支持多个显示器124A-124N的操作***。使用包括在计算装置100中的电路和软件来连接到并且使用多个显示装置124A-124N,并且执行主计算装置100和多个次级计算装置上的软件以启用主计算装置100来使用次级计算装置的显示器作为用于主计算装置100的显示装置124A-124N。计算装置100的其他实施例可以包括由多个次级计算装置提供并且经由网络连接到主计算装置100的多个显示装置124A-124N。
在计算机器100的一些实施例中,可以包括操作***来控制任务的调度和对***资源的访问。计算装置100的实施例能够运行以下任一操作***:例如WINDOWS3.x、WINDOWS95、WINDOWS98、WINDOWS2000、WINDOWSNT3.51、WINDOWSNT4.0、WINDOWSCE、WINDOWSXP和WINDOWSVISTA的微软Windows操作***版本、不同版本的Unix和Linux操作***、苹果计算机出品的任意版本的MACOS、国际商业机器公司出品的OS/2、任意的嵌入式操作***、任意的实时操作***、任意的开放源操作***、任意的专用操作***、用于移动计算装置的任意操作***、或者能够运行在计算装置上并执行此处所描述的操作的任意其它操作***。计算机器100的一个实施例在其上安装多个操作***。
计算装置100可以嵌入到以下计算装置的任一个中:计算工作站、台式计算机、膝上型或笔记本计算机、服务器、便携式计算机、移动电话、便携电信装置、媒体播放装置、游戏***、移动计算装置、苹果计算机公司出品的IPOD家族的装置、Sony公司出品的PLAYSTATION家族的任一个、Nintendo公司出品的NINTENDO家族装置中的任一个,或者微软公司出品的XBOX家族装置中的任一个,或者能够通信并具有执行此处所描述的方法和***的足够的处理器能力和存储容量的任意其它类型和/或形式的计算、电信或媒体装置。在其它实施例中,计算装置100可以是诸如JAVA使能的蜂窝电话或者个人数字助理(PDA)的任一个的移动装置,诸如Motorola公司出品的i55sr、i58sr、i85sr、i88s、i90c、i95cl或者im1100,Kyocera出品的6035或者7135,或者Samsung电子公司出品的i300或者i330,由Palm公司出品的TREO180、270、600、650、680、700p、700w或者750智能电话,具有和所述装置一致的不同的处理器、操作***和输入装置的计算装置,或者可以执行此处描述的方法和***的任意其它移动计算装置。计算环境101的其他实施例包括可以是以下任一个的移动计算装置100:ResearchInMotionLimited出品的黑莓或者其它便携装置的任一系列,苹果计算机出品的iPhone,任意便携或者智能电话,PocketPC,PocketPCPhone,或者支持MicrosoftWindowsMobileSoftware(微软视窗移动软件)的任意其它便携移动装置。
图2中所示为网络环境10的一个实施例。总的来说,网络环境10包括经由一个或者多个网络104、104’(总的称为网络104)和一个或者多个本地计算机器187通信的一个或者多个远程计算机器186。尽管图2描述了安装在本地计算机器187和远程计算机器186之间的网络104、104’,但是本地和远程计算机器187、186可以安装在同一网络104上。在一些实施例中,网络设备可以驻留在网络104和104’之间或者在一些其他位置中。远程计算机器186具有计算环境15,该计算环境15中执行应用并且保存数据文件。远程计算机器186还可以包括客户机代理120和计算元件260。本地计算机器187具有其上执行的应用并且保存数据文件。具有策略引擎195的应用或者桌面递送***190可以和计算元件265一起包括在本地计算机器187上。
继续参考图2并且更详细地,在一个实施例中,远程计算机器186包括计算环境15,该计算环境15具有其中执行的一个或者多个应用。此外,计算环境15还可以将数据文件保存在诸如主存储器122或者高速缓冲存储器140的存储库中。在一个实施例中,应用是桌面,而在其他实施例中,应用是产生和输出三维图像数据的应用。其他实施例包括输出图像数据的应用,该图像数据要求的存储器和处理器资源大于二维图像通常所需的存储器和处理器资源。远程计算机器186上包括的客户机代理120可以促进远程计算机器186和设备200或者远程计算机器186和服务器106之间的通信。另外的实施例包括促进远程计算机器186和能够在网络104、104’上通信的任意附加计算装置或者设备之间的通信。因为在一些实施例中,远程计算机器186可以用作搜寻对网络104、104’上的应用和数据文件的访问的网络上的节点,所以远程计算机器186可以称为节点或者端点。作为节点或者端点,远程计算机器186还可以用作向网络104、104’上的附加计算机器提供对远程计算机器186上所执行应用的访问的应用服务器。
远程计算机器186中包括客户机代理120和计算元件260。在一些实施例中,客户机代理120可以用来确定何处渲染图像数据。结合本地计算机器187上执行的应用,由客户机代理120收集关于远程计算机器186的信息,用来确定图像数据是否可以在远程计算机器187上渲染。计算元件260是远程计算机器186中接收图像命令作为输入并且输出图像数据的元件。在一个实施例中,计算元件260可以是图像处理单元,而在其它实施例中,计算元件260可以是远程计算机器187上执行的图像渲染程序。仍在另一个实施例中,计算元件260可以是被配置来渲染图像的处理器。其它的实施例包括计算元件260,该计算元件260是集成到远程计算机器186的硬件用于渲染图像的硬件芯片。计算元件可以包括单个芯片或者多个芯片。在其他实施例中,计算元件是包括渲染图像数据的一个或者多个图像处理单元的图像处理单元设备。在图像处理单元中,设备可以是独立设备,诸如SantaClara,CA的NVIDIACORPORATION出品的NVidiaQuadroTMPlex装置。仍在其他实施例中,计算元件260可以是虚拟装置或者设备。
安装在远程计算机器186和本地计算机器187之间的网络104、104’可以是上述任一网络或者网络配置。
在一个实施例中,远程计算机器186请求执行应用程序并且包括本地计算机器187的应用递送***190选择执行应用程序的方法。在一些实施例中,本地计算机器187从远程计算机器186接收证书。在另一个实施例中,本地计算机器187从远程计算机器186接收对于可用应用的列举的请求。在一个实施例中,响应于该请求或者证书的接收,应用递送***190列举对于远程计算机器186可用的多个应用程序。应用递送***190接收执行所列举的应用的请求。应用递送***190例如响应于策略引擎的策略来选择用于执行所列举应用的预定数量的方法的其中一个。应用递送***190可以选择执行启用远程计算机器186的应用的方法,来接收在本地计算机器187上执行应用程序所产生的应用输出数据。应用递送***190可以选择执行启用远程计算机器186的应用的方法,来在获取包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用递送***190可以选择应用执行的方法来经由网络104将应用流式传输到远程计算机器186。
远程计算机器186可以执行、操作或以其他方式提供应用,所述应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在远程计算机器186上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表本地计算机器187上的远程计算机器186执行的基于服务器或基于远程的应用。在一个实施例中,本地计算机器187可以使用任意瘦-客户机或远程显示协议来和客户机代理120协作来显示输出到远程计算机器186,所述远程显示协议例如由位于Ft.Lauderdale,Florida的CitrixSystems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任意类型的协议,诸如:HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与IP上语音(VoIP)通信相关的任意类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输视频和/或音频的应用。此外,应用可以是任意类型的计算机辅助设计(CAD)应用或者多媒体应用。典型地,CAD和多媒体应用包括三维图像,当在本地计算机器187上执行应用时,该三维图像增加了从本地计算机器187传输到远程计算机器186的应用数据(例如,输出)的数量。如下面详细描述的,网络环境的多个部件协作来确定网络中哪个计算装置应该被用来渲染应用输出并且来确定哪个机制用来将应用输出递送到远程计算机器186。
在一些实施例中,本地计算机器187包括用于递送计算环境、桌面或者应用和/或数据文件到一个或者多个远程计算机器186的应用递送***190。基于多个执行方法并且基于经由策略引擎195应用的任意验证和授权策略,应用递送管理***190提供应用递送技术来将计算环境递送到用户、远程或者其他的桌面。使用这些技术,远程用户可以从任意网络连接的装置来获取计算环境并且访问服务器保存的应用和数据文件。在一个实施例中,应用递送***190可以驻留在或者执行在本地计算机器187上。在另一个实施例中,应用递送***190可以驻留或者执行在多个本地计算机器187上。在一些实施例中,应用递送***190可以在服务器群组38中执行。在一个实施例中,执行应用递送***190的本地计算机器187还可以保存并且提供应用和数据文件。在另一个实施例中,第一组的一个或者多个本地计算机器187执行应用递送***190,并且不同的服务器本地计算机器187可以保存或者提供应用和数据文件。在一些实施例中,应用递送***190、应用和数据文件的每一个可以驻留或者位于不同的服务器。在又一个实施例中,应用递送***190的任意部分可以驻留、执行或者保存在或者分布到设备200或者多个设备。
在一个实施例中,远程计算机器186请求执行应用程序并且包括本地计算机器187的应用递送***190选择执行应用程序的方法。在一些实施例中,本地计算机器187从远程计算机器186接收证书。在另一个实施例中,本地计算机器187从远程计算机器186接收对于可用应用的列举的请求。在一个实施例中,响应于该请求或者证书的接收,应用递送***190列举对于远程计算机器186可用的多个应用程序。应用递送***190接收执行所列举的应用的请求。应用递送***190例如响应于策略引擎的策略来选择用于执行所列举应用的预定数量的方法的其中一个。应用递送***190可以选择执行启用远程计算机器186的应用的方法,来接收在服务器106上执行应用程序所产生的应用输出数据。应用递送***190可以选择执行启用远程计算机器186的应用的方法,来在获取包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用递送***190可以选择应用执行的方法来经由网络104将应用流式传输到远程计算机器186。
在一些实施例中,应用递送***190包括CitrixSystems公司的例如MetaFrame或Citrix表示(Presentation)服务器TM的Citrtx访问套件TM的任意部分和/或任何由微软公司出品的微软Windows终端服务。递送***190还可以包括CitrixDesktopServerTM(也称为XenDesktop)。在一个实施例中,应用递送***190可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到远程计算机器186或用户。在另一个实施例中,应用递送***190可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
在一个实施例中,应用递送***190包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎195。在一些实施例中,策略引擎195确定用户或远程计算机器186可以访问的一个或多个应用。在另一个实施例中,策略引擎195确定应用应该如何被递送给用户或远程计算机器186,例如执行方法。在一些实施例中,应用递送***190提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给远程计算机器186以用于本地执行。
在另一个实施例中,远程计算机器186执行程序相邻应用来和群组中的本地计算机器187通信。仍在另一个实施例中,本地计算机器187提供主节点的功能性。在一些实施例中,远程计算机器186通过网络104和群组中的本地计算机器187相通信。通过网络104,远程计算机器186例如可以请求执行由本地计算机器187寄载的多个应用并且接收应用执行的结果输出用于显示。在一些实施例中,仅有主节点提供用于请求识别和提供和寄载所请求应用的本地计算机器187相关联的地址信息的功能性。
如图1A所示,在网络104和104′之间示出也可以被称为接口单元200或网关200的设备200。在一些实施例中,设备200可以位于网络104上。例如,公司的分支机构可以在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104′上。例如,设备200可以位于公司的数据中心。在又一个实施例中,多个设备200可以部署在网络104上。在一些实施例中,多个设备200可以部署在网络104′上。在一个实施例中,第一设备200与第二设备200′相通信。在其它的实施例中,设备200可以是在与远程计算机器186相同或不同的网络104,104′上的任意远程计算机器186或者本地计算机器187的一部分。一个或多个设备200可以位于在远程计算机器186和本地计算机器187之间的网络或网络通信路径中的任意点处。
设备200可以加速将计算环境15或其任意部分递送给远程计算机器186。在一个实施例中,设备200通过应用递送***190来加速计算环境15的递送。例如,此处描述的实施例可以用来将由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在远程计算机器186和本地计算机器187之间的传输层业务量。设备200可以提供用于加速从本地计算机器187到远程计算机器186的任意传输层有效载荷的加速技术,例如:1)传输层连接池,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩和5)高速缓存。在一些实施例中,设备200响应于远程计算机器186的请求来提供本地计算机器187的负载平衡。在其它实施例中,设备200充当代理或访问服务器以提供对一个或多个本地计算机器187的访问。在另一个实施例中,设备200提供从远程计算机器186的第一网络104到本地计算机器187的第二网络104′的安全虚拟专用网连接,例如SSL(安全套接字层)VPN连接。在又一些实施例中,设备200提供在远程计算机器186和本地计算机器187之间的连接和通信的应用防火墙安全、控制和管理。
图3中示出用于选择性渲染三维图像的方法302的一个实施例。拦截在分布计算环境中的机器上执行的应用所产生的图像命令(步骤304)。响应于图像命令的拦截,分析该应用来确定并且获取该应用的特征(步骤306)。还分析分布计算环境中的远程计算机器186来确定并且获取远程计算机器186的特征(步骤308)。另外,分析分布计算环境中的本地计算机器187来确定并且获取本地计算机器187的特征(步骤310)。分析本地计算机器187和远程计算机器186之间的连接104来确定并且获取该连接104的特征(步骤312)。一旦得到连接特征、应用特征、远程计算机器特征和本地计算机器特征,做出将所拦截的图像命令传送到何处的决定(步骤314)。将所拦截的图像命令传送到远程计算机器186或者到本地计算机器187上的计算元件265(步骤316)。
继续参考图3并且更详细地,在一个实施例中,本地计算机器187是服务器106而在另一个实施例中本地计算机器187是客户机102。在一个实施例中远程计算机器186可以是客户机102而在另一个实施例中远程计算机器186可以是服务器106。在一些实施例中,本地计算机器187可以是网络上的节点或者端点,并且在本地计算机器187是服务器106的实施例中本地计算机器187可以是服务器节点或者端点。在本地计算机器187是客户机102的实施例中,本地计算机器187可以是客户机节点或者端点。在远程计算机器186是客户机102的实施例中远程计算机器186可以是客户机节点或者端点。在远程计算机器186是服务器106的实施例中,远程计算机器186可以是服务器节点或者端点。本地计算机器187和远程计算机器186之间的连接可以是网络104,或者在一些实施例中,是多于一个的网络104、104’。在其他实施例中,该连接可以是将本地计算机器187链接到远程计算机器186的任意形式,使得本地和远程计算机器可以互相通信。
在一个实施例中,拦截由应用所产生的图像命令(步骤304)。该图像命令可以是三维图像命令或者是图像命令的任意其它集,其中在渲染时该命令请求的存储器的数量和处理功率的数量大于渲染二维图像所需的存储器和处理功率的数量。在一个实施例中,图像命令由本地计算机器187上执行的应用所产生。其他实施例包括的方法302中,图像命令由远程计算机器186上执行的应用所产生,而依旧是其他实施例中拦截由网络104、104’上的计算机器或者设备上执行的应用所产生的图像命令。在一个实施例中,由本地计算机器187上执行的过滤器拦截图像命令。该过滤器可以和应用相作用来拦截应用所产生的图像命令。在其他实施例中,过滤器可以是以下任一个:应用、过滤器模块、插件、子程序,或者能够检测应用产生图像命令并且拦截这些图像命令的任意其它的可执行命令集。仍旧是其他实施例包括在以下任一上执行的过滤器:本地计算机器187;远程计算机器186;网络104上的设备;网络104上的计算机器,其中计算机器远离本地计算机器187和远程计算机器186;网络104上的虚拟机器;或者可以执行具有上述性能的过滤器的任意其它计算机器。
在一个实施例中,分析该应用来确定对于该应用特有的一组特征(步骤306)。在一个实施例中,过滤器分析该应用来确定应用特有的特征(步骤306)。在另一个实施例中,本地计算机器187或者远程计算机器186分析该应用来确定应用特有的特征(步骤306)。仍旧是其他实施例包括驻留在网络104上的第三机器或者应用并且能够和应用相作用来分析该应用并且确定应用特有的特征(步骤306)。应用的分析可以包括分析应用的文件扩展名来确定应用类型。在一些实施例中,分析应用可以包括分析和应用相关联的元数据或者隐藏文件来确定以下任意内容:应用类型,和应用相关联的规则和策略,或者提供信息的应用的任何其他特征,该信息可以用来确定由应用所产生的三维图像命令是否应该呈现在本地计算机器187或者远程计算机器186上。仍旧是其他实施例包括析取元数据、水印、标记、标识符或者来自应用的其它类型的标识并且将该类型的标识映射到元数据或者规则引擎来确定由应用所产生的三维图像命令是否呈现在本地计算机器187或者远程计算机器186上。在一个实施例中,应用的类型可以确定是否应该呈现在本地或者远程计算机器上。CATIA是图像命令必须呈现在本地计算机器187上的例子。CATIA不在“保持模式”中操作并且在执行如在场景中移动对象一样简单的动作时一直这样持续来发送图像图元。与之相反,在“保持模式”中可以操作的应用产生少于例如CATIA的应用所产生的图像图元。因此,操作在“保持模式”中的那些应用可以产生能够呈现在远程计算机器186上的图像命令。类似地,所呈现的对象或者场景的类型可以指示呈现所发生的地方。例如,幼兽具有较少的坐标并且可以由远程计算机器186容易地渲染,而三维飞机模型具有许多坐标和向量所以应该更合适由本地计算机器187渲染。确定何处渲染三维图像数据的其他因素包括确定由应用所使用的图像的类型,诸如:DirectX、OpenGL、GID、MPEG、Flash等等。
在一个实施例中,分析远程计算机器186来确定远程计算机器186的性能(步骤308)。分析远程计算机器186可以通过以下任一个来实现:过滤器,远程计算机器186上执行的应用,本地计算机器187上执行的应用,远程计算机器186,本地计算机器187,或者驻留在网络104上并且能够和远程计算机器186相作用来确定远程计算机器186的性能的第三机器或者附加应用。通过向远程计算机器186询问关于其处理性能并且远程计算机器186是否具有可以接收三维图像命令作为输入并且输出三维图像数据的计算元件的信息来实现远程计算机器186的分析。其他实施例包括分析远程计算机器186来确定远程计算机器186上的计算元件是否有足够能力来输入由应用所产生的三维图像命令并且输出三维图像数据。其他实施例包括分析远程计算机器186来确定计算元件的可用性,并且来检查远程计算机器186的总的性能。该确定可以通过以下来实现:检查中央处理单元的性能,检查图像处理单元的性能,检查中央处理单元和图像处理单元之间的总线的性能,检查具有图像渲染性能的软件应用的性能,识别VistaWindowsExperienceIndex(WEI),识别编解码器是否在远程计算机器186上可用,其中该编解码器可以是音频/视频或者仅是图像的,以及识别DirectShow或者其他高级视频回放应用程序接口的可用性。可用的编解码器意味着发送到远程计算机器186的数据可以被压缩,从而降低对于可用网络带宽的需求。
在一个实施例中,分析本地计算机器187来确定本地计算机器187的性能(步骤310)。分析本地计算机器187可以通过以下任一个来实现:过滤器,远程计算机器186上执行的应用,本地计算机器187上执行的应用,远程计算机器186,本地计算机器187,或者驻留在网络104上并且能够和本地计算机器187相作用来确定本地计算机器187的性能的第三机器或者附加应用。通过向本地计算机器187询问关于其处理性能并且本地计算机器187是否具有可以接收三维图像命令作为输入并且输出三维图像数据的计算元件的信息来实现本地计算机器187的分析。其他实施例包括分析本地计算机器187来确定本地计算机器187上的计算元件是否有足够能力来输入由应用所产生的三维图像命令并且输出三维图像数据。其他实施例包括分析本地计算机器187来确定计算元件的可用性,并且来检查本地计算机器187的总的性能。该确定可以通过以下来实现:检查中央处理单元的性能,检查图像处理单元的性能,检查中央处理单元和图像处理单元之间的总线的性能,检查具有图像渲染性能的软件应用的性能,识别VistaWindowsExperienceIndex(WEI),识别编解码器是否在本地计算机器187上可用,其中该编解码器可以是音频/视频或者仅是图像的,以及识别DirectShow或者其他高级视频回放应用程序接口的可用性。可用的编解码器意味着发送到本地计算机器187的数据可以被压缩,从而降低对于可用网络带宽的需求。
分析本地计算机器187和远程计算机器186之间的连接来获取该连接的特征(步骤312)。在一个实施例中,分析连接包括确定表示连接的性能参数的值,诸如连接上可用带宽的值,表示连接延迟的值,表示瓶颈可能性的值。这些值可以实时确定、根据历史数据确定或者基于时间平均来确定。连接的分析还可以包括确定表示远程计算机器和本地计算机器之间的物理距离的值,确定用来传输图形命令或者图像数据的传输协议的类型,或确定连接媒介(例如电缆、光纤、无线)。
基于应用特征、远程计算机器特征、本地计算机器特征和连接特征,做出何处渲染三维图像数据的决定(步骤314)。所获取的特征和能力的每一个被加权并且关于用于渲染的最佳位置做出选择。在一个实施例中,策略引擎可以被用来进一步加强和***相关联并且在一些实施例中与所获取的特征和能力相关联的规则。仍在其他实施例中,所获取的性能和特征不可以被用来确定何处渲染,而是用于何处渲染可以整体基于加强的策略或者规则的决策。
一旦渲染,图像命令就被传送到所确定的位置。如果确定本地计算机器187渲染该图像数据,则图像命令被传送到本地计算机器187上的计算元件。计算元件接收该图像命令作为输入,根据图像命令渲染图像数据并且输出图像数据。图像数据随后传送到可以被显示或者保存的远程计算机器186。如果确定远程计算机器186渲染图像数据,则图像命令被传送到远程计算机器186。远程计算机器186上的计算元件接收图像命令作为输入,根据图像命令渲染图像数据,并且输出图像数据。远程计算机器186随后可以保存或者显示图像数据。在一个实施例中,本地计算机器187在确定何处渲染图像数据之前保存图像命令。
在一个示例实施例中,基于***配置,可以改变根据三维图像命令在何处渲染三维图像数据的选择。因此,由于三维图像数据可以由本地计算机器187、远程计算机器186、本地或者远程计算机器187、186上的任意计算元件、或者可以根据三维图像命令渲染三维图像数据的任意其它计算元件或者机器来渲染,所以渲染三维图像数据是动态的。可以基于以下任何来做出何处渲染的决定:用户会话,会话,用户,***的周期性扫描,***中检测到的变化,应用产生的请求,三维图像命令的拦截,或者响应于任意其它事件或者时间周期。在一些实施例中,三维图像命令的一部分可以呈现在一个位置,而三维图像命令的其他部分可以呈现在另一个位置。选择哪一部分呈现在何处可以基于:图像命令是否和背景或者前景图像相关,命令是否涉及纹理映射或者矢量图,在图像命令中是否存在特定的模式。
图4中示出用于选择性渲染三维图像的方法400。在图像命令已经传送到远程计算机器186或者到本地计算机器187的计算元件之后(步骤410),应用或者客户机代理120等待预定的时间周期(步骤412)。该约束可以在客户机代理120中或由用户指定。等待预定的时间周期之后,分析该应用来确定并且获取应用的特征(步骤414)。还分析分布计算环境中的远程计算机器186来确定并且获取远程计算机器186的特征(步骤416)。此外,分析分布计算环境中的本地计算机器187来确定并且获取本地计算机器187的特征(步骤418)。分析本地计算机器187和远程计算机器186之间的连接104来确定并且获取连接104的特征(步骤420)。一旦得到连接特征、应用特征、远程计算机器特征和本地计算机器特征,做出将所拦截的图像命令传送到何处的决定(步骤424)。将所拦截的图像命令传送到远程计算机器186或者到本地计算机器187上的计算元件265(步骤426。
继续参考图4并且更详细地,方法400的例子包括本地计算机器187上执行的并且产生三维图像命令的应用。在得到并且检查应用特征、本地计算机器187特征、远程计算机器186特征和连接特征之后,确定图像命令将被传送到本地计算机器187上的计算元件。在预定时间周期之后,重新获取并且检查应用特征、本地计算机器187特征、远程计算机器186特征和连接特征。检查特征和性能时,确定图像命令当前将会被传送到用于渲染图像数据的远程计算机器186。在另一个实施例中,在检查重新获取的特征和性能之后,图像命令可以被首先发送到远程计算机器186并且随后发送到本地计算机器187上的计算元件。
在WindowsVista中,DirectX应用将图像发送到与用户模式驱动器和图像内核协作的Direct3D运行时(runtime)来将DirectX图像命令呈现在可用硬件上。当DirectX应用在终端服务中执行时,在DirectX应用的执行和增强的图像的产生中存在退化。性能中退化的一个原因是在终端服务中执行时该应用不再能够访问诸如图像处理单元的图像渲染硬件。因此,DirectX应用依赖于在DirectX运行时间和内核中执行的软件来将DirectX图像命令呈现为图像数据。从而,对图像渲染硬件的访问的损失削弱DirectX应用的性能。
图5中示出消除和执行如上所述的终端服务中的DirectX应用相关联的缺陷的***的实施例。该***中所包括的是和Direct3D运行时间模块402相通信的Direct3D渲染应用401。Direct3D代理403包括在***中并且和Direct3D运行时间404以及Direct3D管理服务405相通信。
继续参考图5并且更详细地,所描述***允许在终端服务中执行的DirectX应用使用与Direct3D运行时间404中执行的软件相对的服务器上的图像硬件。在一些实施例中,该***可以关注DirectX和WindowsPresentationFoundation应用的使用。Direct3D渲染应用401传输命令给Direct3D运行时模块402。Direct3D渲染应用401通过接收从Direct3D代理模块403转发的命令来用作对于会话中的应用的代理。
在操作中,当应用试图驱动Direct3D***来渲染场景时,Direct3D代理403将其图像命令重新发送到Direct3D渲染应用401,其随后将这些命令发送给其Direct3D运行时402,仿佛其是请求的应用。本质上,应用所期望的当前架构是透明的。此外,Direct3D代理403允许应用在和会话空间中的Direct3D运行时间404通信时如同其正常时一样操作。
在一个实施例中,Direct3D代理403拦截Direct3D呼叫并且将它们发送给在控制台会话中运行的Direct3D渲染应用401。Direct3D代理403还初始化其自身和Direct3D管理服务405之间的通信,Direct3D管理服务405随之建立渲染应用服务。在一些实施例中,Direct3D代理403钩住实时运行时间,但仅影响已经由显示驱动器处理的图像呼叫。
在一个实施例中,Direct3D管理服务405建立Direct3D渲染应用401并且建立Direct3D渲染应用401和请求服务器硬件支持的Direct3D代理403之间的通信路径。
总之,上面参考图5描述的架构的实施例提供对终端服务会话中服务器106的图像硬件(例如GPU或者GPU设备250)的访问。由此,关于渲染软件中的位图,改进了对远程计算机器186的位图化的渲染图像的远程处理。
在另一个实施例中,假设Direct3D应用是诸如由WINDOWSVista提供的AERO桌面的“桌面”并且远程计算机器186正访问本地计算机器187上的远程桌面。在一些实施例中,客户机102的GPU121用来渲染OPENGL或者Direct3D场景。在一个方面中,相对于其他方案,改进了从本地计算机器187到远程计算机器186的图像信息的传输。
参考图6,示意图示出用来概述部件和部件之间数据流的架构的一个实施例。在此架构中,显示驱动器和应用之间的分层是薄的以限制开销和开发的劳动强度。
在一个实施例中,该架构包括应用/桌面窗口管理器(DWM)模块502。在一个实施例中,桌面窗口管理器是在窗口管理器处作用的WPF应用。桌面窗口管理器和D3D9Ex接口相互作用。桌面窗口管理器负责渲染窗口的非客户机部分和影响窗口的转变效应。在一个实施例中,应用/桌面窗口管理器模块502由使用Direct3D的***或者应用来提供。桌面窗口管理器使用Direct3D来建立桌面。该部件将会是提供3D几何构形来渲染场景的部件。在一些方面,应用/桌面窗口管理器模块502驱动Direct3D***来渲染场景。在这样的实施例中,应用/桌面窗口管理器模块502不具有特定功能,而是三维几何构形的源。
该架构还包括Direct3D钩子模块504。在一个实施例中,Direct3D钩子模块504通过拦截导致后端缓冲器转换到前端缓冲器的当前调用来提供检测屏幕更新所需的功能性。一旦钩子检测到当前调用,该钩子应该将该调用传递并且从图像卡收集用于应用和图像数据的窗口信息。钩子随后将图像数据和窗口信息呈现给图形传输服务506。
在一些实施例中,Direct3D钩子模块504提供涉及以下的功能性:检测屏幕更新,钩住Direct3D数据来检测屏幕更新,图像传输服务506以诸如来自图像卡的图像数据的数据和用于上下文的信息来表示。Direct3D钩子模块504还以有限的开销来提供可靠的钩子环境。图像收集将通过当前调用更新的屏幕的一部分收集起来。
该架构包括Direct3D***模块508。在一个实施例中,Direct3D***模块是动态链接库(d11)。Direct3D***模块508提供涉及缓冲发送到硬件显示驱动器510的命令和几何数据的功能性。在一些实施例中,Direct3D***模块508将Direct3D调用打包到缓冲器用于大块传送。该架构还包括硬件显示驱动器510。该驱动器是现有的硬件驱动器。其角色是用来以正常方式操作,并且允许Direct3D钩子模块504收集离开图像卡的图像数据。硬件显示驱动器510还将场景渲染为位图并且将图像递送到Direct3D钩子模块504。
该架构还可以包括图像传输服务模块506。该模块和Direct3D钩子模块504以及Winstation驱动器512相通信。该部件包括用于将图像递送到客户机102的图像传输虚拟信道的功能性。在多种实施例中,图像传输服务模块506实现一个或者多个压缩方案(例如,激进压缩)。如此处所使用的,激进压缩是指在动画制作程序期间降低图像的质量来允许以图像质量为代价的更多的生产量。通过降低动画制作期间的图像中的细节的水平,该过程被认为改进了帧刷新率。检测动作制作的最终帧并且以更高质量发送。
在多个实施例中,图像传输服务模块506从Direct3D钩子模块504请求图像,执行激进压缩、高速缓存并且实现新的图像虚拟信道。图像传输服务模块506还接收窗口通知。此外,图像传输服务模块506协助管理网络业务量来获取最大帧率。
该架构还包括WINSTATIONDRIVER模块512。在一些实施例中,WINSTATIONDRIVER模块512协助执行多路复用到单个连接的虚拟信道。这包括实现对于网络业务量和虚拟信道优选队列的优化。
更详细地,Direct3D具有对于收集该信息的两个可用的接口。第一是用户模式WDDM接口并且第二个是Direct3DSDK接口。关于用户模式WDDM,检测屏幕更新的一个方法是通过当前函数调用。该函数使得D3D上下文的后端缓冲器被复制到屏幕的前端缓冲器中。该窗口信息可以被提供在当前调用中或者可以丢失。关于Direct3DSDK接口,该接口是COM对象接口。当前调用可以从许多不同接口做出。这些包括IDirect3DDevice9、IDirect3DSwapChain9和IDXGISwapChain。IDirect3DDevice9和IDirect3DSwapChain9二者都是Direct3D9上的接口,而IDXGISwapChain用于Direct3D10。
参考图7,示出并描述Direct3DCOM对象建立或者访问流。通过IDirect3DDevice9::CreateAdditionalSwapChain或者IDirect3DDevice9::GetSwapChain接口函数,建立或者可得到IDirect3DSwapChain9对象。通过调用IDirect3D9::CreateDevice函数,得到IDirect3DDevice9对象。从通过Direct3DCreate9返回的对象可以访问IDirect3D9接口。与其他***COM对象不同,Direct3DCOM对象不使用CoCreateInstance创建。而第一COM对象使用Direct3DCreate9API创建。随后从该处,其他的Direct3DCOM对象从COM对象上的函数调用返回。
参考图8,示出并且描述目标窗口确定机制的操作。窗口信息可以包括在具有hDestWindowOverride的当前调用中。如果没有提供该参数,则窗口从分配到IDirectSwapBufferChain9或者IDirect3DDevice9对象的D3DPRESENT_PARAMETERS结构中获取。IDirect3DDevice9对象允许使用D3DPRESENT_PARAMETERS结构的hFocusWindow或者hDeviceWindow来在IDirect3D9::CreateDevice上建立目标窗。除了IDirect3D9::CreateDevice,IDirect3DDevice9::Reset还允许建立和Direct3D上下文相关联的D3DPRESENT_PARAMETERS的hDeviceWindow。IDirect3DSwapChain9对象仅具有一个在IDirect3DDevice9::CreateAdditionalSwapChain上设置D3DPRESENT_PARAMETERS的hDeviceWindow的机制。
在上述架构的一些实施例中,当前调用与窗口目标信息一起被监控。该信息可以通过钩住Direct3DSDK接口来获取。该接口包括从通过动态链接或者静态链接到Direct3D动态库的应用调用的普通API函数。该函数调用是Direct3DCreate9并且用于建立COM对象。
从该点起,钩子支持(leverage)不同的COM接口钩子技术。该技术允许由应用提供的信息被收集并且在必要时被用来收集窗口信息和屏幕更新。
在一个实施例中,Direct3DCreate9接口支持ICA服务器当前用来支持在应用层捕获信息的标准钩子机制。该机制允许将COM钩子***到必要的COM对象上。
在另一个实施例中,之前讨论的COM函数收集关于屏幕更新何时可用的窗口信息和知识。COM对象钩子关注从应用通过COM接口到Direct3D运行时的信息。
在另一个实施例中,执行pass-thruCOM(穿通COM)对象。该穿通COM对象确保来自应用的接口调用导致对真实Direct3DCOM对象的调用。为了基本这样实现,钩住对所讨论的接口的所有创建调用或者访问调用。返回穿通COM对象,而不是返回Direct3DCOM对象。此外,穿通COM对象建立Direct3DCOM对象并且将接口调用传递到原始COM对象。
在一个实施例中,COM执行引用计数,用于释放不再引用的对象。COM穿通机制不必关注使钩住的COM对象悬空(dangling)。对于钩住的COM对象,合法的是具有比穿通COM对象引用计数更高的引用计数。这是因为对于创建调用可以增加用于建立引用的对象的引用计数。甚至Direct3DCOM对象做出对于其它Direct3DCOM对象的直接调用时,可以这样实现。穿通COM执行将正确地保持对COM对象和它们的使用的引用。
图9中示出用于实现三维或者其它改进图像的硬件渲染的架构的一个实施例。该架构中的部件是端口ICA连接管理器,穿通视频显示驱动器和/或DirectX钩子,图像捕获模型,压缩编码器和译码器,图像传输服务和绘架座(pictor)虚拟信道。
参考图9并且更详细地,端口ICA连接管理器确定在远程计算机器和本地计算机器之间作出的连接的类型,并且配置正确的视频显示来使用。部分基于关于视频驱动器是否安装在本地计算机器或者远程计算机器和哪种类型的视频驱动器安装在本地计算机器和远程计算机器中的决定来实现该配置。该连接管理器可以参考架构中包括的部件来确定正确的ICA堆栈以使用。考虑何时确定正确的ICA堆栈来使用的必要条件是:连接的类型和主操作***。
在一个实施例中,用于会话的视频驱动器是可以将装置驱动器命令链到用于在硬件上渲染图像的实际OEM视频驱动器的驱动器。该视频驱动器允许其它部件和应用来钩住上述视频驱动器,使得这些部件和应用得到更高级的DirectX命令或者其它数据相关性以远程连接到客户机或者从客户机和/或服务器得到远程三维图像。在一个实施例中,图像捕获模块用来提供接口以得到最优压缩格式的显示数据。一些实施例包括允许端口ICA连接管理器按要求启用或者停止视频驱动器的视频驱动器。其他实施例包括在启用视频驱动器时可以重新审查诸如压缩模式的性能的视频驱动器。
在一个实施例中,图像捕获模块提供到图像传输服务的接口以收集用于传输到客户机的图像。捕获模块可以连接并且操作视频驱动器以识别需要递送到客户机或者服务器的屏幕更新。图像捕获模块请求接口,使得图像捕获模块可以在建立新图像数据(即,重写位)时通知传输服务,并且通知传输服务关于可用来以对于在可用带宽和资源上传输合适的格式析取图像数据的方法。图像捕获模块还可以包括诸如窗口坐标、窗口句柄的窗口信息,或者可以协助创建无缝连接的其他窗口信息。涉及使用压缩或者高速缓存的性能技术可以影响如何使用图像捕获模块。
压缩编码和解码器模块支持此处描述的***和方法所使用的多种类型的压缩。每一压缩类型与主机和客户机模块相关联。在一些实施例中,主机上的压缩模块位于图像捕获模块中并且接近硬件渲染部件,使得可以启用在压缩期间启用所使用的GPU。在一个实施例中,GPU不需要支持压缩,但还是期望其可以使用。在其他实施例中,因为客户机GPU可以同时在图像卡上被使用解压和渲染,所以客户机上的压缩模块接近渲染部件。在一些实施例中,客户机可以支持服务器上的GPU不执行的压缩和高速缓存技术,在这些实施例中,如果使用硬件解压技术,则客户机上的译码器可以要求客户机侧驱动器。
在一个实施例中,图像传输服务用于将图像打包以通过ICA协议传输并且用于管理由图像传输协议所消耗的带宽。在一些实施例中,图像传输服务可以将服务提供给服务器的操作***中运行的所有会话。此外,图像传输服务可以响应来自图像捕获模块关于图像数据可用性的信号并且还可以监控ICA业务量以确定何时通过绘架座(Pictor)虚拟信道发送图像数据。图像传输服务可以使用ICA客户机来查看客户机性能。
在一个实施例中,绘架座(Pictor)虚拟信道是具有渲染命令的图像传输协议。绘架座协议包括多个压缩机制,该压缩机制包括客户机和主机性能的合适的协商。该压缩机制的协商可以使得随机类型的压缩可以由服务器和客户机所使用。在一个实施例中,ICA客户机中的绘架座虚拟信道可以解压并且渲染处于屏幕上合适位置的图像。
图10中示出多个虚拟机器架构的实施例。该架构包括虚拟机器上共享的GPU和基于网络的设备。还包括虚拟图像处理单元(GPU)驱动器和渲染应用。
在一个实施例中,虚拟GPU驱动器在CDS会话中操作并且使用跨虚拟机(inter-virtualmachine)通信协议,或者可以和渲染应用或者服务通信的网络协议,该渲染应用或者服务管理能够执行图像渲染、图像捕获和图像压缩的物理硬件。一些实施例包括通过将图像原语发送给支持物理显示适配器和压缩硬件来渲染图像用于多个用户会话的服务来允许单个环境中的多个虚拟机器访问和共享该环境中的物理GPU和任一附加压缩硬件的虚拟GPU。
在一个实施例中,渲染应用还可以是通过网络或者共享存储器协议来提供GPU共享服务给不同虚拟机器中操作的多个客户机的渲染服务。在一些方面,渲染应用或者服务可以支持一个或者多个GPU、压缩硬件部件或者其他图像处理硬件部件来为一个或者多个虚拟机器提供对于渲染、获取图像和压缩图像所需的资源。在其它方面包括为客户机或者服务器提供所需的压缩应用或者硬件的渲染应用或者服务。

Claims (42)

1.一种用于远程处理三维图像数据的方法,该方法包括:
由分布计算***中的本地计算机器拦截由所述本地计算机器上执行的应用向所述本地计算机器的显示驱动器流式传输的三维图像命令;
通过分析该应用来获取所述应用的应用特有的特征;
通过分析远程计算机器获取所述分布计算***中的远程计算机器的性能;
通过分析所述本地计算机器获取所述本地计算机器的性能;
通过分析安装在所述本地计算机器和所述远程计算机器之间的连接来获取所述连接的特征;
基于所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征,确定将所拦截的三维图像命令传送到所述本地计算机器上的计算元件或者所述远程计算机器中的哪一个,其中,所述本地计算机器上的计算元件或者所述远程计算机器接收三维图像命令作为输入;
响应于所述确定,将所述三维图像命令传送到所述远程计算机器,或者传送到所述本地计算机器上的计算元件;
等待预定时间周期;
重新获取所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征的每一个;
基于所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征,重新确定将所拦截的三维图像命令传送到所述本地计算机器上的计算元件或者所述远程计算机器中的哪一个;以及
响应于所述重新确定,将所述三维图像命令传送到所述远程计算机器,或者传送到所述本地计算机器上的计算元件。
2.根据权利要求1所述的方法,其中,拦截三维图像命令还包括拦截原语三维图像命令。
3.根据权利要求1所述的方法,其中,拦截三维图像命令还包括拦截高级三维图像命令。
4.根据权利要求1所述的方法,其中,分析所述远程计算机器还包括确定所述远程计算机器是否具有能够接收三维图像命令并且输出三维图像数据的计算元件。
5.根据权利要求1所述的方法,其中,分析所述远程计算机器还包括确定和所述远程计算机器相关联的评分,该评分和所述远程计算机器的硬件和软件配置相关联。
6.根据权利要求1所述的方法,其中,分析所述远程计算机器还包括识别所述远程计算机器上可用的编解码器。
7.根据权利要求1所述的方法,其中,分析该连接还包括确定所述连接中可用的带宽数量。
8.根据权利要求1所述的方法,还包括:
由所述计算元件根据所述三维图像命令渲染三维图像数据;
由所述本地计算机器将所渲染的三维图像数据发送给所述远程计算机器。
9.根据权利要求1所述的方法,其中,传送给所述本地计算机器上的计算元件还包括传送给所述本地计算机器上的图像引擎。
10.根据权利要求1所述的方法,其中,传送给所述本地计算机器上的计算元件还包括传送给所述本地计算机器上的处理器,所述处理器有能力接收三维图像命令并且输出三维图像数据。
11.根据权利要求1所述的方法,其中,传送给所述本地计算机器上的计算元件还包括传送给所述本地计算机器上执行的应用,该应用接收三维图像命令并且输出三维图像数据。
12.根据权利要求8所述的方法,还包括:
由所述远程计算机器接收所述三维图像命令;并且
由所述远程计算机器显示所接收的三维图像数据。
13.根据权利要求1所述的方法,其中,传送还包括将三维图像命令传送给具有计算元件的所述远程计算机器。
14.根据权利要求13所述的方法,还包括:
由所述计算元件接收所述三维图像命令,并且
由所述计算元件输出三维图像数据。
15.根据权利要求13所述的方法,其中,传送给所述远程计算机器上的计算元件还包括传送给所述远程计算机器上的图像引擎。
16.根据权利要求13所述的方法,其中,传送给所述远程计算机器上的计算元件还包括传送给所述远程计算机器上的处理器,该处理器有能力接收三维图像命令并且输出三维图像数据。
17.根据权利要求13所述的方法,其中,传送给所述远程计算机器上的计算元件还包括传送给所述远程计算机器上执行的应用,该应用接收三维图像命令并且输出三维图像数据。
18.根据权利要求13所述的方法,还包括由所述远程计算机器显示所输出的三维图像数据。
19.根据权利要求1所述的方法,还包括在传输之前保存所述三维图像命令。
20.根据权利要求1所述的方法,其中,传送还包括将三维图像命令传送给所述本地计算机器上的计算元件,该计算元件包括能够根据图像命令渲染三维图像数据的计算机硬件元件。
21.根据权利要求1所述的方法,其中,传送还包括将三维图像命令传送给具有计算元件的远程计算机器,该计算元件包括能够根据图像命令来渲染三维图像数据的计算机硬件元件。
22.一种用于远程处理三维图像数据的***,该***包括:
分布计算***中的远程计算机器;
建立在所述分布计算***中的本地计算机器和所述远程计算机器之间的连接,所述远程计算机器经由该连接和所述本地计算机器通信;
执行在所述本地计算机器上的应用,该应用产生三维图像命令;和
具有接收三维图像命令作为输入、并且输出三维图像数据的计算元件的本地计算机器,所述本地计算机器执行应用来:
拦截由所述本地计算机器上执行的应用向所述本地计算机器的显示驱动器流式传输的三维图像命令;
分析该应用来获取应用的应用特有的特征;
分析所述远程计算机器以获取所述远程计算机器的性能;
分析所述本地计算机器以获取所述本地计算机器的性能;
分析所述连接来获取所述连接的特征;
基于所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征,确定将所拦截的三维图像命令传送到所述远程计算机器,或者传送到所述本地计算机器上的计算元件;
等待预定时间周期;
重新获取所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征的每一个;
基于所述应用特有的特征、所述远程计算机器的性能、所述本地计算机器的性能和所述连接特征,重新确定将所拦截的三维图像命令传送到所述本地计算机器上的计算元件或者所述远程计算机器中的哪一个;以及
响应于所述重新确定,将所述三维图像命令传送到所述远程计算机器,或者传送到所述本地计算机器上的计算元件。
23.根据权利要求22所述的***,其中,所述本地计算机器拦截高级三维图像命令。
24.根据权利要求22所述的***,其中,所述本地计算机器拦截原语三维图像命令。
25.根据权利要求22所述的***,其中,所述本地计算机器通过确定所述远程计算机器是否具有能够接收三维图像命令并且输出三维图像数据的计算元件来分析所述远程计算机器。
26.根据权利要求22所述的***,其中,所述本地计算机器通过确定和所述远程计算机器相关联的评分来分析所述远程计算机器,该评分和所述远程计算机器的硬件和软件配置相关联。
27.根据权利要求22所述的***,其中,所述本地计算机器通过识别所述远程计算机器上可用的编解码器来分析所述远程计算机器。
28.根据权利要求22所述的***,其中,所述本地计算机器分析所述本地计算机器来确定所述本地计算机器上的计算元件是否有能力接收三维图像命令并且输出三维图像数据。
29.根据权利要求22所述的***,其中,所述本地计算机器分析该连接来确定所述连接中可用的带宽数量。
30.根据权利要求22所述的***,其中,传送还包括将三维图像命令传送给所述本地计算机器上的所述计算元件。
31.根据权利要求30所述的***,还包括:
所述本地计算机器上的所述计算元件根据所述三维图像命令渲染三维图像数据;和
所述本地计算机器将所渲染的三维图像数据发送给所述远程计算机器。
32.根据权利要求30所述的***,还包括所述本地计算机器传送给所述本地计算机器上的图像引擎。
33.根据权利要求30所述的***,还包括所述本地计算机器传送给所述本地计算机器上的处理器,所述处理器有能力接收三维图像命令并且输出三维图像数据。
34.根据权利要求30所述的***,还包括所述本地计算机器传送给所述本地计算机器上执行的应用,该应用接收三维图像命令并且输出三维图像数据。
35.根据权利要求31所述的***,还包括所述远程计算机器接收所述三维图像数据,并且显示所述三维图像数据。
36.根据权利要求22所述的***,其中,所述本地计算机器将所述三维图像命令传送给具有计算元件的所述远程计算机器。
37.根据权利要求36所述的***,还包括:
所述计算元件接收所述三维图像命令并且输出三维图像数据。
38.根据权利要求36所述的***,其中,所述本地计算机器将所述三维图像命令传送给所述远程计算机器上的图像引擎。
39.根据权利要求36所述的***,其中,所述本地计算机器将所述三维图像命令传送给所述远程计算机器上的处理器,该处理器有能力接收三维图像命令并且输出三维图像数据。
40.根据权利要求36所述的***,其中,所述本地计算机器将所述三维图像命令传送给所述远程计算机器上执行的应用,该应用有能力接收三维图像命令作为输入并且输出三维图像数据。
41.根据权利要求36所述的***,还包括所述远程计算机器显示所输出的三维图像数据。
42.根据权利要求22所述的***,其中,所述本地计算机器在传输之前保存所述三维图像命令。
CN200880112228.2A 2007-10-20 2008-10-20 用于远程处理三维图像数据的方法和*** Active CN101849224B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US98148407P 2007-10-20 2007-10-20
US60/981,484 2007-10-20
PCT/US2008/080561 WO2009052529A1 (en) 2007-10-20 2008-10-20 Methods and systems for remoting three dimensional graphical data

Publications (2)

Publication Number Publication Date
CN101849224A CN101849224A (zh) 2010-09-29
CN101849224B true CN101849224B (zh) 2016-04-27

Family

ID=40291142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880112228.2A Active CN101849224B (zh) 2007-10-20 2008-10-20 用于远程处理三维图像数据的方法和***

Country Status (7)

Country Link
US (1) US8638336B2 (zh)
EP (1) EP2165259A1 (zh)
CN (1) CN101849224B (zh)
AU (1) AU2008311755A1 (zh)
BR (1) BRPI0818582A2 (zh)
CA (1) CA2693426A1 (zh)
WO (1) WO2009052529A1 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US9198084B2 (en) * 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
US20080045149A1 (en) * 2006-05-26 2008-02-21 Dinesh Dharmaraju Wireless architecture for a traditional wire-based protocol
US8667144B2 (en) * 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
CN101464785B (zh) * 2007-12-17 2010-12-08 联想(北京)有限公司 基于wddm的屏幕获取方法及带多显示器的计算机***
AU2009206251B2 (en) 2008-01-27 2014-03-27 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8811294B2 (en) * 2008-04-04 2014-08-19 Qualcomm Incorporated Apparatus and methods for establishing client-host associations within a wireless network
US20100013839A1 (en) * 2008-07-21 2010-01-21 Rawson Andrew R Integrated GPU, NIC and Compression Hardware for Hosted Graphics
US9398089B2 (en) * 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
KR20100113266A (ko) * 2009-04-13 2010-10-21 삼성전자주식회사 휴대용 단말기에서 3차원 영상 메시지 제작 방법 및 장치
US9507618B2 (en) * 2009-05-31 2016-11-29 Red Hat Israel, Ltd. Virtual machine system supporting a large number of displays
US9264248B2 (en) * 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
WO2011032114A1 (en) 2009-09-11 2011-03-17 Citrix Systems, Inc. Remote rendering of three-dimensional images using virtual machines
US9804866B2 (en) * 2009-12-14 2017-10-31 Citrix Systems, Inc. Methods and systems for securing sensitive information using a hypervisor-trusted client
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
WO2011075484A2 (en) 2009-12-14 2011-06-23 Citrix Systems, Inc. A secure virtualization environment bootable from an external media device
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
US8514234B2 (en) * 2010-07-14 2013-08-20 Seiko Epson Corporation Method of displaying an operating system's graphical user interface on a large multi-projector display
JP5808424B2 (ja) * 2010-12-15 2015-11-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックス
US9582239B2 (en) 2011-01-21 2017-02-28 Qualcomm Incorporated User input back channel for wireless displays
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US8674957B2 (en) 2011-02-04 2014-03-18 Qualcomm Incorporated User input device for wireless back channel
US10223997B2 (en) * 2011-12-07 2019-03-05 Ubitus Inc. System and method of leveraging GPU resources to increase performance of an interact-able content browsing service
US8736622B2 (en) * 2011-12-07 2014-05-27 Ubitus Inc System and method of leveraging GPU resources to enhance performance of an interact-able content browsing service
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
CN102664937B (zh) * 2012-04-09 2016-02-03 威盛电子股份有限公司 云端运算图形服务器及云端运算图形服务方法
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US20140184613A1 (en) * 2013-01-01 2014-07-03 Doron Exterman Method for offloading graphic processing unit (gpu) processing tasks to remote computers
CN104346141B (zh) * 2013-07-26 2017-11-10 北京畅游天下网络技术有限公司 一种渲染方法与渲染装置
GB2516833A (en) * 2013-07-31 2015-02-11 Ibm Running software application with dynamic action delegation
WO2015013981A1 (zh) * 2013-08-02 2015-02-05 华为技术有限公司 一种图像显示方法和装置
CN104765636B (zh) * 2014-01-02 2018-05-04 华为技术有限公司 一种远程桌面图像的合成方法和装置
WO2015135181A1 (zh) * 2014-03-13 2015-09-17 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机***
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
CN105957085A (zh) * 2016-05-09 2016-09-21 中国科学院深圳先进技术研究院 三维医学影像数据处理方法及装置
US11023608B2 (en) * 2017-09-15 2021-06-01 Identify3D, Inc. System and method for data management and security for digital manufacturing
CN109739455B (zh) * 2018-12-28 2021-09-21 北京恒泰实达科技股份有限公司 一种电网潮流图可视化方法
US10819817B2 (en) * 2019-02-04 2020-10-27 Dell Products L.P. HTML5 multimedia redirection
CN110557624A (zh) * 2019-07-16 2019-12-10 西安万像电子科技有限公司 数据传输方法、装置及服务器
CN110545415A (zh) * 2019-07-16 2019-12-06 西安万像电子科技有限公司 数据传输方法、装置及服务器
US11610031B2 (en) * 2020-04-02 2023-03-21 Dassault Systemes Solidworks Corporation 3D-link for sharing a 3D context of 3D computer- aided design (CAD) model

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798417B1 (en) * 1999-09-23 2004-09-28 International Business Machines Corporation Just in time graphics dispatching
US7062527B1 (en) * 2000-04-19 2006-06-13 Silicon Graphics, Inc. Management and scheduling of a distributed rendering method and system
CN1816047A (zh) * 2005-02-01 2006-08-09 微软公司 在用户模式中分派网络连接

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928247A (en) 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
CN1292118A (zh) * 1998-02-26 2001-04-18 太阳微***公司 网络上的动态分布式计算的方法和设备
JP3837290B2 (ja) * 1998-05-07 2006-10-25 サムスン エレクトロニクス カンパニー リミテッド ネットワークで使用者とデバイス命令及び制御のための方法及び装置
US6438576B1 (en) * 1999-03-29 2002-08-20 International Business Machines Corporation Method and apparatus of a collaborative proxy system for distributed deployment of object rendering
US6687745B1 (en) * 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
US6763380B1 (en) * 2000-01-07 2004-07-13 Netiq Corporation Methods, systems and computer program products for tracking network device performance
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US20020116491A1 (en) * 2000-09-01 2002-08-22 Boyd Eric L. Method and system for probing a network
US7600014B2 (en) * 2000-11-16 2009-10-06 Symantec Corporation Method and system for monitoring the performance of a distributed application
AU2003208477A1 (en) * 2002-03-01 2003-09-16 T5 Labs Ltd Centralised interactive graphical application server
US6989836B2 (en) 2002-04-05 2006-01-24 Sun Microsystems, Inc. Acceleration of graphics for remote display using redirection of rendering and compression
JP2004234157A (ja) * 2003-01-29 2004-08-19 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7227847B2 (en) * 2004-03-11 2007-06-05 Ixi Mobile (R&D) Ltd. Power management system and method for a wireless communications device
US7571232B2 (en) * 2004-03-22 2009-08-04 Microsoft Corporation Method and apparatus for managing channel information
US7852342B2 (en) * 2004-10-14 2010-12-14 Microsoft Corporation Remote client graphics rendering
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8170065B2 (en) * 2006-02-27 2012-05-01 Time Warner Cable Inc. Methods and apparatus for selecting digital access technology for programming and data delivery
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US20110102443A1 (en) 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798417B1 (en) * 1999-09-23 2004-09-28 International Business Machines Corporation Just in time graphics dispatching
US7062527B1 (en) * 2000-04-19 2006-06-13 Silicon Graphics, Inc. Management and scheduling of a distributed rendering method and system
CN1816047A (zh) * 2005-02-01 2006-08-09 微软公司 在用户模式中分派网络连接

Also Published As

Publication number Publication date
BRPI0818582A2 (pt) 2015-07-21
AU2008311755A1 (en) 2009-04-23
CA2693426A1 (en) 2009-04-23
WO2009052529A1 (en) 2009-04-23
EP2165259A1 (en) 2010-03-24
US20090102838A1 (en) 2009-04-23
CN101849224A (zh) 2010-09-29
US8638336B2 (en) 2014-01-28

Similar Documents

Publication Publication Date Title
CN101849224B (zh) 用于远程处理三维图像数据的方法和***
CN101918921B (zh) 用于远程提供三维图形的方法和***
US10601885B2 (en) Adaptive scene complexity based on service quality
CN101933041B (zh) 图形远程化体系结构
US8718400B2 (en) Methods and systems for prioritizing dirty regions within an image
CN102713882B (zh) 用于选择性地实现渐进显示技术的方法和***
US9235452B2 (en) Graphics remoting using augmentation data
Murturi et al. On Provisioning Procedural Geometry Workloads on Edge Architectures.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant