CN101918921B - 用于远程提供三维图形的方法和系统 - Google Patents
用于远程提供三维图形的方法和系统 Download PDFInfo
- Publication number
- CN101918921B CN101918921B CN2009801011246A CN200980101124A CN101918921B CN 101918921 B CN101918921 B CN 101918921B CN 2009801011246 A CN2009801011246 A CN 2009801011246A CN 200980101124 A CN200980101124 A CN 200980101124A CN 101918921 B CN101918921 B CN 101918921B
- Authority
- CN
- China
- Prior art keywords
- dimensional picture
- dimensional
- order
- agency
- frame
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 179
- 230000008569 process Effects 0.000 claims description 26
- 238000007906 compression Methods 0.000 claims description 17
- 230000006835 compression Effects 0.000 claims description 16
- 238000012546 transfer Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 51
- 238000009877 rendering Methods 0.000 description 44
- 238000004364 calculation method Methods 0.000 description 43
- 238000012545 processing Methods 0.000 description 40
- 238000004891 communication Methods 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 17
- 230000004044 response Effects 0.000 description 17
- 230000008859 change Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 230000032683 aging Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000002708 enhancing effect Effects 0.000 description 4
- 230000002265 prevention Effects 0.000 description 4
- 238000000556 factor analysis Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010422 painting Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101000666896 Homo sapiens V-type immunoglobulin domain-containing suppressor of T-cell activation Proteins 0.000 description 2
- 102100038282 V-type immunoglobulin domain-containing suppressor of T-cell activation Human genes 0.000 description 2
- 244000078534 Vaccinium myrtillus Species 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- IJJVMEJXYNJXOJ-UHFFFAOYSA-N fluquinconazole Chemical compound C=1C=C(Cl)C=C(Cl)C=1N1C(=O)C2=CC(F)=CC=C2N=C1N1C=NC=N1 IJJVMEJXYNJXOJ-UHFFFAOYSA-N 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- IRLPACMLTUPBCL-KQYNXXCUSA-N 5'-adenylyl sulfate Chemical compound C1=NC=2C(N)=NC=NC=2N1[C@@H]1O[C@H](COP(O)(=O)OS(O)(=O)=O)[C@@H](O)[C@H]1O IRLPACMLTUPBCL-KQYNXXCUSA-N 0.000 description 1
- 241000501754 Astronotus ocellatus Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 241000721662 Juniperus Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 1
- 235000003095 Vaccinium corymbosum Nutrition 0.000 description 1
- 235000017537 Vaccinium myrtillus Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 235000021014 blueberries Nutrition 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 238000000859 sublimation Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于提供三维图形给远程计算机器和设备的方法和系统,包括本地计算机器上执行的代理拦截本地计算机器上执行的三维应用所产生的多个三维图形命令。代理使用第一编码译码器来编码多个图形命令的第一部分,而代理使用第二编码译码器编码多个图形命令的第二部分。代理建立包括多个图形命令的第一部分和第二部分的帧,压缩该帧并且将该帧传输到远程计算机器。
Description
该美国专利申请要求2008年1月27日提交的美国临时专利申请序列号61/023,867的优先权,并且要求2008年10月26日提交的美国临时专利申请序列号61/108,538的优先权。这些在前申请的公开内容可认为是本申请的一部分并且通过引用将每一个全部包括进来。
技术领域
本发明总的涉及远程提供图形。更具体地,本发明涉及远程提供三维图形。
背景技术
远程提供具有增强图形需求的应用或者桌面(诸如使用三维图形的那些应用和桌面)的远程递送系统会经历由于所述增强图形需求而导致的终端用户体验下降。例如,当将使用三维图形的桌面或者应用递送到Citrix的XenApp、XenDesktop或者XenServer的终端用户时,为终端用户提供的终端用户体验可能质量较低。在一些实施例中,通过改变将桌面和应用远程提供给终端用户的方式可以实现减轻三维图形导致的质量下降。
当前存在多种用于远程提供二维图形的不同方法和系统。例如,这样的方法和系统典型地通过如下步骤实现二维图形的远程呈现:在一个计算机器上渲染图形并且将渲染的图形内容传输到另一个计算机器;确定渲染的图形何时保存在远程计算机器上,仅渲染没有保存在远程计算机器上的那些图形并且将新近渲染的图像传输到远程计算机器。当前存在的用于远程提供二维图形的方法和系统并没有考虑三维图形的增强的图形需求。这些增强图形需求可以包括渲染和传输三维图形所需的增加的计算资源,渲染三维图形的二维表示的复杂性,以及其他这样的需求。
需要用于远程提供三维图形和具有超过渲染二维图形所需的增强图形需求的其他这样的图形的方法和系统。由于这些方法和系统可以提供成功远程提供三维图形所需的附加的图形需求而不会降低远程提供的应用或者桌面的质量,所以这些方法和系统还可以减轻质量的下降。
发明内容
在最广义的解释中,本发明描述用于远程提供三维图形的方法和系统。远程提供二维图形一般不考虑三维图像所需的增强图像需求,从而不能胜任远程提供三维图形。本发明描述用于和三维图形技术配合的用于远程提供三维图形的系统和方法,从而,该系统和方法可以有效处理和三维图形相关的而与二维图形无关的多个图形部件。
在一个方面中,一种用于远程提供三维图形的方法,包括由代理拦截在本地计算机器上执行的三维应用所产生的多个图形命令。该方法包括由代理使用第一编码译码器来编码多个图形命令的第一部分。该方法包括由代理使用第二编码译码器来编码多个图形命令的第二部分。该方法包括由代理建立包括多个图形命令的第一部分和第二部分的帧。该方法包括由代理压缩该帧。该方法包括由代理将该帧传输到远程计算机器。
在一个实施例中,该方法包括编码多个图形命令的第一部分,该第一部分包括顶点图形命令、索引图形命令和纹理图形命令的其中一个。在另一个实施例中,该方法包括编码多个图形命令的第二部分,该第二部分包括顶点图形命令、索引图形命令和纹理图形命令的其中一个。仍在另一个实施例中,该方法包括编码多个图形命令的第二部分,该多个图形命令的第二部分不同于该多个图形命令的第一部分。在又一个实施例中,该方法包括编码多个图形命令的第二部分,该多个图形命令的第二部分和该图形命令的第一部分大体相同。
在一个实施例中,该方法包括在将图形命令传输到三维图形驱动器之前将它们拦截。在另一个实施例中,该方法包括将该图形命令重定向到代理三维图形驱动器。仍在另一个实施例中,该方法包括的建立帧还包括建立包括图形图元的帧。甚至仍在另一个实施例中,该方法包括的建立帧还包括建立包括DirectX图形图元的帧。甚至仍在另一个实施例中,该方法包括的建立帧还包括建立包括OpenGL图形图元的帧。在另一个实施例中,该方法包括的建立帧还包括建立包括Direct3D图形图元的帧。
在另一个方面中,一种用于远程提供三维图形的系统包括本地计算机器、远程计算机器和在本地计算机器上执行的代理。本地计算机器执行产生多个图形命令的三维应用。远程计算机器经由远程呈现协议和本地计算机器通信。该代理拦截多个图形命令。该代理使用第一编码译码器来编码多个图形命令的第一部分。该代理使用第二编码译码器来编码多个图形命令的第二部分。该代理建立包括多个图形命令的第一部分和第二部分的帧。该代理压缩该帧。该代理将该帧传输到远程计算机器。
在最广义的方式中从另一种角度考虑,本申请描述用于渲染三维图形数据的方法和系统。远程提供三维图形的图形命令可能耗费很多本地计算机器的中央处理单元和网络资源。类似地,远程提供三维图形的位图对本地计算机器的中央处理单元和网络资源的耗费也很大。本发明描述用于基于事务或者基于应用在本地或远程渲染三维应用的方法和系统。本发明执行的混合渲染方案通过将渲染请求分布在本地和远程计算机器上可以减轻远程提供命令和位图给系统带来的压力。
在一个方面中,一种用于渲染三维图形数据的方法包括拦截三维图形流,该三维图形流包括在第一计算机器上执行的应用所产生的三维图形命令。该方法包括分析远程提供系统的特征来确定用于渲染根据三维图形命令的三维数据的位置,该远程提供系统至少包括具有图形渲染部件的第一计算机器、具有图形渲染部件的第二计算机器和网络。该方法包括基于远程提供系统分析来确定渲染位置。该方法包括致使该应用重新初始化用以确定在何处渲染三维数据的上下文。该方法包括响应于该致使操作,在渲染位置渲染根据三维图形命令的三维数据。
在一个实施例中,该方法包括通过将和装置相关联的装置状态报告给应用来致使上下文被重新初始化。在另一个实施例中,该方法包括报告指示该装置移除的装置状态。仍在另一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。甚至仍在另一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。在又一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。
在一个实施例中,该方法包括拦截包括三维图形命令和渲染的图形的三维图形流。在另一个实施例中,该方法包括确定用于渲染三维数据的渲染位置是第一计算机器。仍在另一个实施例中,该方法包括致使应用来重新初始化上下文,以指定第一计算机器为渲染位置;在第一计算机器上渲染三维数据;并且将渲染的三维数据传输到第二计算机器。在又一个实施例中,该方法包括确定用于渲染三维数据的渲染位置是第二计算机器。
在一个实施例中,该方法包括致使该应用来重新初始化上下文,以指定第二计算机器作为渲染位置;将三维图形流传输到第二计算机器;并且在第二计算机器上渲染三维数据。在另一个实施例中,该方法包括确定在第一计算机器上渲染三维数据的第一部分;致使应用来重新初始化该上下文,以指定第一计算机器为用于三维数据的第一部分的渲染位置;在第一计算机器上渲染三维数据的第一部分;并且在第一计算机器上保存渲染的三维数据的第一部分作为共享的资源。仍在另一个实施例中,该方法包括拦截包括三维图形命令和共享资源的三维图形流;确定在第二计算机器上渲染三维数据;致使该应用来重新初始化该上下文,以指定第二计算机器作为渲染位置;将三维图形流传输到第二计算机器;并且在第二计算机器上渲染根据三维图形命令的三维数据。
在另一个方面中,一种用于渲染三维图形数据的系统包括第一计算机器、第二计算机器、远程提供系统和渲染代理。第一计算机器执行产生三维图形命令的应用。第一计算机器具有图形渲染部件。经由网络和第一计算机器相通信的第二计算机器具有图形渲染部件。远程提供系统包括第一计算机器、第二计算机器和网络。渲染代理在第一计算机器上执行,并且拦截包括三维图形命令的三维图形流。渲染代理分析远程提供系统的特征,以确定用于渲染根据三维图形命令的三维数据的位置。渲染代理基于远程提供系统分析来确定渲染位置。渲染代理致使该应用来重新初始化用来确定在何处渲染三维数据的上下文。在一个实施例中,渲染代理包括用于通过将和装置相关联的装置状态报告给应用来致使上下文被重新初始化的设备。在另一个实施例中,渲染代理包括用于报告指示装置移除的装置状态的设备。
在另一个广义解释中,本申请描述用于计算载入三维资源中的三维数据集的哈希值的方法和系统,其中三维数据集具有可变大小。在大部分应用中,很少考虑应用是否适当使用图形处理单元资源。例如,许多应用在每一帧产生期间将资源直接载入驱动器中。这些帧的许多个由应用中的循环图形引擎合成产生,从而相连的帧或者仅间隔几个帧的帧的图形内容存在不少冗余。本发明描述用于通过有利地使用将资源载入三维资源的事务性质来计算事务期间所产生的数据的哈希值,以减轻这样的冗余。通过基于事务期间所建立的数据集来进行高速缓冲存储,而不是基于字节流,可以在压缩前除去重复事务造成的重复数据。结果是,有效压缩载入资源的不重复的三维数据。
在一个方面中,描述用于计算载入三维资源的三维数据集的哈希值的方法,该三维数据集具有可变大小。首先确定在分布计算环境中执行的应用是否锁定三维资源。随后识别由应用载入三维资源的第一三维数据集,第一三维数据集的大小部分由应用执行的事务确定。该方法还包括检测应用对三维资源执行了操作,计算三维数据的载入的第一集的第一哈希值,第一哈希值使用哈希函数计算,并且在数据仓库中保存第一哈希值。
在一个实施例中,该方法还包括响应于检测应用执行了操作来消除第一三维数据集的部分,该三维数据集的部分是重复事务造成的。
其他实施例包括确定应用锁定应用所使用的三维资源。其它实施例包括使用adler-32哈希函数来计算哈希函数。
在一个实施例中,三维资源是顶点、索引、阴影、纹理和表面的其中一个。其它实施例包括识别第一三维数据集还包括识别大小部分由应用执行的事务确定的第一三维数据集,该事务包括至少将三维数据复制到三维资源中。在这样的实施例中,事务还包括包含至少将三维资源解锁的结束事件。其他实施例包括识别第二三维数据集还包括识别大小部分由应用所执行的事务确定的第二三维数据集,该事务包括至少将三维数据复制到三维资源中。在这样的实施例中,事务还包括包含至少将三维资源解锁的结束事件。
在另一个实施例中,第一三维数据集的大小部分通过应用执行的事务确定,该大小部分表示从开始事件延展到结束事件的时间段。在一个实施例中,开始事件还包括锁定三维资源。在一个实施例中,结束事件还包括解锁三维资源。
在一个实施例中,第一哈希是高速缓冲存储器。
其他实施例包括的方法还包括识别应用载入到三维资源的第二三维数据集,该第二三维数据集的大小不同于第一三维数据集的大小。该方法还包括检测应用对三维资源执行了操作,计算三维数据的所载入的第二集的第二哈希值,第二哈希值使用哈希函数计算,并且将第二哈希值保存在数据仓库中。在另一个实施例中,第二哈希是高速缓冲存储器。另一个实施例包括的方法还包括识别第二三维数据集还包括识别大小部分通过应用执行的事务确定的第二三维数据集,该大小部分表示从开始事件延展到结束事件的时间段。在一些实施例中,开始事件包括锁定三维资源,而在一些实施例中,结束事件可以包括解锁三维资源。
在又一个广义解释中,本发明描述用于检测包括三维图形和三维图形图元的帧中的污渍区域的方法和系统。在许多情况中,一旦通过翻转后台缓存的内容显示经渲染并且保存在后台缓存的位图从而前台缓存可以访问渲染的图像并且将其显示在屏幕上,将特定的三维图形从本地计算机器传输到远程计算机器。为了远程提供三维图形,要等到把渲染的三维图形显示在屏幕上,随后将新的位图传输到远程计算机器。这可以是需要大量带宽的资源密集型进程。本发明描述可以在将渲染的三维图形翻转到前台缓存以在屏幕上显示之前对其进行检查的方法和系统。在把渲染的图像翻转到前台缓存之前对其检查使得可以确定改变了位图的哪个部分。这还允许提取所改变的或者污渍区域,使得仅把那些区域传输到远程计算机器。仅传输部分经渲染的三维图形降低了在网络上传输图形所需的带宽量。
在一个方面中,一个实施例描述了用于检测包括三维图形和三维图形图元的帧中的污渍区域的方法。本地计算机器上执行的代理拦截产生三维图形的应用所发出的函数调用。该代理还响应于拦截该函数调用来识别包括应用所产生的三维图形命令的帧中的至少一个位置,该位置对应于绘制区域。该代理还确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变。该代理还提取三维图形命令的所改变的部分。
在一个实施例中,该函数调用包括对设置绘制区域的调用,其中在一些实施例中绘制区域是显示装置上的绘制区域。
其他实施例包括将三维图形数据渲染到缓存器的方法。在一些实施例中,函数调用可以包括对缓存器的显示内容的调用。
在另一个实施例中,帧包括三维图形库,而在其它实施例中,该至少一个位置还包括识别至少一个视图区。
一些实施例包括还用于识别帧中的多个位置的代理,每个位置包含应用所产生的三维图形命令,该多个位置对应绘制区域。识别多个位置之后,代理确定和帧中的多个位置相关联的三维图形命令的部分发生了改变。代理还从多个绘制区域提取三维图形命令的改变的部分,并且将改变的部分传输到和本地计算机器通信的远程计算机器。
在又一个实施例中,该方法还包括将改变的部分传输到和本地计算机器通信的远程计算机器。
其它方面描述用于检测包括三维图形和三维图形图元的帧中的污渍区域的系统,该系统包括执行产生三维图形的应用并且发出至少一个函数调用的本地计算机器。该系统还包括本地计算机器上执行的代理,用来:拦截所发出的至少一个函数调用;响应于拦截该函数调用,识别包括应用所产生的三维图形命令的帧中的至少一个位置,该位置对应于绘制区域;确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变;并且提取三维图形命令的所改变的部分。
其它方面描述具有可由处理器执行以检测包括三维图形和三维图形图元的帧中的污渍区域的计算机可读介质。该计算机可读媒介还包括由本地计算机器上执行的代理拦截产生三维图形的应用所发出的函数调用的指令。还包括由该代理响应于拦截该函数调用来识别包括应用所产生的三维图形命令的帧中的至少一个位置的指令,该位置对应于绘制区域。该计算机可读介质还包括确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变的指令;和提取三维图形命令的所改变的部分的指令。
在叉一广义解释中,本发明描述用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的方法和系统。在一些情况中,远程提供二维或者三维应用要求以标准速度渲染从应用接收的所有帧,随后将所渲染的帧传输给远程计算机器。利用该过程的系统和方法会发现安装在远程计算机器和本地计算机器之间的网络不足以用和渲染数据相同的速度来传输数据。本发明描述可以阻止三维图形的渲染直到远程计算机器接收到了之前的帧的方法和系统。因此,一旦之前的帧已经由远程计算装置接收,本地计算装置才渲染这些帧。
在一个方面,此处描述用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的方法的实施例。该方法可以包括由本地计算机器上执行的代理拦截对绘制库的第一调用,该第一调用由请求来自绘制库的信息的应用所产生。代理随后将该应用产生的第一帧传输到远程计算机器,并且当没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用。一旦代理接收到远程计算机器产生的并且指示第一帧被渲染的通知,代理允许将第一应用返回到请求的应用。
在一个实施例中,第一调用是请求将当前显示的图像和来自第一帧的渲染的图像相交换的当前调用。其他实施例包括阻止第一调用返回一段预定时间。在一些实施例中,该第一帧包括应用所产生的三维图形命令。
其他实施例包括的绘制库是DirectX库,而其他实施例包括的绘制库是OpenGL库。
一些实施例包括接收在本地计算机器用来和远程计算机器通信的网络上不能传输其它数据的通知,并且基于该信息确定网络繁忙。
其他实施例包括的方法还包括由代理传输应用所产生的第二帧。该代理接收指示第二帧被渲染的通知,并且拦截从绘制库请求信息的应用所产生的第二调用。然后,代理识别第二帧被渲染的指示器,并且允许第二调用返回请求的应用。
在其他方面中,一种用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的系统。该系统可以包括本地计算机器,该本地计算机器执行产生第一帧的应用,并且产生对绘制库的第一调用来从绘制库请求信息。还包括本地计算机器上执行的代理,进行如下操作:拦截对绘制库的第一调用;将第一帧传输到远程计算机器;当没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用;接收远程计算机器产生的指示第一帧被渲染的通知;并且允许将第一调用返回到请求的应用。
其他方面包括具有可由处理器执行以在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的指令的计算机可读介质。该计算机可读介质包括通过本地计算机器上执行的代理拦截对绘制库的第一调用的指令,该第一调用由请求来自绘制库的信息的应用所产生,和由代理将该应用产生的第一帧传输到远程计算机器的指令。还包括在没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用的指令;由代理接收到远程计算机器产生的并且指示第一帧被渲染的通知的指令;和由代理允许将第一应用返回到请求的应用的指令。
附图说明
以下附图描述本发明的某些示例性实施例,包括用于远程提供三维图形的方法和系统,用于合成渲染这样的图形,基于使用哈希值的高速缓存来压缩三维图形、检测三维绘制区域中的污渍区域和通过在远程呈现三维图形期间延迟渲染三维数据来改进资源利用的方法和系统,其中相同的附图标记指相同的元件。所描述的每个实施例仅用于示例而不是用于限制这些方法和系统。
图1A是示出具有和服务器通信的客户机的远程访问网络化环境的实施例的框图;
图1B和1C是示出用于实现此处描述的方法和系统的计算机器的实施例的框图;
图2是示出用于远程提供三维图形的系统的实施例的框图;
图3是示出用于远程提供三维图形的系统的实施例的框图;
图4是示出用于远程提供三维图形的方法的实施例的流程图;
图5A-5B是示出用于远程提供三维图形到客户机的方法的实施例的流程图;
图6A-6B是示出用于渲染三维图形数据的方法的实施例的流程图;
图7是示出用于计算三维图形数据的哈希值的方法的实施例的流程图;
图8A-8B是三维图形改变时显示三维图形和视图区(viewport)集的实施例的屏幕的框图;
图9是用于检测输出三维图形命令的应用所产生的污渍区域的方法的实施例的流程图;
图10是用于改进资源利用的实施例的流程图。
具体实施方式
图1A示出包括和服务器106A-106N通信的一个或者多个客户机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的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。
在一个实施例中,客户机102可以是由如XenSolutions、Citrix Systems、IBM、VMware制造的虚拟机器102C或者可以执行此处所描述方法和系统的任一其他虚拟机器。
在一些实施例中,计算环境101可以包括多于一个的服务器106A-106N,其中该服务器106A-106N是:集合在一起作为单个服务器106实体、逻辑上集合在服务器群组106中;地理上分散开并且逻辑上集合在服务器群组106中,互相位置相邻并且逻辑上集合在服务器群组106中。在一些实施例中,服务器群组106中的地理上分散的服务器106A-106N可以使用WAN、MAN或者LAN通信,其中不同的地理区域可以是:不同的洲、洲的不同区域、不同国家、不同州、不同城市、不同校园、不同房间或者前述地理位置的任一组合。在一些实施例中,服务器群组106可以被管理为单一的实体,或者在其它实施例中,可以包括多个服务器群组106。计算环境101可以包括集合在单个服务器群组106中的多于一个的服务器106A-106N,其中服务器群组106是异类的,使得一个服务器106A-106N被配置为根据第一类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作;多于一个的服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)来进行操作,而另一个服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作;或者多于一个的服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)来进行操作,而多于一个的其它服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作。
在一些实施例中,计算环境101可以包括配置为提供以下服务器类型的任一功能性的服务器106或者多于一个的服务器106:文件服务器,应用服务器,web服务器,代理服务器,设备,网络设备,网关,应用网关,网关服务器,虚拟服务器,配置服务器,SSL VPN服务器,防火墙,web服务器,应用服务器或者作为主应用服务器,配置用作活动目录的服务器106,配置用作提供防火墙功能性、应用功能性或者负载平衡功能性的应用加速应用的服务器106,或者配置用作服务器106的其它类型的计算机器。在一些实施例中,服务器106可以包括远程验证拨入用户服务,使得服务器106是RADIUS服务器。服务器106包括设备的计算环境101的实施例中,服务器106可以是以下制造商的任一制造的设备:CitrixApplication Networking Group;Silver Peak Systems公司;RiverbedTechnology公司;F5 Networks公司;或Juniper Networks公司。一些实施例包括具有以下功能性的服务器106:从客户机器102接收请求的第一服务器106A,将该请求转发给第二服务器106B,并且使用来自第二服务器106B的响应来响应客户机器产生的请求;获取客户机器102可用应用的祥表和与寄载由应用祥表所识别的应用的服务器106相关的地址信息;使用web界面提供对客户请求的响应,直接和客户机102通信来为客户机102提供对所识别应用的访问;接收由执行服务器106上所识别的应用而产生的输出数据,诸如显示数据。
服务器106可以被配置为执行以下应用的任一个:提供瘦客户机计算的应用或远程呈现表示应用;Citrix Systems公司的Citrix访问套件的任一部分,例如MetaFrame或Citrix呈现服务器;由微软公司出品的微软Windows终端服务;或者Citrix Systems公司开发的ICA客户机。另一个实施例包括被配置为执行应用使得服务器可以用作应用服务器的服务器106,该应用服务器如以下应用服务器类型中的任一个:提供诸如微软公司出品的微软Exchange的电子邮件服务的电子邮件服务器,web或Internet服务器,桌面共享服务器,或协作服务器。其它的实施例包括执行由服务器应用寄载的下列类型中的任一种应用的服务器106:Citrix Online部门提供的GoToMeetingTM,由位于Santa Clara,California的WebEx公司提供的WebExTM,或由微软公司提供的微软Office Live Meeting。
在一个实施例中,服务器106可以是虚拟机106B,如由Citrix Systems、IBM、VMware制造的虚拟机或者可以执行此处所述方法和系统的任一其他虚拟机。
在一些实施例中,客户机器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之间的网络106是通过其在客户机器102和服务器106之间传送数据的连接。尽管图1A示出将客户机器102连接到服务器106的网络104,但是其他实施例包括将客户机器102和服务器106安装在同一网络上的计算环境101。其他实施例可以包括具有能够是以下任一个的网络的计算环境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、GPRS UMTS,或者能够在移动装置间传输数据来实现此处描述的方法和系统的任意其他协议。
图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公司出品的产品;由位于Santa Clara,California的Transmeta公司出品的产品;由如国际商业机器公司出品的RS/6000处理器;或者由如Advanced MicroDevices公司出品的处理器;或者是能够执行此处所述的系统和方法的任一其它逻辑电路组合。中央处理单元122的其他实施例包括以下的任一组合:微处理器、微控制器、具有一个处理核的中央处理单元、具有两个处理核的中央处理单元,或者具有多于一个处理核的中央处理单元。
计算机器100的一个实施例包括通过也称为背端总线的次级总线与高速缓存存储器140通信的中央处理单元121,而计算机器100的另一个实施例包括经由系统总线150和高速缓冲存储器通信的中央处理单元121。在一些实施例中,中央处理单元还可以使用本地系统总线150与多个类型的I/O装置130A-130N进行通信。在一些实施例中,本地系统总线150可以是以下类型总线的任一个:VESA VL总线、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(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(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还可以包括存储装置,其可以是一个或多个硬盘驱动器,或一个或多个独立磁盘的冗余阵列;其中存储装置被配置用于保存操作系统、软件、程序应用、或者客户机代理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、IEEE 802.11、IEEE 802.11a、IEEE 802.11b、IEEE 802.11g、CDMA、GSM、WiMax和直接异步连接)建立连接。计算装置100的一种形式包括可以经由任一类型和/或形式的网关或者隧道协议和其他计算装置100’通信的网络接口118,这些网关或者隧道协议诸如安全套接层(SSL)或者传输层安全(TLS)、或者Citrix System公司出品的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)接口,诸如Twintech Industry公司出品的USB闪速驱动系列。I/O装置130的其他实施例可以是系统总线150和外部通信总线之间的网桥,外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、千兆以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
在一些实施例中,计算装置100可以连接到多个显示装置124A-124N,在其他实施例中,计算装置100可以连接到单个显示装置124,在其他实施例中,计算装置100可以连接到相同显示类型或形式的显示装置124A-124N,或者不同显示类型或者形式的显示装置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的实施例能够运行以下任一操作系统:例如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的微软Windows操作系统的版本、不同版本的Unix和Linux操作系统、苹果计算机出品的任意版本的MACOS、国际商业机器公司出品的OS/2、任意的嵌入式操作系统、任意的实时操作系统、任意的开源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者能够运行在计算装置上并执行此处所描述的操作的任意其它操作系统。计算机器100的一个实施例在其上安装多个操作系统。
计算装置100可以用以下计算装置的任一个来实现:计算工作站、台式计算机、膝上型或笔记本计算机、服务器、便携式计算机、移动电话、便携电信装置、媒体播放装置、游戏系统、移动计算装置、苹果计算机公司出品的IPOD系列装置中的一个、Sony公司出品的PLAYSTATION系列装置中的任一个、Nintendo公司出品的NINTENDO系列装置中的任一个,或者微软公司出品的XBOX系列装置中的任一个,或者能够通信并具有执行此处所描述的方法和系统的足够的处理器能力和存储容量的其它类型和/或形式的计算、电信或媒体装置。在其它实施例中,计算装置100可以如以下移动装置中任一种的移动装置:支持JAVA的蜂窝电话或者个人数字助理(PDA),诸如Motorola公司出品的i55sr、i58sr、i85s、i88s、i90c、i95cl或者im1100,Kyocera出品的6035或者7135,或者Samsung电子公司出品的i300或者i330,由Palm公司出品的TRE0180、270、600、650、680、700p、700w或者750智能电话,具有与之一致的不同的处理器、操作系统和输入装置的计算装置,或者可以执行此处描述的方法和系统的任意其它移动计算装置。计算环境101的其他实施例包括可以是以下任一个的移动计算装置100:Research In Motion Limited出品的黑莓或者其它手持装置任一系列,苹果计算机出品的iPhone,任一手持或者智能电话,Pocket PC,PocketPC Phone,或者支持Microsoft Windows Mobile Software(微软视窗移动软件)的任一其它手持移动装置。
参考图2,示出并且描述用于在远程计算机器202处显示图形和其他应用输出的系统的一个实施例。如图所示,该系统包括和一个或者多个本地计算机器204通信的远程计算机器202。远程计算机器202和本地计算机器204可以是计算机器102的实施例。在一些实施例中,可以将远程计算机器202称为客户装置并且将本地计算机器204称为服务器。系统还包括和一个或者多个计算装置相连接的一个或者多个GPU 216、216’或者GPU设备。本地计算装置204经由设备206和远程计算机器202相通信。设备206可以是代理、网关、中间设备或者任一网络节点。在一些实施例中,设备206可以是GPU设备或者可以包括GPU设备。
响应于在本地计算机器204上执行一个或者多个应用208,本地计算机器204提供应用输出给远程计算机器202。本地计算机器204还可以提供用于在远程计算机器202渲染的桌面数据。应用/桌面数据可以包括用于在远程计算机器202处理和/或渲染的图像数据和/或窗口数据。在这样的实施例中,应用/桌面递送系统210将应用/桌面数据发送给远程计算机器202。响应于远程计算机器202的渲染过程,应用/桌面数据经由远程应用呈现窗212显示在远程计算机器202上。在一些实施例中,本地计算机器204不执行应用208,而是将应用208流式传输到远程计算机器202进行本地执行。
远程计算机器202和本地计算装置204的每一个可以包括主处理器121、121’,图形处理单元(GPU)216、216’,存储器元件122、122’,和三维图形库220、220’。主处理器121、121’可以是上述结合图1B和1C描述的CPU或者主处理器101的任一实施例。在一些实施例中,GPU可以是专用于处理图形命令的硬件部件,而在其他实施例中,GPU可以是能够处理图形命令的可执行命令集或者可执行程序。存储器元件122可以是上述结合图1B和1C描述的主存储器122的任一实施例。三维图形库220、220’可以是和Direct3D、OPEN GL或者其他三维图形应用程序接口(API)相关联的库。尽管这些元件的每一个可以在远程计算机器202和本地计算机器204之间提供相同或者大体相同的功能性,但是还可以提供冗余和灵活性来允许渲染位于远程计算机器202和本地计算机器204之间的位置。
远程计算机器202包括提供用于确定在何处渲染图形数据的特定功能性的客户机代理214。本地计算机器204还可以包括用于为本地计算机器204、设备206以及网络提供大体相同的功能性的服务器代理(未示出)。在其他实施例中,驻留在系统中某处的单个“图形确定代理”提供以下描述的功能性。确定在何处渲染图形信息所考虑的因素,包括但不限于:所使用的图形图元的类型(例如OPEN GL、DirectX、Direct 3D、3DNOW、GDI、MILCORE以及其它);远程计算机器202、本地计算机器204、设备206和GPU设备的GPU性能;网络的类型、状态和递送速度;所执行的应用类型(例如,CATIA、AUTOCAD、WINDOWS MEDIA PLAYER(媒体播放器));和所使用的远程访问会话的类型(例如,终端服务、Citrix呈现服务器、Citrix桌面服务器、应用流等等)。
在多个实施例中,渲染位置的选择可以随时间而改变,也就是说渲染位置的选择本质上是动态的。该选择和该选择的确定可以基于实时、逐个会话、逐个用户或者根据任一其它机制做出。例如,系统配置的初始扫描可以确定使用远程计算机器202的GPU216’来渲染图形。之后,条件可以改变并且因此,在本地计算机器204和/或GPU设备250渲染图形可以提供更好的终端用户体验。然而,会话部分可以使用不同方法进行渲染。例如,桌面或者应用图像数据的部分可以使用本地计算机器204的渲染过程来渲染,而其他部分可以使用“客户机侧”渲染来渲染。此外,渲染位置的选择可以根据特定图形操作来产生(例如,矢量绘制、纹理映射以及类似其它)。渲染位置可以基于图形操作的类型而改变。对于不同的操作,可以同时使用不同的渲染选项。例如,自转球体可以在远程计算机器202上渲染,而背景静态图形可以在本地计算机器204上渲染。同样,可以基于图形操作的模式(例如,如果顺序绘制很多小的阴影对象)而进行选择。
在一些实施例中,哪个本地计算机器运行桌面或者应用的选择可以基于哪种类型的图形渲染最有效来进行。“负载平衡”选择可以基于图形渲染策略评价。例如,如果远程计算机器202不包括具有处理图像数据的能力的GPU216’,而应用却需要它,则选择具有可用的和适合GPU 216的本地计算机器204。
在一个实施例中,可以评价网络带宽等待时间、远程计算机器性能、应用208的应用类型、过往历史和任一其它图形性能策略。如果在本地计算机器204处执行渲染被确定为是最有效或者最适合的,则选择能够执行这样的渲染的本地计算机器204。其它负载平衡策略同样可以影响本地计算机器选择(例如,用户、位置、日期、时间、应用许可、CPU、磁盘使用、存储器等等)。更大强度的图形利用可以发送到相比于其它本地计算机器具有更好性能的GPU或者具有更多GPU的计算机器。在共享服务器和GPU的情况中,可以考虑可用GPU上的负载。
在Windows Vista中,DirectX应用发送图形给Direct3D图形运行时模块,其与用户模式驱动器和图形内核协作用来在可用硬件上渲染DirectX图形命令。当DirectX应用在终端服务中执行时,DirectX应用的执行和增强图形的产生会变差。性能可能变差的一个原因是该应用在终端服务中执行时不能再访问诸如图形处理单元(GPU)的图形渲染硬件。因此,DirectX应用依赖于Direct 3D运行时和内核中执行的软件来将DirectX图形命令渲染成图形数据。因而,不能访问图形渲染硬件会降低DirectX应用的性能。类似的情况还出现在使用OPEN GL或者其它三维API来代替Direct3D的同一或者另一个操作系统中。
图3所示是减轻如上所述和在终端服务中执行DirectX应用相关的可能问题的系统的实施例。该系统包括客户端侧或者终端侧421部件和服务器侧420部件。该系统中包括和三维运行时模块404’通信的三维渲染应用414。包括和三维图形运行时模块404通信的三维代理406。
进一步参考图3并且更详细地,在一些实施例中,描述允许在终端服务中执行的诸如DirectX应用的图形应用使用服务器上的图形硬件,而不是在三维图形运行时模块404中执行的软件。这样的系统主要用于使用Di rectX和窗口呈现基础应用。在一些这样的实施例中,三维渲染应用414可以是Direct3D渲染应用,三维运行时模块404、404’可以是Direct3D运行时模块,并且三维代理406可以是Direct3D代理。系统任一部件可以是和Direct3D、OPEN GL或者其他三维图形API相关联的部件。
三维渲染应用414将命令传输给三维运行时模块404’。三维渲染应用414通过接收从三维代理406转发的命令来作为会话中应用的代理。操作中,当应用试图驱动三维系统来渲染场景时,三维代理406将其图形命令重新发送到三维图形渲染应用414,其随之将这些命令发送给其三维图形运行时间模块404’,当三维图形运行时模块404’是请求的应用。此外,该三维代理406允许应用如在和会话或者服务器空间中和三维图形运行时模块404通信时通常所进行的操作一样进行操作。
在一个实施例中,三维代理406拦截三维图形调用(例如,Direct3D调用)并且将它们发送到在控制台或者客户机会话中运行的三维渲染应用414。另外,三维代理406开始其自身和三维图形管理器412之间的通信。在一些实施例中,三维图形代理406经由图像传送服务410开始其自身与三维图形管理器412之间的通信。响应于该开始通信,三维图形管理器412建立三维图形渲染应用服务。在一些实施例中,三维图形代理406钩住或者拦截实时运行时调用,但是仅以应该由显示驱动器408处理的图形调用为目标。
在一个实施例中,三维图形管理器412建立三维渲染应用414并且建立三维渲染应用414和请求服务器硬件支持的三维图形代理406之间的通信路径。
总之,以上参考图3描述的体系结构的实施例提供在终端服务会话对服务器420(例如,GPU或者GPU设备)的图形硬件的访问。结果是,将位图化的图形远程传输到远程计算机器或者客户机421的过程可以比用软件渲染位图有所改进。
在另一个实施例中,应用502可以提供诸如WINDOWS VISTA所提供的AERO桌面的“桌面”,并且远程计算机器421正访问本地计算机器或者服务器420上的远程桌面。在一些实施例中,客户机421的GPU用来渲染和桌面相关联的OPEN GL或者Direct3D场景。在一个方面中,从本地计算机器420到远程计算机器421的图形信息传输可以相对于其它解决方案而改进。
参考图4,附图示出概述部件和部件之间的数据流的体系结构的一个实施例。在此体系结构中,显示驱动器和应用之间的分层是薄(thin)的,从而限制开销和开发强度。
在一个实施例中,该体系结构包括应用402。该应用可以是桌面Windows管理器(DWM)模块。在一个实施例中,该应用402是作为窗口管理器的Windows呈现基础(WPF)应用。应用402可以和D3D9Ex接口相交互。应用402用于渲染窗口的非客户机部分和影响窗口的转变效应。在一个实施例中,应用402通过使用Direct3D、OPEN GL,或者其它三维图形API的系统或者应用来提供。在一些实施例中,应用402使用Direct3D来建立桌面。该应用402提供3D几何构形来在显示器上渲染桌面场景。在一些方面中,应用402驱动三维系统(例如,Direct3D系统)来渲染和桌面相关联的场景。在这样的实施例中,应用402不具有特定的功能,而是作为三维几何构形的源。
该体系结构还包括三维图形钩子模块504。在一个实施例中,三维图形钩子模块504提供通过拦截导致后台缓存和前台缓存相切换的当前调用来检测屏幕更新的功能性。一旦钩子检测到当前调用,钩子将该调用传递到一个或者多个三维图形库220、220’。钩子通过显示驱动器506收集该应用的窗口信息和来自图形卡的图像数据。钩子随后将图像数据和窗口信息提供给图像传送服务508。
在一些实施例中,三维图形钩子模块504提供如下的功能性:检测屏幕更新,钩住三维数据以检测屏幕更新,为图像传送服务508提供诸如来自图形卡的图像数据和上下文的信息的数据。同样,该三维图形钩子模块504用有限开销提供可靠的钩子环境。经由三维图形钩子模块504的图形手机过程收集通过当前调用更新的屏幕部分。
如上讨论,该体系结构包括三维图形库220、220’。在一个实施例中,三维图形库220是动态链接库(d11)。三维图形库220、220’提供如下功能性:缓存要从应用502发送到诸如显示驱动器506的硬件显示驱动器的命令和几何数据。在一些实施例中,三维图形库220、220’将三维图形调用封装到缓存器中进行大量传送。显示驱动器506可以是服务器420上现有的硬件驱动器。显示驱动器506如同传统硬件显示驱动器一样操作,并且还允许三维图形钩子模块504收集图形卡以外的图像数据。显示驱动器506还将相关的场景渲染成位图,并且将该图像递送到三维图形钩子模块504中。在一个实施例中,三维图形钩子模块504将请求发送到显示驱动器506。响应于该请求,显示驱动器506将图像数据传输到三维图形钩子模块504。
如上所述,该体系结构还包括图像传送服务模块508。该模块和三维图形钩子模块504相通信。图像传送服务模块508还可以和Winstation驱动器(未示)相通信。图像传送服务模块508包括用于将图像数据递送到客户机421的图像传输虚拟信道的功能性。在多种实施例中,图像传送服务模块508执行一个或者多个压缩方案,例如进取性压缩(aggressivecompression)。如此处所使用的,进取性压缩是指在动画例程期间降低图像质量的压缩过程,从而以图像质量为代价允许更多流量。该过程可以通过减低显示动画时的细节水平来改进帧刷新率。动画的最后帧或者每个动画部分可以被确定并且以更高质量发送。
在一些实施例中,图像传送服务模块508向三维图形钩子模块504请求图像数据,并且可以执行过度压缩、高速缓冲、和实现新的图像虚拟信道的任一组合。进一步,图像传送服务模块508可以接收窗口通知。此外,图像传送服务模块508帮助管理网络业务量,来实现最大帧速率或者符合特定服务水平的帧速率。
该体系结构还包括如上提及的Winstation驱动器模块(未示)。在一些实施例中,Winstation驱动器模块帮助实现复用到单个连接的虚拟信道。这包括对于网络业务量和信道优先排队的优化实现。
图5A中所示是用于远程提供三维图形命令给位于远程的机器的方法600的实施例。首先,由代理拦截三维图形(步骤602),并且由代理编码三维图形命令的至少一部分(步骤604)。随后,建立包括三维图形命令的所有编码部分的帧(步骤606)。压缩该帧(步骤608)并且将压缩的帧传输到远程计算机器(步骤610)。
继续参考图5A并且更详细地,在一些实施例中,通过在如下任一个上执行的代理来运行:第一计算机器;计算机;计算装置;服务器;服务器群组;分布计算系统;网络;或者任一其它计算装置实施例,或者此处描述的网络实施例。在一些这样的实施例中,代理在三维应用所执行的同一计算机器、网络或者设备上执行。而在其它实施例中,该代理是在本地机器上执行的虚拟对象,该代理还可以是函数、命令集、或者在分布计算环境中的计算机器上执行的其他计算对象。
通过在计算机器上执行的应用来产生三维图形命令,在一些实施例中,通过在该应用所执行的同一机器上执行的代理或者其他计算对象拦截这些三维图形命令(步骤602)。在一个实施例中,该代理通过钩入该应用的当前调用来拦截三维图形。通过这样操作,代理可以经由应用编程接口确定应用何时将图形命令发送到三维图形运行时模块。一旦该代理知道应用已经做出对三维图形运行时应用程序接口的调用,则代理随后拦截该调用,并且将其重定向到客户机,使得三维图形可以显示在客户机上。在一个实施例中,代理直接将所有的命令发送给客户机,而在其它实施例中,在服务器上渲染三维图形命令的一部分,并且在客户机上渲染三维图形命令的一部分。在一个实施例中,当命令发送到客户机时,该命令可以是压缩、优化、批处理、编码和从本地计算机器或者服务器通过网络到远程计算机器或者客户计算机器传输的任一组合。在这样的实施例中,传输到客户计算机器或者远程计算机器的内容是包含以下任一组合的帧:三维绘制命令;渲染状态;用来渲染或者绘制表示三维图像投影在二维平面或者绘制表面上的一部分的二维图形表示或者二维表面渲染目标所需的资源。因此,在这些实施例中,服务器或者本地计算机器将帧传输到客户计算机器或者远程计算机器,其随后将该命令映射到三维图形运行时模块,三维图形运行时模块接收该帧并且渲染根据所接收帧的三维数据。
在一个实施例中,通过代理或者与该代理通信的另一个系统对象、函数或者代理来编码三维图形命令的一部分(步骤604)。在一个实施例中,可以存在通过三维图形命令表示的多个三维结构。例如,三维图形命令可以包括如下任一个:顶点缓存器、索引缓存器、纹理和表面。顶点缓存器是包含关于和所得三维图像的特定方面相关联的顶点的信息的缓存器。在一些实施例中,顶点缓存器可以包括针对每一顶点的结构,包括以下信息:三维坐标;深度坐标;纹理映射坐标;颜色;和能够保存在顶点缓存器中的顶点的任一其它特征。索引缓存器是包括顶点缓存器中的索引另一类型的缓存器。纹理和表面表示摄影或者合成的二维光栅数据。
在一些实施例中,编码的部分三维图形命令是对应于特定结构的部分。例如,一部分可以包括所有顶点,另一部分可以包括所有索引,并且还有一部分可以包括所有纹理和表面。该例子用于表示可以建立的不同部分段,在其他实施例中,这些段可以被编号或者可以包括多个结构,诸如含有顶点和索引二者的部分。一旦识别出三维图形命令的部分,该部分则使用下列类型的编码译码器来编码:霍夫曼编码,adler-16,adler-32,CRC-16,CRC-32,Fletcher-16,Fletch-32,图像有损编码译码器,合成有损编码译码器,JPEG,HD Photo,2DRLE,PNG,HD Photo,和适合编码结构的任意其它编码。在一个实施例中,使用霍夫曼编码来对顶点和索引进行编码,而使用JPEG,HD Photo,2DRLE,PNG或者HD Photo中的一个编码纹理和表面。
在一个实施例中,一旦三维图形命令的该部分被编码,则建立包含三维图形命令的每个编码部分的帧(步骤606)。在一些实施例中,这些编码部分可以是使用此处描述的任一编码解码器编码的任一此处描述的结构。例如,三维图形命令可以包括顶点缓存器、索引缓存器和纹理的每一个。在一个实施例中,帧可以包括使用霍夫曼编码来编码的顶点、使用霍夫曼编码来编码的索引和使用合成有损编码译码器来编码的纹理。在一些实施例中,该帧包括三维绘制命令的元件;渲染状态;和用来渲染或者绘制表示三维图像投影在二维平面或者绘制表面的部分的二维图形表示或者二维表面渲染目标所需的资源。
在一些实施例中,一旦该帧建立,代理可以在传输之前压缩该帧(步骤608)。在一些实施例中,压缩器可以压缩该帧,而在其它实施例中,该帧可以在经过压缩算法之后进行压缩。其他实施例包括将传输没有压缩的帧,或者传输其中数据部分压缩、部分没压缩的帧。
本地计算机器或者服务器将压缩的帧传输到远程计算机器或者客户机(步骤610),使得渲染代理、应用或者单元可以渲染根据帧中包含的图形数据的三维数据。在一些实施例中,在渲染之前将该帧解压缩。
图5B示出用于编码如图5A中描述的方法600的步骤604中指示的图形命令部分的方法650的实施例。一旦方法600进入步骤604,就通过确定三维图形命令的何处包括顶点命令开始方法650(步骤652)。如果三维数据包括含有顶点命令的三维图形命令,则使用编码译码器来编码对应于顶点命令的三维数据的部分(步骤654)。随后,确定三维图形命令是否包含索引命令(步骤656)。如果三维数据包括含有索引命令的三维图形命令,则使用编码译码器来编码对应于索引命令的三维数据的该部分(步骤658)。随后确定三维图形命令是否包括纹理或者表面(步骤660)。如果三维数据包括含有纹理或者表面的三维图形命令,则使用编码译码器来编码对应于纹理或者表面的三维数据部分(步骤662)。
进一步参考图5B,并且更详细地,方法650是图5A中描述的方法600的子过程、子函数或者子方法。在一个实施例中,方法650解析三维图形命令来确定不同类型的命令是否包括在三维图形命令集中。将方法600重定向到图5B中描述的方法650,并且当图5B中的方法650已经完成执行时,该方法600从停止的地方继续。或者,图5B中描述的方法650可以是图5A中描述的步骤604的一部分。
图6A中示出用于确定在何处渲染三维图形数据的方法。代理或者系统对象拦截应用使用三维图形所产生的三维图形命令(步骤702)。在渲染或者传输所拦截的命令之前,分析远程系统的特征(步骤704)来确定渲染位置(步骤706)。确定渲染位置706之后,代理或者系统对象致使该应用重新初始化用于确定在何处渲染三维数据的上下文(步骤708)。一旦该应用已经将确定的渲染位置作为用于渲染的位置,则代理或者系统对象将三维图形命令传送到用于渲染的渲染位置(步骤710)。
进一步参考图6A并且更详细地,用于确定何处渲染三维数据的方法700可以由在服务器或者本地计算机器上执行的代理来运行。或者,可以通过在服务器或者本地计算机器上执行的将从应用输出的三维图形命令作为输入的命令集或者程序执行方法。其他实施例包括可以分析系统资源并且确定何处渲染三维数据的渲染管理器、渲染代理或者一些其他虚拟对象。
在一个实施例中,三维图形命令通过远程代理或者拦截三维图形命令的实体的任一其它实施例来来拦截(步骤702)。在一些实施例中,通过钩入桌面窗口管理器进行的调用,实现对图形命令的拦截。
在拦截三维图形命令之后,分析远程系统的特征(步骤704)。该远程系统可包括任一如下元件:诸如此处描述的一个或者多个客户机计算装置,诸如此处描述的一个或者多个服务器,服务器群组,诸如此处描述的一个或者多个设备,和这些部件的每一个用来通信和传输数据的网络。在一个实施例中,远程系统中所使用的网络可以是此处描述的任一网络。其他实施例包括执行应用的至少一个服务器,和访问服务器来接收表示应用输出的图形数据的至少一个客户机计算机器。在这样的实施例中,通过远程访问协议来促进客户机和服务器之间的通信。在一些实施例中,该系统的特征包括:服务器上包括的图形处理单元的类型和/或速度;在客户计算装置上包括的图形处理单元的类型和/或速度;服务器包括的中央处理单元的类型和/或速度;客户计算装置包括的中央处理单元的类型和/或速度;服务器上执行的应用;服务器上的负载;客户计算装置上的负载;网络上的负载;传输三维图形命令的可用带宽的数量;部分表示何处渲染三维数据的预定设置;渲染三维数据的服务器上的应用的数量;服务器或者客户机计算装置上缺乏图形处理单元;和可以用来确定渲染位置的任一其它特征。在一个实施例中,集合多个特征为每个渲染位置产生单个数值,这样,通过比较数值来查看哪个数值相比于其他数值是最高的,或者哪个数值相比于其它数值是最低的来选择渲染位置。其他实施例包括根据它们对系统造成的负担(tax)来衡量多个特征,并且基于耗费最少资源的远程位置来选择何处渲染。
在一些实施例中,在分析远程系统的特征期间所产生的结果用来确定渲染位置(步骤706)。在一个实施例中,远程位置可以位于服务器上或者客户机计算机器上。如果渲染位置是服务器,则服务器渲染根据三维图形命令的三维数据,并且将渲染的图形数据传输到客户机计算机器。如果渲染位置位于客户机上,则服务器将三维图形命令传输到客户机,使得客户机接收命令并且渲染根据该命令的三维数据。其他实施例包括的远程位置可以是服务器或者客户机上作为硬件部件的图形处理单元,或者是服务器或者客户机上作为软件部件的图形处理单元。如果远程系统的特征分析结果表明在软件图形处理单元上渲染数据是最好的,则远程位置可以是具有基于软件的图形处理单元的位置。
在一个实施例中,该代理通过将移除的装置状态报告给应用来使该应用重新初始化用来确定在何处渲染三维数据的上下文(步骤708)。在其他实施例中,代理可以向应用报告装置状态丢失。在一些实施例中,当通知应用装置移除时,该应用可以重新确定何处渲染数据。在一个实施例中,该代理可以通过告诉应用应该在特定位置渲染三维数据来使用该上下文的重新确定或者重新初始化,以确定何处渲染三维数据。一些实施例包括告诉应用应该在确定的渲染位置渲染三维数据。
一旦该应用被重新配置以渲染到渲染位置,则将三维图形发送到用于渲染的渲染位置。
图6B是用于在特定位置渲染三维图形命令的方法730。在一个实施例中,方法730包括确定在第一渲染位置渲染三维图形命令的一部分(步骤732),分析远程系统的特征(步骤734)并且确定第一渲染位置和重新初始化应用上下文来选择确定的第一渲染位置(步骤736)。随后,根据三维图形命令的第一部分,在渲染位置渲染第一三维数据集(步骤738)。随后,重新评价远程系统的特征(步骤740),确定第二渲染位置并且重新初始化应用上下文来将第二渲染位置识别为将要渲染数据的位置(步骤742)。一旦确定第二渲染位置,则将三维图形命令和渲染的第一三维数据集传输到第二渲染位置(步骤744)。
进一步参考图6B并且更详细地,在一个实施例中,方法730包括确定渲染三维图形命令的一部分(步骤732)。在一些实施例中,基于以下任一因素来确定该部分:图形元素的类型(即顶点、索引、纹理);图形数据的大小;事务;用于将三维图形命令分段的任一其他装置。在一个实施例中,每个事务建立一部分新的三维图形命令,因而,每当事务发生时必须做出何处渲染图形命令的确定。
在一个实施例中,渲染三维图形命令的一部分,并且所得的渲染后的图形数据保持在服务器上。在这样的实施例中,识别三维图形命令的第二部分并且做出关于在何处渲染三维图形命令的新的决定。在一个实施例中,该方法包括确定在第一渲染位置渲染三维图形的一部分(步骤732)。一些实施例可以包括遵守策略引擎,该策略引擎可以指示特定类型的图形、图形图元或者三维图像类型应该总是在特定位置渲染,而无论该特定位置在本地计算机器、远程计算机器、网络或者第三计算机器上。在其他实施例中,渲染代理可以根据大小或者其他原因来确定特定类型的图形、图形图元,或者单位图形类型应该在特定位置渲染。例如,由于特定的三维图形只可以通过本地计算机器上包括的图形处理单元来渲染,所以渲染代理可以指定在本地计算机器上渲染特定的三维图形。在这样的例子中,在本地计算机器上渲染图形,并且将渲染的图形或者位图发送到客户机器或者任一其它远程计算机器。如果三维图形包括在具有远程计算机器可以渲染的图形命令的图形方案中,渲染代理可以确定将图形包传输到远程计算机器,远程计算机包括已经通过服务器和图形命令渲染的三维图形。该远程计算机器可以随后在远程计算机器处渲染图形命令。
图7的流程图示出用于计算和高速缓冲三维数据集的哈希值的方法的实施例。计算和高速缓冲哈希值可以包括确定三维资源是否已经通过应用锁定(步骤762)。识别载入到三维资源中的第一三维数据集(步骤764)。方法760还可以包括检测该应用是否对三维资源执行了操作(步骤766)。计算载入的三维数据的哈希值(步骤768),并且将该哈希值保存在数据仓库中(步骤770)。随后,确定是否存在另外的数据集(步骤772),从而使得方法760重复或者终止。
进一步参考图7并且更详细地,方法760可以包括确定应用是否已经锁定三维资源(步骤762)。在一些实施例中,三维资源可以包括顶点、索引、阴影、纹理、表面或者任一其它类似的三维数据类型。应用在修改源中的数据或者将数据载入源时将三维资源锁定,用于阻止进程读出正在改变的资源。在一些实施例中,通过检查标志位、计数器、同步监控器、数据队列、或者允许进程确定资源已经锁定用于写入的任一其它方法,确定该应用已经锁定三维资源。在进一步实施例中,应用锁定的三维资源可以由该应用所使用,而在其它实施例中,应用可以锁定另一应用所使用的三维资源。在一些实施例中,三维资源可以是以下类型资源的任一个:用于图形处理单元的驱动器;或者结合图形处理单元或者图形处理算法、指令集或者软件使用的任一其它资源。
方法760还可以包括识别载入到三维资源中的三维数据集的步骤(步骤764)。该三维数据集可以是第一三维数据集或者第二三维数据集、第三三维数据集,或者依赖于载入到三维资源中的数据集数量的任一其它数据集。在一些实施例中,三维数据集可以具有可变大小,而在其它实施例中,三维数据集的任一个或者全部具有大体相同的大小。在一些实施例中,每个数据集的大小可以至少部分通过应用所执行的事务来确定。在一些实施例中,事务可以包括将数据复制到三维资源中。在进一步的实施例中,事务可以具有将三维资源解锁的结束事件,该结束事件因此可以间接确定数据集的大小。在其他实施例中,事务可以具有开始事件和结束事件,并且数据集大小可以通过开始事件和结束事件之间的时间大小来确定。在这样的实施例中,开始事件可以包括锁定三维资源,和/或结束事件可以包括将三维资源解锁。
在一个实施例中,方法760包括检测该应用对三维资源执行了操作(步骤766)。这可以包括通过检查或者识别标志位、计数器、同步监控器、或队列、或者允许进程确定资源已经被锁定或者解锁用于写入的任一其它方法,来检测应用已经锁定或者解锁三维资源。在一些实施例中,仅通过观察三维资源在锁定一段时间之后得到解锁,可以检测对三维资源执行了操作。在其他实施例中,可以监控该应用来确定已经执行什么操作。
在一个实施例中,方法760包括计算载入的三维数据的哈希值(步骤768)。所执行的哈希函数可以是和所使用的数据类型具有足够少冲突的任一哈希函数或者校验和算法,诸如adler-16,adler-32,CRC-16,CRC-32,Fletcher-16,Fletch-32,或者任一其它CRC或者非CRC哈希函数,或者对于哈希函数所应用的数据类型产生很少或者基本没有冲突的哈希函数,或者可以产生适用于此处描述系统和方法的结果的任一其它哈希函数。
在一个实施例中,方法760包括将该哈希值保存在数据仓库中的步骤(步骤770)。在一些实施例中,数据仓库可以是缓存器、高速缓冲存储器、数据存储器、平面文件、或者任一其它格式,并且可以用RAM、闪速存储器、硬盘或者任意其它存储介质实现。在一些实施例中,数据仓库可以保存在本地计算装置上,而在其它实施例中,数据仓库可以驻留在通过网络可访问的第二计算装置上。在进一步的实施例中,数据仓库可以使用老化(aging)算法来清除。老化算法可以是任一页面替换算法,诸如最近最少使用(LRU),最近未使用(NRU),活动替换高速缓冲(ARC),先进先出(FIFO),最小频率利用(LFU)、或者允许数据仓库有效清除(evict)项目的任一类似算法。
在一个实施例中,方法760包括确定三维资源中是否存在另外的数据集(步骤772)。如果进行这样的确定,则方法760还包括识别载入三维资源中的其他的三维数据集,检测应用对三维资源执行的其他操作,计算其它三维数据集的哈希值,并且将其它三维数据集的哈希值保存在数据仓库中。
在一个实施例中,方法760还可以包括响应于检测应用执行了操作而消除第一三维数据集的一部分。该三维数据集的该部分可以是重复事务的结果。在其他实施例中,计算机器仅保持和保存所计算的哈希值,并且通过确定丢弃哪个数据以为未命中(miss)的新数据腾出空间并且维持总的最大尺寸,来驱动远程计算机器高速缓冲存储器。可基于诸如最小频率利用算法的老化算法,确定丢弃哪个数据部分。这样的算法增加命中计数器,并且当需要用于未命中的空间时,则清除产生对带宽最小影响的具有最小计数和大小的项。其他实施例可以包括对于客户机、计算机器或者远程计算机器的永久存储磁盘的高频资源进行永久高速缓冲的高速缓存系统。从而,在这样的实施例中,应用开始或者新场景过程中初始设置时载入的纹理和表面载入得更快,使得应用比不具有高频资源的永久高速缓冲的情况更快速地重新开始。此外,由于在应用终止时可以通过客户机、计算机器或者远程计算机器高速缓冲或者保存动态数据的哈希值,所以高频动态数据的使用更为有效。
在其他实施例中,应用可以传送、移动、复制、载入或者以其他方式使得数据置于三维资源中。其他实施例包括将数据传送到中间应用的应用,该中间应用配置为载入、复制或者将数据传送到三维资源中。在这样的实施例中,中间应用可以存在于和应用相同的计算装置上、远离执行应用的计算装置的计算装置上,或者和执行应用的计算装置相通信的任一其它虚拟或者物理计算装置或者应用。
在一个实施例中,仅当应用或者代理检测到任何应用正在使用三维资源时才重复方法760,或者,在其他实施例中,在特定应用使用三维资源时才重复方法760。其他实施例包括仅当应用或者代理检测到三维资源已经将数据复制或者载入到其中,并且该三维资源已经或者正由应用所使用时,才重复方法350。在又一个实施例中,仅当确定将不同于之前高速缓存的数据载入或者复制到三维资源中时,才重复方法760。其他实施例包括仅当检测到特定的动作序列时,例如锁定三维资源、将数据载入或者复制到三维资源中,以及使用三维资源,才重复步骤760。更多的实施例包括周期性重复方法760。
图8A和8B中示出用于检测帧中绘制区域的方法的屏幕截图的实施例。帧790可以包括图8A中的第一呈现位图中的第一三维图792。在图8B中的第二呈现位图中,帧790包括第一三维图792和第二三维图794。该第二三维图794位于作为帧790的子集的区域796中。
现在参考图8A并且更详细地,帧790还可以称为场景、默认视图区、画布、图像、位图、屏幕、表面或者用于所显示三维图形的任意其它描述性词语。第一三维图792可以在帧790中。第一三维图792可以包括顶点、索引、阴影、纹理、表面、或者任一其它类似三维数据类型。在一些实施例中,第一三维图792不存在,并且帧790可以是空的。在其他实施例中,第一三维图792可以带有其他没有示出的三维图。
参考图8B并且更详细地,在一个实施例中,第二三维图794增加到帧790中。在一些实施例中,可以同时增加没有示出的多个三维图。在其他实施例中,第二三维图794可以已经出现在之前呈现的帧790中,并且可以被移除。在其他实施例中,可以移除、增加或者修改包括第二三维图794、第一三维图792和没有示出的其它三维图的多个图。
在一个实施例中,第二三维图794包含在帧790的子区域796中。在所示例子中,区域796之外的帧790的部分不从图8A中之前呈现的位图改变为图8B中新近呈现的位图。区域796可以称为绘制区域、视图区、画布或者画布部分,屏幕区域、帧区域、视图剪切区域、视图剪切矩形或者任一描述帧790的子部分的其它术语。在一些实施例中,可将多个三维图增加到新近呈现的位图,并且它们可以组合到多个不连续区域(未示)中。在其他实施例中,可将多个图组合到单个区域中。在一些实施例中,区域796还可以表示帧790的子部分,其中一个或多个三维图已经移除或者修改。在一些实施例中,区域796可以通过函数调用来指定,诸如微软公司开发的DIRECT3D API的SetViewPort方法,或者Silicon图形有限公司开发的开放图形库(OPENGL)的glViewport方法,或者可以限定渲染目标的帧790的区域或者子区域的任何类似方法或函数调用。
图9中示出一种用于检测帧中的污渍区域的方法800。检测污渍区域可以包括拦截三维应用所产生的函数调用(步骤802)。所拦截的函数调用至少可部分用来识别帧中的绘制区域(步骤804)。可以确定与所识别的绘制区域相关的图形命令的至少一部分发生改变(步骤806)。随后提取所识别绘制区域中图形命令的所改变的部分(步骤808)。
进一步参考图9并且更详细地,方法800可以包括拦截三维应用所产生的函数调用(步骤802)。拦截函数调用还可以称为钩住、监控、侦听、捕获或者描述接收第一和第二过程之间通信副本的第三过程的任一其它术语。在一些实施例中,经由本地机器上执行的代理执行拦截。在其他实施例中,通过子例程、函数、后台程序、服务、或者有能力拦截三维应用和三维渲染引擎之间通信的应用执行该拦截,三维渲染引擎可以包括用于处理三维图形命令的硬件或者软件。在一些实施例中,所拦截的函数调用可以是使得后台缓存的内容呈现在显示装置的函数调用。在这些实施例中,函数调用可以指示绘制或者渲染已经完成并且在呈现之前不对内容进行更多改变。在一些实施例中,拦截函数调用还可以包括拦截表示特定绘制区域的调用,诸如上述DIRECT3D API的SetViewPort方法。在这样的实施例中,函数调用可以具有数据串、变量或者指示渲染目标的矩形或者其他区域的其他标识符。区域的标识可以指示三维图形和图形图元的修改即将在区域内产生,此处称为污渍区域。
在一个实施例中,所拦截的函数调用来识别标识的绘制区域(步骤804)。在一些实施例中,通过用于拦截函数调用的同一代理、函数或者服务来执行该识别,并且可以通过解析或者分析对帧中区域标识的所拦截的函数调用来执行该识别。在一些实施例中,函数调用可以包括指示区域角落的值以及指示区域宽度和高度的其它值。可以提取这些值来确定区域的位置和大小。在其他实施例中,函数调用可以包括用来确定区域的位置、大小和形状的值。在其他实施例中,函数调用可以不包括指示区域的值,但可以包括指示区域的其他函数调用。在一些实施例中,还可以确定指示的区域是否处于即将呈现给显示装置的后台缓存中。在这样的实施例中并且响应于该确定,如果该区域不包括在后台缓存中,则将其从所识别的污渍区域排除。例如,通过函数调用指定的区域可以用作纹理和表面的渲染目标,纹理和表面用来渲染后台缓存,但其本身不是后台缓存的部分。在这样的情况中,可以从识别的污渍区域排除该区域,使得识别的污渍区域仅直接应用到后台缓存,而不是间接应用。
在一个实施例中,确定从之前拦截的函数调用起在与污渍区域相关的图形命令的至少一部分中发生了改变(步骤806)。在一些实施例中,通过解析或者分析三维图形命令的所识别的污渍区域的内容做出该确定。在其他实施例中,可以仅响应于在函数调用中识别了区域来做出该确定,函数调用如上述SetViewPort方法,或者用于指定绘制或者渲染改变的帧区域的任一类似函数调用。
在一个实施例中,提取污渍区域中所改变的三维图形命令(步骤808)。在一些实施例中,这可以是整个帧中的图形命令的子集,其中一些在之前拦截的函数调用后没有发生改变。在其他实施例中,整个帧可以改变,而在其它实施例中,帧中未发生改变。
图10中示出用于延迟后台缓存表面呈现以在一些情况下改进资源利用的方法900的一个实施例。在方法900中,代理拦截对绘制库的第一调用(步骤902)。然后,将第一帧传输到远程计算机器(步骤904)并且确定远程计算机器是否已渲染第一帧(步骤906)。然后,延迟响应于第一调用传输返回信息(步骤908),直到接收到第一帧已被传输或者渲染的通知(步骤910)。接收到该通知时,授权允许将第一调用返回给请求的应用(步骤912)。
进一步参考图10并且更详细地,在一个实施例中,方法900的所有步骤可以通过计算机器上执行的代理来执行。其他实施例包括在以下任一上执行的代理:本地计算机器、远程计算机器、第三计算机器、分布计算系统中、网络上、设备上,或者可以执行代理的任一机器。其他实施例包括在分布计算环境或者系统中执行方法900,其中分布计算环境可以包括客户机计算装置、服务器、设备、三维应用或者网络的任一组合。在一个实施例中,方法900可以在包括本地计算装置的分布计算环境中执行,该本地计算装置执行代理和应用,其中本地计算装置和在分布计算环境中的远程计算装置相通信并且连接。其他实施例包括可以执行代理的任意计算机器上的绘制库,其中绘制库可以是任一上述三维图形库,诸如DirectX或者OPEN GL库。
在一个实施例中,在本地计算机器执行上的代理拦截对绘制库的第一调用,以进一步请求来自绘制库的信息(步骤902)。在一些实施例中,第一调用是通过计算机器上执行的调用产生的,或者,在其他实施例中,第一调用是由本地计算机器或服务器上执行的应用产生的。一些实施例包括的第一调用是请求将当前显示的图像和要从第一帧渲染的图像相交换的第一当前调用。在此实施例中,钩子可以安装在绘制库中用来阻止调用返回到请求的调用。这样做用来控制在本地计算机器上渲染多少帧以及何时渲染这两个问题中的人一个。在此实施例中,当应用请求来自绘制库的图形数据或者信息或者图形图元时,绘制库可以返回渲染的图像。因此,返回调用是可以包括渲染图像的绘制库所产生的返回消息。
其他实施例包括代理将第一帧传输到远程计算机器(步骤904)的方法900。有这样的实施例,其中代理传输多个帧而不是一个帧。在一个实施例中,拦截第一调用的代理基本上和传输第一帧到远程计算机器或者装置的代理相同,而在其它实施例中,拦截第一调用的代理和传输第一帧的代理基本不同。在一些实施例中,第一帧可以包括三维图形命令、渲染的图形、渲染的三维图像、图形图元、和图形库的任一组合。
在一个实施例中,代理确定远程计算机器尚未渲染第一帧(步骤906)。在一个实施例中,通过识别远程计算机器是否将指示在远程计算机器渲染第一帧的确认传输给本地计算机器,确定远程计算机器是否已经渲染所传输的第一帧。其他实施例包括通过侦听网络堆栈并且从网络堆栈监听到网络不繁忙,来确定远程计算机器是否已渲染所传输的第一帧。其他实施例包括,在网络上发送测试包来确定网络是否繁忙,没有接收到确认测试包并确定网络繁忙,从而远程计算装置还没有完全接收到第一帧。在一些实施例中,通过分析本地计算机器和远程计算机器之间的网络上的负载来确定负载是否超过或者低于预定阈值来做出该确定。当负载超过预定阈值时,确定网络繁忙;当负载低于预定阈值时,确定网络不繁忙,从而第一帧可能已传输到远程计算机器并且可能已渲染。
在一个实施例中,通过代理延迟返回到请求的应用的调用(步骤908)。其他实施例包括,当确定代理、本地计算机器或者应用中的任一个没有接收到指示第一帧已被渲染的通知时,阻止将第一调用返回给请求的应用。在一些实施例中,代理可通过阻止绘制库或者绘制库中的可执行模块将第一调用和渲染的图像返回给请求的应用延迟绘图的呈现。在一些实施例中,当通过绘制库渲染图像时,这样的绘制可以发生在保存离屏图形的后台缓存中。在代理延迟或者阻止将第一调用返回给请求的应用的实施例中,代理还可以延迟或者阻止将后台缓存的内容显示或者传输到请求的应用。其他实施例包括在预定时间段内阻止返回第一调用和相应的图像,其中这样的时间段可以是通过经验确定,随机确定,动态确定,或者可以通过用户或者应用硬编码到代理中。在另一个实施例中,在接收到指示第一调用被渲染的通知并且在预定时间之后,可以出现第一调用返回。
一些实施例包括接收到第一帧在远程计算机器上渲染的通知(步骤910),并且作为响应允许将第一调用返回给请求的应用(步骤912)的代理。在一个实施例中,通过远程计算机器产生该调用,而在其它实施例中,通过网络、本地计算机器上执行的应用、或者远程计算机器上执行的应用的任一个来产生该通知。
在一个实施例中,方法900包括是远程机制或者和用于将图形传输到远程计算机器的远程机制相连接的代理。在一些实施例中,方法900可以通过在确定之前的帧成功传送到远程计算装置或者在远程计算装置渲染之后进行渲染,来延迟渲染帧或者图形数据。在另一个实施例中,代理允许将第一调用返回请求的应用之后,代理传输应用所产生的第二帧。在此实施例中,代理接收到指示第二帧被渲染的通知,并且拦截请求来自绘制库的信息的应用所产生的第二调用。代理随后识别第二帧被渲染的指示器,并且代理允许第二调用返回给请求的应用。在一个实施例中,代理确定已经接收到指示之前的帧已经在远程计算机器上接收或者显示的标志位时,代理可以确定不阻止应用所发出的当前调用。因此,在此实施例中,当前调用不被阻止并且可以返回给请求的应用。
本发明可以作为一个或多个计算机可读程序提供,这些计算机可读程序实现在一个或者多个制品中。制品可为软盘、硬盘、紧致磁盘、数字化视频光盘、闪烁存储卡、PROM、RAM、ROM、具有通过处理器执行的指令的计算机可读介质,或者磁带。通常,计算机可读程序可以任何编程语言实现。可使用的语言的一些实例包括C、C++、C#、或JAVA。软件程序可以作为对象代码存储在一个或多个物品。
虽然已经描述方法和系统的多个实施例,但是这些实施例是示例性的并且不以任何方式限制所述方法和系统的范围。相关领域中的技术人员在不脱离所描述方法和系统的最宽范围的情况下可以对所描述的方法和系统的形式和细节进行修改。因此,此处描述的方法和系统的范围不应该通过这些示例性实施例来限定,而是应该根据所附权利要求书和其等价范围来限定。
Claims (27)
1.一种用于远程提供三维图形的方法,该方法包括:
由代理拦截在本地计算机器上执行的应用所产生的多个三维图形命令;
由代理使用第一编码译码器来编码多个三维图形命令的第一部分,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
由代理使用第二编码译码器来编码多个三维图形命令的第二部分,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
由代理建立包括多个三维图形命令的第一部分和第二部分的帧;
由代理压缩该帧;和
由代理将该帧传输到远程计算机器。
2.权利要求1的方法,其中,编码多个三维图形命令的第二部分还包括编码和该多个三维图形命令的第一部分不同的多个三维图形命令的第二部分。
3.权利要求1的方法,其中,编码多个三维图形命令的第二部分还包括编码和该三维图形命令的第一部分相同的该多个三维图形命令的第二部分。
4.权利要求1的方法,其中,拦截还包括在将三维图形命令传输到三维图形驱动器之前将它们拦截。
5.权利要求4的方法,还包括将该三维图形命令重定向到代理三维图形驱动器。
6.权利要求1的方法,其中,建立帧还包括建立包括图形图元的帧。
7.权利要求6的方法,其中,所述图形图元是DirectX图形图元。
8.权利要求6的方法,其中,所述图形图元是OpenGL图形图元。
9.权利要求6的方法,其中,所述图形图元是Direct3D图形图元。
10.一种用于远程提供三维图形的系统,该系统包括:
执行产生多个三维图形命令的应用的本地计算机器;
经由远程呈现协议和本地计算机器通信的远程计算机器;
本地计算机器上执行的代理,用来:
拦截多个三维图形命令,
使用第一编码译码器来编码多个三维图形命令的第一部分,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令,
使用第二编码译码器来编码多个三维图形命令的第二部分,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令,
建立包括多个三维图形命令的第一部分和第二部分的帧,
压缩该帧,和
将该帧传输到远程计算机器。
11.权利要求10的系统,其中,多个三维图形命令的第二部分和该多个三维图形命令的第一部分不同。
12.权利要求10的系统,其中,多个三维图形命令的第二部分和该三维图形命令的第一部分相同。
13.权利要求10的系统,其中,在将三维图形命令传输到三维图形驱动器之前该代理将它们拦截。
14.权利要求13的系统,其中,该代理还将该三维图形命令重定向到代理三维图形驱动器。
15.权利要求10的系统,其中,该代理建立包括图形图元的帧。
16.权利要求15的系统,其中,所述图形图元是DirectX图形图元。
17.权利要求15的系统,其中,所述图形图元是OpenGL图形图元。
18.权利要求15的系统,其中,所述图形图元是Direct3D图形图元。
19.一种用于远程提供三维图形的装置,该装置包括:
用于由代理拦截在本地计算机器上执行的应用所产生的多个三维图形命令的模块;
用于由代理使用第一编码译码器来编码多个三维图形命令的第一部分的模块,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
用于由代理使用第二编码译码器来编码多个三维图形命令的第二部分的模块,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
用于由代理建立包括多个三维图形命令的第一部分和第二部分的帧的模块;
用于由代理压缩该帧的模块;和
用于由代理将该帧传输到远程计算机器的模块。
20.权利要求19的装置,其中,用于编码多个三维图形命令的第二部分的模块还包括用于编码和该多个三维图形命令的第一部分不同的多个三维图形命令的第二部分的模块。
21.权利要求19的装置,其中,用于编码多个三维图形命令的第二部分的模块还包括用于编码和该三维图形命令的第一部分相同的该多个三维图形命令的第二部分的模块。
22.权利要求19的装置,其中,用于拦截的模块还包括用于在将三维图形命令传输到三维图形驱动器之前将它们拦截的模块。
23.权利要求22的装置,还包括用于将该三维图形命令重定向到代理三维图形驱动器的模块。
24.权利要求19的装置,其中,用于建立帧的模块还包括用于建立包括图形图元的帧的模块。
25.权利要求24的装置,其中,所述图形图元是DirectX图形图元。
26.权利要求24的装置,其中,所述图形图元是OpenGL图形图元。
27.权利要求24的装置,其中,所述图形图元是Direct3D图形图元。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2386708P | 2008-01-27 | 2008-01-27 | |
US61/023,867 | 2008-01-27 | ||
US61/023867 | 2008-01-27 | ||
US10853808P | 2008-10-26 | 2008-10-26 | |
US61/108538 | 2008-10-26 | ||
US61/108,538 | 2008-10-26 | ||
PCT/US2009/032173 WO2009094673A2 (en) | 2008-01-27 | 2009-01-27 | Methods and systems for remoting three dimensional graphics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101918921A CN101918921A (zh) | 2010-12-15 |
CN101918921B true CN101918921B (zh) | 2013-12-04 |
Family
ID=40591947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801011246A Expired - Fee Related CN101918921B (zh) | 2008-01-27 | 2009-01-27 | 用于远程提供三维图形的方法和系统 |
Country Status (7)
Country | Link |
---|---|
US (7) | US8350863B2 (zh) |
EP (5) | EP2315122B1 (zh) |
CN (1) | CN101918921B (zh) |
AU (1) | AU2009206251B2 (zh) |
CA (1) | CA2700225A1 (zh) |
IL (1) | IL205332A0 (zh) |
WO (1) | WO2009094673A2 (zh) |
Families Citing this family (114)
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 |
US7904187B2 (en) | 1999-02-01 | 2011-03-08 | Hoffberg Steven M | Internet appliance system and method |
US8074248B2 (en) | 2005-07-26 | 2011-12-06 | Activevideo Networks, Inc. | System and method for providing video content associated with a source image to a television in a communication network |
US9826197B2 (en) | 2007-01-12 | 2017-11-21 | Activevideo Networks, Inc. | Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device |
EP2116051A2 (en) | 2007-01-12 | 2009-11-11 | ActiveVideo Networks, Inc. | Mpeg objects and systems and methods for using mpeg objects |
US20090083115A1 (en) | 2007-09-24 | 2009-03-26 | Pearson Gregory A | Interactive networking systems |
US9275247B2 (en) | 2007-09-24 | 2016-03-01 | Gregory A. Pearson, Inc. | Interactive networking systems with user classes |
US8350863B2 (en) * | 2008-01-27 | 2013-01-08 | Citrix Systems, Inc. | Methods and systems for improving resource utilization by delaying rendering of three dimensional graphics |
RU2465637C2 (ru) * | 2008-04-17 | 2012-10-27 | Нокиа Корпорейшн | Система и способ улучшения работы медиасервера |
US20150177822A1 (en) * | 2008-08-20 | 2015-06-25 | Lucidlogix Technologies Ltd. | Application-transparent resolution control by way of command stream interception |
US8654134B2 (en) | 2008-12-08 | 2014-02-18 | Microsoft Corporation | Command remoting |
US9104452B2 (en) * | 2009-07-27 | 2015-08-11 | Microsoft Technology Licensing, Llc | Hybrid remote sessions |
US8171154B2 (en) | 2009-09-29 | 2012-05-01 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
US9146884B2 (en) | 2009-12-10 | 2015-09-29 | Microsoft Technology Licensing, Llc | Push pull adaptive capture |
US8761520B2 (en) | 2009-12-11 | 2014-06-24 | Microsoft Corporation | Accelerating bitmap remoting by identifying and extracting 2D patterns from source bitmaps |
US8898577B2 (en) * | 2010-03-09 | 2014-11-25 | Microsoft Corporation | Application sharing with occlusion removal |
US8768067B2 (en) | 2010-04-15 | 2014-07-01 | Microsoft Corporation | Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques |
US8823719B2 (en) * | 2010-05-13 | 2014-09-02 | Mediatek Inc. | Graphics processing method applied to a plurality of buffers and graphics processing apparatus thereof |
US8417039B2 (en) | 2010-06-03 | 2013-04-09 | Microsoft Corporation | Motion detection techniques for improved image remoting |
US20110298816A1 (en) * | 2010-06-03 | 2011-12-08 | Microsoft Corporation | Updating graphical display content |
US8839112B2 (en) | 2010-08-10 | 2014-09-16 | Microsoft Corporation | Cloning or extending a computer desktop on a wireless display surface |
US20120042275A1 (en) * | 2010-08-10 | 2012-02-16 | Microsoft Corporation | Cloning specific windows on a wireless display surface |
US20120075204A1 (en) * | 2010-09-27 | 2012-03-29 | Google Inc. | Using a Touch-Sensitive Display of a Mobile Device with a Host Computer |
US9069622B2 (en) | 2010-09-30 | 2015-06-30 | Microsoft Technology Licensing, Llc | Techniques for load balancing GPU enabled virtual machines |
US8970603B2 (en) * | 2010-09-30 | 2015-03-03 | Microsoft Technology Licensing, Llc | Dynamic virtual device failure recovery |
CA2814070A1 (en) | 2010-10-14 | 2012-04-19 | Activevideo Networks, Inc. | Streaming digital video between video devices using a cable television system |
US20120127183A1 (en) * | 2010-10-21 | 2012-05-24 | Net Power And Light, Inc. | Distribution Processing Pipeline and Distributed Layered Application Processing |
EP2663925B1 (en) * | 2011-01-14 | 2016-09-14 | Google, Inc. | A method and mechanism for performing both server-side and client-side rendering of visual data |
GB201104066D0 (en) * | 2011-03-09 | 2011-04-20 | Imagination Tech Ltd | Compression of a tessellated primitive index list in a tile rendering system |
EP2695388B1 (en) | 2011-04-07 | 2017-06-07 | ActiveVideo Networks, Inc. | Reduction of latency in video distribution networks using adaptive bit rates |
WO2012170797A1 (en) * | 2011-06-09 | 2012-12-13 | Ciinow, Inc. | A method and mechanism for performing both server-side and client-side rendering of visual data |
US8836653B1 (en) | 2011-06-28 | 2014-09-16 | Google Inc. | Extending host device functionality using a mobile device |
WO2013036691A1 (en) * | 2011-09-06 | 2013-03-14 | Dreamworks Animation Llc | Optimizing graph evaluation |
US9135189B2 (en) | 2011-09-07 | 2015-09-15 | Microsoft Technology Licensing, Llc | Delivering GPU resources across machine boundaries |
US10031636B2 (en) * | 2011-09-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Remoting desktop displays using move regions |
CN102306402A (zh) * | 2011-09-16 | 2012-01-04 | 中山大学 | 一种移动可视媒体的三维图形处理系统 |
US20130086495A1 (en) * | 2011-10-04 | 2013-04-04 | Sap Portals Israel Ltd | Managing Social Suggestions in a Contextual Workspace |
US9218189B2 (en) | 2011-10-04 | 2015-12-22 | Sap Portals Israel Ltd | Managing a contextual workspace |
US9245245B2 (en) | 2011-10-06 | 2016-01-26 | Sap Portals Israel Ltd | Managing semantic data in a contextual workspace |
US9213954B2 (en) | 2011-10-06 | 2015-12-15 | Sap Portals Israel Ltd | Suggesting data in a contextual workspace |
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 |
US9183663B1 (en) * | 2011-12-30 | 2015-11-10 | Graphon Corporation | System for and method of classifying and translating graphics commands in client-server computing systems |
US9064292B1 (en) * | 2011-12-30 | 2015-06-23 | hopTo, Inc. | System for and method of classifying and translating graphics commands in client-server computing systems |
US8922569B1 (en) | 2011-12-30 | 2014-12-30 | hopTo Inc. | Cloud based system for and method of translating between disparate 3D graphics languages in client-server computing environments |
EP2815582B1 (en) | 2012-01-09 | 2019-09-04 | ActiveVideo Networks, Inc. | Rendering of an interactive lean-backward user interface on a television |
DE102012202537A1 (de) * | 2012-02-20 | 2013-08-22 | Siemens Aktiengesellschaft | Bildsynthese-System |
US9800945B2 (en) | 2012-04-03 | 2017-10-24 | Activevideo Networks, Inc. | Class-based intelligent multiplexing over unmanaged networks |
US9123084B2 (en) * | 2012-04-12 | 2015-09-01 | Activevideo Networks, Inc. | Graphical application integration with MPEG objects |
US9873045B2 (en) * | 2012-05-25 | 2018-01-23 | Electronic Arts, Inc. | Systems and methods for a unified game experience |
US9535722B2 (en) * | 2012-09-12 | 2017-01-03 | The Directv Group, Inc. | Method and system for communicating between a host device and a user device through an intermediate device using a composite graphics signal |
US10521250B2 (en) | 2012-09-12 | 2019-12-31 | The Directv Group, Inc. | Method and system for communicating between a host device and user device through an intermediate device using a composite video signal |
US9137501B2 (en) | 2012-09-12 | 2015-09-15 | The Directv Group, Inc. | Method and system for communicating between a host device and user device through an intermediate device using syntax translation |
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
US10095663B2 (en) | 2012-11-14 | 2018-10-09 | Amazon Technologies, Inc. | Delivery and display of page previews during page retrieval events |
US20140157186A1 (en) * | 2012-12-03 | 2014-06-05 | Himanshu Jagadish Bhat | Three dimensional desktop rendering in a data processing device |
WO2014100281A1 (en) | 2012-12-18 | 2014-06-26 | Dynavisor, Inc. | Dynamic device virtualization |
US20140189544A1 (en) * | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Web-based graphics development system and method of graphics program interaction therewith |
US20140184613A1 (en) * | 2013-01-01 | 2014-07-03 | Doron Exterman | Method for offloading graphic processing unit (gpu) processing tasks to remote computers |
WO2014134452A1 (en) | 2013-02-28 | 2014-09-04 | Robert Bosch Gmbh | Mobile electronic device integration with in-vehicle information systems |
WO2014145921A1 (en) | 2013-03-15 | 2014-09-18 | Activevideo Networks, Inc. | A multiple-mode system and method for providing user selectable video content |
US20140292803A1 (en) * | 2013-03-29 | 2014-10-02 | Nvidia Corporation | System, method, and computer program product for generating mixed video and three-dimensional data to reduce streaming bandwidth |
WO2014197879A1 (en) | 2013-06-06 | 2014-12-11 | Activevideo Networks, Inc. | Overlay rendering of user interface onto source video |
US9294785B2 (en) | 2013-06-06 | 2016-03-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
US9219922B2 (en) | 2013-06-06 | 2015-12-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
CN103294439B (zh) | 2013-06-28 | 2016-03-02 | 华为技术有限公司 | 一种图像更新方法、系统及装置 |
WO2015013944A1 (en) * | 2013-08-01 | 2015-02-05 | Intel Corporation | Adaptive remote computing |
US9619857B2 (en) | 2013-10-23 | 2017-04-11 | Empire Technology Development Llc | Intermediary graphics rendition |
US9641592B2 (en) | 2013-11-11 | 2017-05-02 | Amazon Technologies, Inc. | Location of actor resources |
US9805479B2 (en) * | 2013-11-11 | 2017-10-31 | Amazon Technologies, Inc. | Session idle optimization for streaming server |
US9519869B2 (en) | 2013-11-25 | 2016-12-13 | International Business Machines Corporation | Predictive computer system resource monitoring |
WO2015081308A2 (en) | 2013-11-26 | 2015-06-04 | Dynavisor, Inc. | Dynamic i/o virtualization |
US20150189012A1 (en) * | 2014-01-02 | 2015-07-02 | Nvidia Corporation | Wireless display synchronization for mobile devices using buffer locking |
US10915984B2 (en) * | 2014-01-21 | 2021-02-09 | Elektraglide Ltd | Method and system for interactive graphics streaming |
US10410312B2 (en) * | 2014-01-21 | 2019-09-10 | Elektraglide Ltd | Method and system for interactive graphics streaming |
US10031767B2 (en) | 2014-02-25 | 2018-07-24 | Dynavisor, Inc. | Dynamic information virtualization |
JP5983665B2 (ja) * | 2014-03-17 | 2016-09-06 | 日本電気株式会社 | アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法 |
US9788029B2 (en) | 2014-04-25 | 2017-10-10 | Activevideo Networks, Inc. | Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks |
US11169666B1 (en) | 2014-05-22 | 2021-11-09 | Amazon Technologies, Inc. | Distributed content browsing system using transferred hardware-independent graphics commands |
US10042521B1 (en) | 2014-05-22 | 2018-08-07 | Amazon Technologies, Inc. | Emulation of control resources for use with converted content pages |
US9720888B1 (en) * | 2014-05-22 | 2017-08-01 | Amazon Technologies, Inc. | Distributed browsing architecture for the delivery of graphics commands to user devices for assembling a plurality of layers of a content page |
US9922007B1 (en) | 2014-05-22 | 2018-03-20 | Amazon Technologies, Inc. | Split browser architecture capable of determining whether to combine or split content layers based on the encoding of content within each layer |
US9454515B1 (en) | 2014-06-17 | 2016-09-27 | Amazon Technologies, Inc. | Content browser system using graphics commands and native text intelligence |
EP3177023B1 (en) * | 2014-07-30 | 2020-02-05 | Sk Planet Co., Ltd. | Apparatus for cloud streaming service |
WO2016028293A1 (en) * | 2014-08-20 | 2016-02-25 | Landmark Graphics Corporation | Optimizing computer hardware resource utilization when processing variable precision data |
US10235338B2 (en) | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
EP3001385B1 (en) * | 2014-09-29 | 2019-05-01 | Agfa Healthcare | A system and method for rendering a video stream |
CN104618733A (zh) * | 2014-10-31 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 图像远程投射方法和相关装置 |
US10102664B1 (en) * | 2014-12-03 | 2018-10-16 | Charles Schwab & Co., Inc. | System and method for causing graphical information to be rendered |
CN104469385B (zh) * | 2014-12-11 | 2018-11-13 | 北京星网锐捷网络技术有限公司 | 基于虚拟化技术的图形显示方法及装置 |
US10074203B2 (en) * | 2014-12-23 | 2018-09-11 | Synaptics Incorporated | Overlay for display self refresh |
US20160232701A1 (en) * | 2015-02-05 | 2016-08-11 | Blackberry Limited | Devices and methods for rendering graphics data |
US10163179B2 (en) * | 2015-03-27 | 2018-12-25 | Intel Corporation | Method and apparatus for intelligent cloud-based graphics updates |
US10296392B2 (en) | 2015-04-17 | 2019-05-21 | Microsoft Technology Licensing, Llc | Implementing a multi-component service using plural hardware acceleration components |
US10511478B2 (en) | 2015-04-17 | 2019-12-17 | Microsoft Technology Licensing, Llc | Changing between different roles at acceleration components |
US10198294B2 (en) * | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US10255021B2 (en) * | 2015-05-28 | 2019-04-09 | Qualcomm Incorporated | Low latency screen mirroring |
KR102349716B1 (ko) * | 2015-06-11 | 2022-01-11 | 삼성전자주식회사 | 영상 공유 방법 및 이를 수행하는 전자 장치 |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
KR102478018B1 (ko) * | 2016-01-13 | 2022-12-16 | 삼성전자주식회사 | 콘텐트 표시 방법 및 이를 수행하는 전자 장치 |
KR102488333B1 (ko) * | 2016-04-27 | 2023-01-13 | 삼성전자주식회사 | 그래픽 데이터를 합성하는 전자 장치 및 방법 |
US10086289B2 (en) * | 2016-11-22 | 2018-10-02 | Sony Interactive Entertainment America Llc | Remastering by emulation |
CN107273471A (zh) * | 2017-06-07 | 2017-10-20 | 国网上海市电力公司 | 一种基于Geohash的二元电力时序数据索引构建方法 |
CN108133453A (zh) * | 2017-12-13 | 2018-06-08 | 北京奇虎科技有限公司 | 一种基于OpenGL的图像处理器及其功能扩展方法 |
US10620980B2 (en) * | 2018-03-28 | 2020-04-14 | Microsoft Technology Licensing, Llc | Techniques for native runtime of hypertext markup language graphics content |
CN110389827B (zh) * | 2018-04-20 | 2023-05-12 | 伊姆西Ip控股有限责任公司 | 在分布式系统中进行优化的方法、设备和计算机程序产品 |
CN109302637B (zh) * | 2018-11-05 | 2023-02-17 | 腾讯科技(成都)有限公司 | 图像处理方法、图像处理装置和电子设备 |
WO2020208254A1 (en) * | 2019-04-12 | 2020-10-15 | Esko Software Bvba | Method of and system for generating and viewing a 3d visualization of an object having printed features |
US11449963B1 (en) * | 2020-02-24 | 2022-09-20 | Juice Technologies, Inc. | Virtual graphics processing with remote execution |
CN111859509A (zh) * | 2020-07-27 | 2020-10-30 | 北京优锘科技有限公司 | 基于数据中心的机房容量管理系统及方法 |
WO2023280623A1 (en) * | 2021-07-09 | 2023-01-12 | Koninklijke Kpn N.V. | Augmenting video or external environment with 3d graphics |
US20230051111A1 (en) * | 2021-08-11 | 2023-02-16 | Lunar Outpost Inc. | Robotic Source Detection Device And Method |
US11836212B2 (en) * | 2021-12-03 | 2023-12-05 | Atlassian Pty Ltd. | Systems and methods for rendering interactive web pages |
CN114359017B (zh) * | 2021-12-27 | 2023-11-17 | 阿波罗智联(北京)科技有限公司 | 多媒体资源的处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742289A (en) * | 1994-04-01 | 1998-04-21 | Lucent Technologies Inc. | System and method of generating compressed video graphics images |
WO2003075116A2 (en) * | 2002-03-01 | 2003-09-12 | T5 Labs Ltd | Centralised interactive graphical application server |
CN101101505A (zh) * | 2006-07-07 | 2008-01-09 | 华为技术有限公司 | 一种实现三维增强现实的方法及系统 |
Family Cites Families (315)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2386708A (en) | 1945-10-09 | |||
US4438511A (en) * | 1980-11-10 | 1984-03-20 | Telebit Corporation | Packetized ensemble modem |
US5481740A (en) | 1986-04-14 | 1996-01-02 | National Instruments Corporation | Method and apparatus for providing autoprobe features in a graphical data flow diagram |
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 |
CA1337132C (en) | 1988-07-15 | 1995-09-26 | Robert Filepp | Reception system for an interactive computer network and method of operation |
US5544317A (en) | 1990-11-20 | 1996-08-06 | Berg; David A. | Method for continuing transmission of commands for interactive graphics presentation in a computer network |
US5241625A (en) | 1990-11-27 | 1993-08-31 | Farallon Computing, Inc. | Screen image sharing among heterogeneous computers |
US6850252B1 (en) | 1999-10-05 | 2005-02-01 | Steven M. Hoffberg | Intelligent electronic appliance system and method |
US5432932A (en) | 1992-10-23 | 1995-07-11 | International Business Machines Corporation | System and method for dynamically controlling remote processes from a performance monitor |
US5887133A (en) * | 1997-01-15 | 1999-03-23 | Health Hero Network | System and method for modifying documents sent over a communications network |
US5487145A (en) * | 1993-07-09 | 1996-01-23 | Taligent, Inc. | Method and apparatus for compositing display items which minimizes locked drawing areas |
US5844553A (en) | 1993-08-30 | 1998-12-01 | Hewlett-Packard Company | Mechanism to control and use window events among applications in concurrent computing |
US5446736A (en) | 1993-10-07 | 1995-08-29 | Ast Research, Inc. | Method and apparatus for connecting a node to a wireless network using a standard protocol |
US6681029B1 (en) | 1993-11-18 | 2004-01-20 | Digimarc Corporation | Decoding steganographic messages embedded in media signals |
US7103197B2 (en) | 1993-11-18 | 2006-09-05 | Digimarc Corporation | Arrangement for embedding subliminal data in imaging |
US7116781B2 (en) | 1993-11-18 | 2006-10-03 | Digimarc Corporation | Counteracting geometric distortions in watermarking |
US5862260A (en) * | 1993-11-18 | 1999-01-19 | Digimarc Corporation | Methods for surveying dissemination of proprietary empirical data |
US5832119C1 (en) | 1993-11-18 | 2002-03-05 | Digimarc Corp | Methods for controlling systems using control signals embedded in empirical data |
US6122403A (en) * | 1995-07-27 | 2000-09-19 | Digimarc Corporation | Computer system linked by using information in data objects |
US7113596B2 (en) | 1993-11-18 | 2006-09-26 | Digimarc Corporation | Embedding information related to a subject of an identification document in the identification document |
US7171016B1 (en) | 1993-11-18 | 2007-01-30 | Digimarc Corporation | Method for monitoring internet dissemination of image, video and/or audio files |
US6968057B2 (en) | 1994-03-17 | 2005-11-22 | Digimarc Corporation | Emulsion products and imagery employing steganography |
DE69523593T2 (de) | 1994-06-17 | 2002-09-26 | Intel Corp | Vorrichtung und verfahren zur aufteilung der anwendung in einer graphischen benutzerschnittstelle |
US5557765A (en) | 1994-08-11 | 1996-09-17 | Trusted Information Systems, Inc. | System and method for data recovery |
US5745759A (en) * | 1994-10-14 | 1998-04-28 | Qnx Software Systems, Ltd. | Window kernel |
US5838906A (en) | 1994-10-17 | 1998-11-17 | The Regents Of The University Of California | Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document |
US6879701B1 (en) | 1994-10-21 | 2005-04-12 | Digimarc Corporation | Tile-based digital watermarking techniques |
US6108715A (en) | 1994-12-13 | 2000-08-22 | Microsoft Corporation | Method and system for invoking remote procedure calls |
US6272632B1 (en) | 1995-02-21 | 2001-08-07 | Network Associates, Inc. | System and method for controlling access to a user secret using a key recovery field |
US5572528A (en) | 1995-03-20 | 1996-11-05 | Novell, Inc. | Mobile networking method and apparatus |
US6760463B2 (en) | 1995-05-08 | 2004-07-06 | Digimarc Corporation | Watermarking methods and media |
US6813366B1 (en) | 1995-05-08 | 2004-11-02 | Digimarc Corporation | Steganographic decoding with transform to spatial domain |
US5743797A (en) * | 1995-05-31 | 1998-04-28 | Jannersten; Per | Device for controlling, presenting and registering the bidding in a game of bridge |
US6418324B1 (en) | 1995-06-01 | 2002-07-09 | Padcom, Incorporated | Apparatus and method for transparent wireless communication between a remote device and host system |
US6003030A (en) | 1995-06-07 | 1999-12-14 | Intervu, Inc. | System and method for optimized storage and retrieval of data on a distributed computer network |
US5592549A (en) * | 1995-06-15 | 1997-01-07 | Infosafe Systems, Inc. | Method and apparatus for retrieving selected information from a secure information source |
SE504523C2 (sv) * | 1995-06-19 | 1997-02-24 | Ericsson Telefon Ab L M | Anordning och metod för att länka kunder till servrar under körtid i ett distribuerat telekommunikationsnätverk |
US6563505B1 (en) * | 1995-06-23 | 2003-05-13 | Cirrus Logic, Inc. | Method and apparatus for executing commands in a graphics controller chip |
CA2180891C (en) | 1995-07-12 | 2010-01-12 | Junichi Rekimoto | Notification of updates in a three-dimensional virtual reality space sharing system |
US6199082B1 (en) | 1995-07-17 | 2001-03-06 | Microsoft Corporation | Method for delivering separate design and content in a multimedia publishing system |
US5860073A (en) | 1995-07-17 | 1999-01-12 | Microsoft Corporation | Style sheets for publishing system |
US6408331B1 (en) | 1995-07-27 | 2002-06-18 | Digimarc Corporation | Computer linking methods using encoded graphics |
US5742797A (en) | 1995-08-11 | 1998-04-21 | International Business Machines Corporation | Dynamic off-screen display memory manager |
US6580808B2 (en) | 1995-09-25 | 2003-06-17 | Digimarc Corporation | Method and apparatus for discerning image distortion by reference to encoded marker signals |
US5819020A (en) | 1995-10-16 | 1998-10-06 | Network Specialists, Inc. | Real time backup system |
US6373573B1 (en) | 2000-03-13 | 2002-04-16 | Lj Laboratories L.L.C. | Apparatus for measuring optical characteristics of a substrate and pigments applied thereto |
US6118521A (en) | 1996-01-02 | 2000-09-12 | Lj Laboratories, L.L.C. | Apparatus and method for measuring optical characteristics of an object |
JP3087640B2 (ja) | 1996-01-16 | 2000-09-11 | 株式会社日立製作所 | グラフィックプロセッサ及びシステム |
US6459425B1 (en) | 1997-08-25 | 2002-10-01 | Richard A. Holub | System for automatic color calibration |
US5692073A (en) | 1996-05-03 | 1997-11-25 | Xerox Corporation | Formless forms and paper web using a reference-based mark extraction technique |
US6381341B1 (en) * | 1996-05-16 | 2002-04-30 | Digimarc Corporation | Watermark encoding method exploiting biases inherent in original signal |
US6052120A (en) * | 1996-10-01 | 2000-04-18 | Diamond Multimedia Systems, Inc. | Method of operating a portable interactive graphics display tablet and communications systems |
US5884046A (en) * | 1996-10-23 | 1999-03-16 | Pluris, Inc. | Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network |
US6185625B1 (en) * | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
CA2278709A1 (en) | 1997-01-27 | 1998-08-13 | Benjamin Slotznick | System for delivering and displaying primary and secondary information |
US6101510A (en) | 1997-01-29 | 2000-08-08 | Microsoft Corporation | Web browser control for incorporating web browser functionality into application programs |
US6852252B2 (en) * | 1997-03-12 | 2005-02-08 | William Marsh Rice University | Use of metalnanoshells to impede the photo-oxidation of conjugated polymer |
US6421726B1 (en) | 1997-03-14 | 2002-07-16 | Akamai Technologies, Inc. | System and method for selection and retrieval of diverse types of video data on a computer network |
US6023507A (en) | 1997-03-17 | 2000-02-08 | Sun Microsystems, Inc. | Automatic remote computer monitoring system |
US6141003A (en) | 1997-03-18 | 2000-10-31 | Microsoft Corporation | Channel bar user interface for an entertainment system |
US5796952A (en) | 1997-03-21 | 1998-08-18 | Dot Com Development, Inc. | Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database |
US6643696B2 (en) | 1997-03-21 | 2003-11-04 | Owen Davis | Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database |
AU2430997A (en) | 1997-03-27 | 1998-10-22 | Littelfuse, Inc. | Resettable automotive circuit protection device |
EP0872991B1 (en) * | 1997-04-15 | 2006-07-26 | Hewlett-Packard Company, A Delaware Corporation | Method and apparatus for device interaction by format |
US5983190A (en) | 1997-05-19 | 1999-11-09 | Microsoft Corporation | Client server animation system for managing interactive user interface characters |
US5999940A (en) | 1997-05-28 | 1999-12-07 | Home Information Services, Inc. | Interactive information discovery tool and methodology |
US6112239A (en) | 1997-06-18 | 2000-08-29 | Intervu, Inc | System and method for server-side optimization of data delivery on a distributed computer network |
US6449041B1 (en) | 1997-07-01 | 2002-09-10 | Lj Laboratories, Llc | Apparatus and method for measuring optical characteristics of an object |
US6870616B2 (en) * | 1998-06-30 | 2005-03-22 | Jjl Technologies Llc | Spectrometer apparatus for determining an optical characteristic of an object or material having one or more sensors for determining a physical position or non-color property |
US6421738B1 (en) * | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
US6023724A (en) * | 1997-09-26 | 2000-02-08 | 3Com Corporation | Apparatus and methods for use therein for an ISDN LAN modem that displays fault information to local hosts through interception of host DNS request messages |
US7024450B1 (en) * | 1997-10-06 | 2006-04-04 | Mci, Inc. | Method and apparatus for deploying service modules among service nodes distributed in an intelligent network |
US5848410A (en) | 1997-10-08 | 1998-12-08 | Hewlett Packard Company | System and method for selective and continuous index generation |
US6816904B1 (en) | 1997-11-04 | 2004-11-09 | Collaboration Properties, Inc. | Networked video multimedia storage server environment |
CA2309660C (en) | 1997-11-13 | 2010-02-09 | Hyperspace Communications, Inc. | File transfer system |
US5999179A (en) | 1997-11-17 | 1999-12-07 | Fujitsu Limited | Platform independent computer network management client |
US6664978B1 (en) | 1997-11-17 | 2003-12-16 | Fujitsu Limited | Client-server computer network management architecture |
US6272537B1 (en) | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
US6788315B1 (en) | 1997-11-17 | 2004-09-07 | Fujitsu Limited | Platform independent computer network manager |
US6170075B1 (en) * | 1997-12-18 | 2001-01-02 | 3Com Corporation | Data and real-time media communication over a lossy network |
US6519686B2 (en) | 1998-01-05 | 2003-02-11 | Intel Corporation | Information streaming in a multi-process system using shared memory |
KR20010034542A (ko) * | 1998-02-26 | 2001-04-25 | 케네쓰 올센 | 네트워크를 통한 동적 분산 컴퓨팅 방법 및 장치 |
US5974547A (en) | 1998-03-20 | 1999-10-26 | 3Com Corporation | Technique for reliable network booting of an operating system to a client computer |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6549612B2 (en) * | 1998-05-06 | 2003-04-15 | Telecommunications Premium Services, Inc. | Unified communication services via e-mail |
US6141699A (en) | 1998-05-11 | 2000-10-31 | International Business Machines Corporation | Interactive display system for sequential retrieval and display of a plurality of interrelated data sets |
CA2332413A1 (en) | 1998-05-15 | 1999-11-25 | Rick W. Landsman | A technique for implementing browser-initiated network-distributed advertising and for interstitially displaying an advertisement |
US6343318B1 (en) * | 1998-05-29 | 2002-01-29 | Palm, Inc. | Method and apparatus for communicating information over low bandwidth communications networks |
US6253326B1 (en) | 1998-05-29 | 2001-06-26 | Palm, Inc. | Method and system for secure communications |
US6201996B1 (en) * | 1998-05-29 | 2001-03-13 | Control Technology Corporationa | Object-oriented programmable industrial controller with distributed interface architecture |
US7025209B2 (en) | 1998-05-29 | 2006-04-11 | Palmsource, Inc. | Method and apparatus for wireless internet access |
US6397259B1 (en) | 1998-05-29 | 2002-05-28 | Palm, Inc. | Method, system and apparatus for packet minimized communications |
US6590588B2 (en) | 1998-05-29 | 2003-07-08 | Palm, Inc. | Wireless, radio-frequency communications using a handheld computer |
US6246479B1 (en) | 1998-06-08 | 2001-06-12 | Lj Laboratories, L.L.C. | Integrated spectrometer assembly and methods |
US6246471B1 (en) | 1998-06-08 | 2001-06-12 | Lj Laboratories, Llc | Apparatus and method for measuring optical characteristics of an object |
US6249348B1 (en) | 1998-11-23 | 2001-06-19 | Lj Laboratories, L.L.C. | Integrated spectrometer assembly and methods |
US6249294B1 (en) * | 1998-07-20 | 2001-06-19 | Hewlett-Packard Company | 3D graphics in a single logical sreen display using multiple computer systems |
US6934963B1 (en) | 1998-09-22 | 2005-08-23 | United Video Properties, Inc. | Interactive television program guide with passive content |
US8332478B2 (en) * | 1998-10-01 | 2012-12-11 | Digimarc Corporation | Context sensitive connected content |
US6271858B1 (en) | 1998-10-16 | 2001-08-07 | Microsoft Corporation | Incremental update for dynamic/animated textures on three-dimensional models |
US6385653B1 (en) | 1998-11-02 | 2002-05-07 | Cisco Technology, Inc. | Responding to network access requests using a transparent media access and uniform delivery of service |
US6330022B1 (en) | 1998-11-05 | 2001-12-11 | Lucent Technologies Inc. | Digital processing apparatus and method to support video conferencing in variable contexts |
US7010512B1 (en) | 1998-11-09 | 2006-03-07 | C/Base, Inc. | Transfer instrument |
US6859212B2 (en) | 1998-12-08 | 2005-02-22 | Yodlee.Com, Inc. | Interactive transaction center interface |
US6628304B2 (en) | 1998-12-09 | 2003-09-30 | Cisco Technology, Inc. | Method and apparatus providing a graphical user interface for representing and navigating hierarchical networks |
US6449639B1 (en) | 1998-12-23 | 2002-09-10 | Doxio, Inc. | Method and system for client-less viewing of scalable documents displayed using internet imaging protocol commands |
US6263363B1 (en) | 1999-01-28 | 2001-07-17 | Skydesk, Inc. | System and method for creating an internet-accessible working replica of a home computer on a host server controllable by a user operating a remote access client computer |
US6295513B1 (en) | 1999-03-16 | 2001-09-25 | Eagle Engineering Of America, Inc. | Network-based system for the manufacture of parts with a virtual collaborative environment for design, developement, and fabricator selection |
US6919895B1 (en) * | 1999-03-22 | 2005-07-19 | Nvidia Corporation | Texture caching arrangement for a computer graphics accelerator |
US6762761B2 (en) * | 1999-03-31 | 2004-07-13 | International Business Machines Corporation | Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions |
US6789252B1 (en) | 1999-04-15 | 2004-09-07 | Miles D. Burke | Building business objects and business software applications using dynamic object definitions of ingrediential objects |
US7231357B1 (en) | 1999-04-19 | 2007-06-12 | Neil Shanman | System and method for the targeted distribution of discount coupons over a network |
US7178106B2 (en) | 1999-04-21 | 2007-02-13 | Sonic Solutions, A California Corporation | Presentation of media content from multiple media sources |
US6317777B1 (en) | 1999-04-26 | 2001-11-13 | Intel Corporation | Method for web based storage and retrieval of documents |
US6763040B1 (en) | 1999-04-29 | 2004-07-13 | Amx Corporation | Internet control system communication protocol and method |
US6340977B1 (en) | 1999-05-07 | 2002-01-22 | Philip Lui | System and method for dynamic assistance in software applications using behavior and host application models |
WO2001089838A1 (en) | 2000-05-24 | 2001-11-29 | Silverbrook Research Pty. Ltd. | Printed page tag encoder |
US6721713B1 (en) | 1999-05-27 | 2004-04-13 | Andersen Consulting Llp | Business alliance identification in a web architecture framework |
US7165041B1 (en) * | 1999-05-27 | 2007-01-16 | Accenture, Llp | Web-based architecture sales tool |
US6519571B1 (en) | 1999-05-27 | 2003-02-11 | Accenture Llp | Dynamic customer profile management |
US6615166B1 (en) | 1999-05-27 | 2003-09-02 | Accenture Llp | Prioritizing components of a network framework required for implementation of technology |
US6957186B1 (en) | 1999-05-27 | 2005-10-18 | Accenture Llp | System method and article of manufacture for building, managing, and supporting various components of a system |
US6536037B1 (en) * | 1999-05-27 | 2003-03-18 | Accenture Llp | Identification of redundancies and omissions among components of a web based architecture |
US6473794B1 (en) | 1999-05-27 | 2002-10-29 | Accenture Llp | System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework |
US6745368B1 (en) | 1999-06-11 | 2004-06-01 | Liberate Technologies | Methods, apparatus, and systems for storing, retrieving and playing multimedia data |
US6591304B1 (en) | 1999-06-21 | 2003-07-08 | Cisco Technology, Inc. | Dynamic, scaleable attribute filtering in a multi-protocol compatible network access environment |
US6885920B2 (en) | 1999-07-30 | 2005-04-26 | Oshkosh Truck Corporation | Control system and method for electric vehicle |
US7184866B2 (en) | 1999-07-30 | 2007-02-27 | Oshkosh Truck Corporation | Equipment service vehicle with remote monitoring |
US6993421B2 (en) * | 1999-07-30 | 2006-01-31 | Oshkosh Truck Corporation | Equipment service vehicle with network-assisted vehicle service and repair |
US6314452B1 (en) | 1999-08-31 | 2001-11-06 | Rtimage, Ltd. | System and method for transmitting a digital image over a communication network |
US6427132B1 (en) | 1999-08-31 | 2002-07-30 | Accenture Llp | System, method and article of manufacture for demonstrating E-commerce capabilities via a simulation on a network |
US6345239B1 (en) * | 1999-08-31 | 2002-02-05 | Accenture Llp | Remote demonstration of business capabilities in an e-commerce environment |
US6611867B1 (en) | 1999-08-31 | 2003-08-26 | Accenture Llp | System, method and article of manufacture for implementing a hybrid network |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
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 |
US6993456B2 (en) * | 1999-09-30 | 2006-01-31 | Rockwell Automation Technologies, Inc. | Mechanical-electrical template based method and apparatus |
US6556950B1 (en) * | 1999-09-30 | 2003-04-29 | Rockwell Automation Technologies, Inc. | Diagnostic method and apparatus for use with enterprise control |
US6268853B1 (en) | 1999-09-30 | 2001-07-31 | Rockwell Technologies, L.L.C. | Data structure for use in enterprise controls |
US7197465B1 (en) * | 1999-10-06 | 2007-03-27 | Stamps.Com Inc. | Apparatus, systems and methods for printing dimensionally accurate symbologies on laser printers configured with remote client computer devices |
US7117170B1 (en) | 1999-10-06 | 2006-10-03 | Stamps.Com Inc. | Apparatus, systems and methods for applying billing options for multiple carriers for online, multi-carrier, multi-service parcel shipping management |
US6965912B2 (en) | 1999-10-18 | 2005-11-15 | 4Yoursoul.Com | Method and apparatus for distribution of greeting cards with electronic commerce transaction |
US7042454B1 (en) * | 1999-10-27 | 2006-05-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for displaying distributed multiresolution scenes |
US7152207B1 (en) | 1999-11-05 | 2006-12-19 | Decentrix Inc. | Method and apparatus for providing conditional customization for generating a web site |
US6697825B1 (en) | 1999-11-05 | 2004-02-24 | Decentrix Inc. | Method and apparatus for generating and modifying multiple instances of element of a web site |
US6664969B1 (en) * | 1999-11-12 | 2003-12-16 | Hewlett-Packard Development Company, L.P. | Operating system independent method and apparatus for graphical remote access |
US6671818B1 (en) | 1999-11-22 | 2003-12-30 | Accenture Llp | Problem isolation through translating and filtering events into a standard object format in a network based supply chain |
US7130807B1 (en) | 1999-11-22 | 2006-10-31 | Accenture Llp | Technology sharing during demand and supply planning in a network-based supply chain environment |
US7124101B1 (en) | 1999-11-22 | 2006-10-17 | Accenture Llp | Asset tracking in a network-based supply chain environment |
US6606744B1 (en) | 1999-11-22 | 2003-08-12 | Accenture, Llp | Providing collaborative installation management in a network-based supply chain environment |
US6405252B1 (en) | 1999-11-22 | 2002-06-11 | Speedera Networks, Inc. | Integrated point of presence server network |
US6970849B1 (en) | 1999-12-17 | 2005-11-29 | Microsoft Corporation | Inter-server communication using request with encrypted parameter |
AU2582401A (en) | 1999-12-17 | 2001-06-25 | Dorado Network Systems Corporation | Purpose-based adaptive rendering |
US6996720B1 (en) * | 1999-12-17 | 2006-02-07 | Microsoft Corporation | System and method for accessing protected content in a rights-management architecture |
US7047411B1 (en) | 1999-12-17 | 2006-05-16 | Microsoft Corporation | Server for an electronic distribution system and method of operating same |
US6785902B1 (en) | 1999-12-20 | 2004-08-31 | Webtv Networks, Inc. | Document data structure and method for integrating broadcast television with web pages |
US6519037B2 (en) * | 1999-12-23 | 2003-02-11 | Lj Laboratories, Llc | Spectrometer having optical unit including a randomized fiber optic implement |
US6362888B1 (en) * | 1999-12-23 | 2002-03-26 | Lj Laboratories, L.L.C. | Spectrometer assembly |
US6690380B1 (en) * | 1999-12-27 | 2004-02-10 | Microsoft Corporation | Graphics geometry cache |
US6831637B1 (en) | 1999-12-30 | 2004-12-14 | Intel Corporation | Method and apparatus for compressing three dimensional surface data |
US6414750B2 (en) | 2000-01-10 | 2002-07-02 | Lj Laboratories, L.L.C. | Spectrometric apparatus and method for measuring optical characteristics of an object |
AU2001226401A1 (en) | 2000-01-14 | 2001-07-24 | Saba Software, Inc. | Method and apparatus for a business applications server |
AU2001227857A1 (en) * | 2000-01-14 | 2001-07-24 | Saba Software, Inc. | Method and apparatus for a business applications management system platform |
US6643652B2 (en) | 2000-01-14 | 2003-11-04 | Saba Software, Inc. | Method and apparatus for managing data exchange among systems in a network |
WO2001052090A2 (en) | 2000-01-14 | 2001-07-19 | Saba Software, Inc. | Method and apparatus for a web content platform |
US6721747B2 (en) | 2000-01-14 | 2004-04-13 | Saba Software, Inc. | Method and apparatus for an information server |
US6871346B1 (en) * | 2000-02-11 | 2005-03-22 | Microsoft Corp. | Back-end decoupled management model and management system utilizing same |
US6516311B1 (en) | 2000-02-24 | 2003-02-04 | Tau (Tony) Qiu & Howard Hoffenberg, As Tenants In Common | Method for linking on the internet with an advertising feature |
US6757362B1 (en) | 2000-03-06 | 2004-06-29 | Avaya Technology Corp. | Personal virtual assistant |
US6466654B1 (en) | 2000-03-06 | 2002-10-15 | Avaya Technology Corp. | Personal virtual assistant with semantic tagging |
US7111060B2 (en) | 2000-03-14 | 2006-09-19 | Aep Networks, Inc. | Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser |
US7284199B2 (en) | 2000-03-29 | 2007-10-16 | Microsoft Corporation | Process of localizing objects in markup language documents |
US20010030667A1 (en) | 2000-04-10 | 2001-10-18 | Kelts Brett R. | Interactive display interface for information objects |
US7062527B1 (en) | 2000-04-19 | 2006-06-13 | Silicon Graphics, Inc. | Management and scheduling of a distributed rendering method and system |
US6976071B1 (en) | 2000-05-03 | 2005-12-13 | Nortel Networks Limited | Detecting if a secure link is alive |
US6754710B1 (en) | 2000-05-08 | 2004-06-22 | Nortel Networks Limited | Remote control of computer network activity |
US6792607B1 (en) | 2000-05-18 | 2004-09-14 | Microsoft Corporation | Databinding using server-side control objects |
US7154638B1 (en) | 2000-05-23 | 2006-12-26 | Silverbrook Research Pty Ltd | Printed page tag encoder |
AU2001274972A1 (en) | 2000-05-26 | 2001-12-11 | Citrix Systems, Inc. | Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism |
US6519307B1 (en) * | 2000-05-30 | 2003-02-11 | Holtec International | Ventilated overpack apparatus and method for storing spent nuclear fuel |
US7219304B1 (en) | 2000-06-19 | 2007-05-15 | International Business Machines Corporation | System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform |
US6742026B1 (en) | 2000-06-19 | 2004-05-25 | International Business Machines Corporation | System and method for providing a distributable runtime |
US6854016B1 (en) | 2000-06-19 | 2005-02-08 | International Business Machines Corporation | System and method for a web based trust model governing delivery of services and programs |
US6574617B1 (en) | 2000-06-19 | 2003-06-03 | International Business Machines Corporation | System and method for selective replication of databases within a workflow, enterprise, and mail-enabled web application server and platform |
US6785721B1 (en) | 2000-06-19 | 2004-08-31 | International Business Machines Corporation | System and method for providing a distributable runtime that deploys web applications and services from a workflow, enterprise, and mail-enabled web application server and platform |
US6845383B1 (en) * | 2000-06-19 | 2005-01-18 | International Business Machines Corporation | System and method for managing concurrent scheduled or on-demand replication of subscriptions |
US7158953B1 (en) * | 2000-06-27 | 2007-01-02 | Microsoft Corporation | Method and system for limiting the use of user-specific software features |
US6891953B1 (en) | 2000-06-27 | 2005-05-10 | Microsoft Corporation | Method and system for binding enhanced software features to a persona |
US6981262B1 (en) | 2000-06-27 | 2005-12-27 | Microsoft Corporation | System and method for client interaction in a multi-level rights-management architecture |
US7017189B1 (en) | 2000-06-27 | 2006-03-21 | Microsoft Corporation | System and method for activating a rendering device in a multi-level rights-management architecture |
US8126313B2 (en) | 2000-06-28 | 2012-02-28 | Verizon Business Network Services Inc. | Method and system for providing a personal video recorder utilizing network-based digital media content |
US7000180B2 (en) * | 2000-06-29 | 2006-02-14 | Balthaser Online, Inc. | Methods, systems, and processes for the design and creation of rich-media applications via the internet |
US7373422B1 (en) | 2000-08-04 | 2008-05-13 | Oracle International Corporation | Techniques for supporting multiple devices in mobile applications |
US7027975B1 (en) | 2000-08-08 | 2006-04-11 | Object Services And Consulting, Inc. | Guided natural language interface system and method |
WO2002015102A1 (en) | 2000-08-15 | 2002-02-21 | Extreming, Inc. | E-commerce enabling virtual streaming multimedia server, system, method and article |
US20020046262A1 (en) * | 2000-08-18 | 2002-04-18 | Joerg Heilig | Data access system and method with proxy and remote processing |
US7035907B1 (en) | 2000-09-13 | 2006-04-25 | Jibe Networks, Inc. | Manipulating content objects to control their display |
US6938079B1 (en) | 2000-09-19 | 2005-08-30 | 3Com Corporation | System and method for automatically configuring a client device |
US7010546B1 (en) * | 2000-09-20 | 2006-03-07 | Parasoft Corporation | Method and system for testing data sources and database oriented software applications |
US7210100B2 (en) | 2000-09-27 | 2007-04-24 | Eizel Technologies, Inc. | Configurable transformation of electronic documents |
US6950850B1 (en) | 2000-10-31 | 2005-09-27 | International Business Machines Corporation | System and method for dynamic runtime partitioning of model-view-controller applications |
US7620719B2 (en) | 2002-06-06 | 2009-11-17 | Juniper Networks, Inc. | Method and system for providing secure access to private networks |
US20020099738A1 (en) | 2000-11-22 | 2002-07-25 | Grant Hugh Alexander | Automated web access for back-end enterprise systems |
GB2406680B (en) * | 2000-11-30 | 2005-05-18 | Coppereye Ltd | Database |
US7225040B2 (en) | 2001-11-14 | 2007-05-29 | Exxon Mobil Oil Corporation | Method and system for reducing lead-time in the packaging industry |
US6996778B2 (en) * | 2000-12-11 | 2006-02-07 | Microsoft Corporation | User interface for managing multiple network resources |
US20020116582A1 (en) | 2000-12-18 | 2002-08-22 | Copeland George P. | Batching of invalidations and new values in a web cache with dynamic content |
US6877025B2 (en) * | 2000-12-18 | 2005-04-05 | International Business Machines Corp. | Integrated JSP and command cache for web applications with dynamic content |
AU2002231289A1 (en) | 2000-12-19 | 2002-07-01 | Coolernet, Inc. | System and method for multimedia authoring and playback |
US6735601B1 (en) | 2000-12-29 | 2004-05-11 | Vmware, Inc. | System and method for remote file access by computer |
US6907118B2 (en) | 2001-02-13 | 2005-06-14 | At&T Corp. | Method and system for facilitating call-related activities |
US7190477B2 (en) | 2001-02-22 | 2007-03-13 | Sharp Laboratories Of America, Inc. | System and method for managing and processing a print job using print job tickets |
US6828975B2 (en) * | 2001-03-01 | 2004-12-07 | Microsoft Corporation | Method and system for managing graphics objects in a graphics display system |
US7506047B2 (en) * | 2001-03-30 | 2009-03-17 | Bmc Software, Inc. | Synthetic transaction monitor with replay capability |
AUPR464601A0 (en) | 2001-04-30 | 2001-05-24 | Commonwealth Of Australia, The | Shapes vector |
US6925481B2 (en) | 2001-05-03 | 2005-08-02 | Symantec Corp. | Technique for enabling remote data access and manipulation from a pervasive device |
US7020663B2 (en) * | 2001-05-30 | 2006-03-28 | George M. Hay | System and method for the delivery of electronic books |
US6802055B2 (en) * | 2001-06-27 | 2004-10-05 | Microsoft Corporation | Capturing graphics primitives associated with any display object rendered to a graphical user interface |
US7117504B2 (en) | 2001-07-10 | 2006-10-03 | Microsoft Corporation | Application program interface that enables communication for a network software platform |
EP1404532B1 (en) | 2001-07-11 | 2011-09-21 | Ecole Polytechnique Fédérale de Lausanne (EPFL) | Images incorporating microstructures |
EP1456769A4 (en) | 2001-07-26 | 2004-11-17 | Irise Inc | SYSTEM AND METHOD FOR GATHERING, RECORDING AND VALIDATING REQUIREMENTS FOR COMPUTING APPLICATIONS |
US7110982B2 (en) | 2001-08-27 | 2006-09-19 | Dphi Acquisitions, Inc. | Secure access method and system |
US7039723B2 (en) * | 2001-08-31 | 2006-05-02 | Hinnovation, Inc. | On-line image processing and communication system |
US7177935B2 (en) * | 2001-10-05 | 2007-02-13 | International Business Machines Corporation | Storage area network methods and apparatus with hierarchical file system extension policy |
US7171624B2 (en) * | 2001-10-05 | 2007-01-30 | International Business Machines Corporation | User interface architecture for storage area network |
US6920494B2 (en) | 2001-10-05 | 2005-07-19 | International Business Machines Corporation | Storage area network methods and apparatus with virtual SAN recognition |
US6854035B2 (en) * | 2001-10-05 | 2005-02-08 | International Business Machines Corporation | Storage area network methods and apparatus for display and management of a hierarchical file system extension policy |
US6952698B2 (en) | 2001-10-05 | 2005-10-04 | International Business Machines Corporation | Storage area network methods and apparatus for automated file system extension |
US7137124B2 (en) | 2001-10-05 | 2006-11-14 | International Business Machines Corporation | Storage area network methods and apparatus for storage device masking |
US6892264B2 (en) | 2001-10-05 | 2005-05-10 | International Business Machines Corporation | Storage area network methods and apparatus for associating a logical identification with a physical identification |
US6996670B2 (en) * | 2001-10-05 | 2006-02-07 | International Business Machines Corporation | Storage area network methods and apparatus with file system extension |
US7069395B2 (en) | 2001-10-05 | 2006-06-27 | International Business Machines Corporation | Storage area network methods and apparatus for dynamically enabled storage device masking |
US6697924B2 (en) | 2001-10-05 | 2004-02-24 | International Business Machines Corporation | Storage area network methods and apparatus for identifying fiber channel devices in kernel mode |
US7080140B2 (en) | 2001-10-05 | 2006-07-18 | International Business Machines Corporation | Storage area network methods and apparatus for validating data from multiple sources |
US7443401B2 (en) | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US7161599B2 (en) * | 2001-10-18 | 2007-01-09 | Microsoft Corporation | Multiple-level graphics processing system and method |
US20030079224A1 (en) * | 2001-10-22 | 2003-04-24 | Anton Komar | System and method to provide additional information associated with selectable display areas |
US20060274828A1 (en) | 2001-11-01 | 2006-12-07 | A4S Security, Inc. | High capacity surveillance system with fast search capability |
US7631084B2 (en) | 2001-11-02 | 2009-12-08 | Juniper Networks, Inc. | Method and system for providing secure access to private networks with client redirection |
US7171468B2 (en) * | 2001-11-10 | 2007-01-30 | Kabushiki Kaisha Toshiba | System and method for accessing a document management repository |
US7051340B2 (en) | 2001-11-29 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | System and method for isolating applications from each other |
US6888551B2 (en) | 2001-12-07 | 2005-05-03 | Intel Corporation | Sparse refresh of display |
US6985922B1 (en) * | 2001-12-21 | 2006-01-10 | S.J. Bashen, Inc. | Method, apparatus and system for processing compliance actions over a wide area network |
US7038696B2 (en) | 2002-01-04 | 2006-05-02 | Hewlett-Packard Development Company | Method and apparatus for implementing color graphics on a remote computer |
US7376695B2 (en) * | 2002-03-14 | 2008-05-20 | Citrix Systems, Inc. | Method and system for generating a graphical display for a remote terminal session |
US7107285B2 (en) | 2002-03-16 | 2006-09-12 | Questerra Corporation | Method, system, and program for an improved enterprise spatial system |
US7636754B2 (en) | 2002-03-21 | 2009-12-22 | Cisco Technology, Inc. | Rich multi-media format for use in a collaborative computing system |
US7120872B2 (en) | 2002-03-25 | 2006-10-10 | Microsoft Corporation | Organizing, editing, and rendering digital ink |
WO2003090468A1 (en) | 2002-04-19 | 2003-10-30 | Opentv, Inc. | Supporting common interactive television functionality through presentation engine syntax |
US6993586B2 (en) | 2002-05-09 | 2006-01-31 | Microsoft Corporation | User intention modeling for web navigation |
US7987491B2 (en) * | 2002-05-10 | 2011-07-26 | Richard Reisman | Method and apparatus for browsing using alternative linkbases |
US7197234B1 (en) * | 2002-05-24 | 2007-03-27 | Digeo, Inc. | System and method for processing subpicture data |
US7116894B1 (en) | 2002-05-24 | 2006-10-03 | Digeo, Inc. | System and method for digital multimedia stream conversion |
US7107309B1 (en) | 2002-07-03 | 2006-09-12 | Sprint Spectrum L.P. | Method and system for providing interstitial notice |
US6987987B1 (en) * | 2002-07-03 | 2006-01-17 | Sprint Spectrum L.P. | Method and system for providing advanced notice of cost to access web content |
US7260639B2 (en) | 2002-07-09 | 2007-08-21 | Akamai Technologies, Inc. | Method and system for protecting web sites from public internet threats |
US7137077B2 (en) | 2002-07-30 | 2006-11-14 | Microsoft Corporation | Freeform encounter selection tool |
US7305680B2 (en) | 2002-08-13 | 2007-12-04 | Sharp Laboratories Of America, Inc. | Listening module for asynchronous messages sent between electronic devices of a distributed network |
US6950502B1 (en) | 2002-08-23 | 2005-09-27 | Bellsouth Intellectual Property Corp. | Enhanced scheduled messaging system |
US7096383B2 (en) | 2002-08-29 | 2006-08-22 | Cosine Communications, Inc. | System and method for virtual router failover in a network routing system |
US6882718B1 (en) | 2002-09-06 | 2005-04-19 | Bellsouth Intellectual Property Corp. | Real time customer service data manipulation to allow multiple services per trigger type |
US6934578B2 (en) | 2002-09-18 | 2005-08-23 | Covance Inc. | Method and apparatus for interactive annotation and measurement of time series data with automatic marker sequencing |
US7363347B2 (en) | 2002-11-07 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Method and system for reestablishing connection information on a switch connected to plural servers in a computer network |
US7353533B2 (en) | 2002-12-18 | 2008-04-01 | Novell, Inc. | Administration of protection of data accessible by a mobile device |
US7054818B2 (en) | 2003-01-14 | 2006-05-30 | V-Enablo, Inc. | Multi-modal information retrieval system |
US7218779B2 (en) | 2003-01-21 | 2007-05-15 | Microsoft Corporation | Ink divider and associated application program interface |
US7212661B2 (en) | 2003-02-14 | 2007-05-01 | Ge Medical Systems Information Technologies. Inc. | Image data navigation method and apparatus |
US7210048B2 (en) * | 2003-02-14 | 2007-04-24 | Intel Corporation | Enterprise power and thermal management |
US7088374B2 (en) * | 2003-03-27 | 2006-08-08 | Microsoft Corporation | System and method for managing visual structure, timing, and animation in a graphics processing system |
US7119716B2 (en) | 2003-05-28 | 2006-10-10 | Legalview Assets, Limited | Response systems and methods for notification systems for modifying future notifications |
US7739715B2 (en) | 2003-06-24 | 2010-06-15 | Microsoft Corporation | Variable play speed control for media streams |
WO2005043360A1 (en) | 2003-10-21 | 2005-05-12 | Green Border Technologies | Systems and methods for secure client applications |
US7436535B2 (en) | 2003-10-24 | 2008-10-14 | Microsoft Corporation | Real-time inking |
US7716273B2 (en) * | 2003-10-24 | 2010-05-11 | Microsoft Corporation | Systems and methods for projecting content from computing devices |
US6989822B2 (en) * | 2003-11-10 | 2006-01-24 | Microsoft Corporation | Ink correction pad |
US20080074431A1 (en) * | 2003-11-19 | 2008-03-27 | Reuven Bakalash | Computing system capable of parallelizing the operation of multiple graphics processing units (GPUS) supported on external graphics cards |
US7567252B2 (en) | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
WO2005059699A2 (en) | 2003-12-15 | 2005-06-30 | Quantum Matrix Holdings, Llc | System and method for multi-dimensional organization, management, and manipulation of data |
US7113779B1 (en) | 2004-01-08 | 2006-09-26 | Iwao Fujisaki | Carrier |
US9626655B2 (en) | 2004-02-19 | 2017-04-18 | Intellectual Ventures I Llc | Method, apparatus and system for regulating electronic mail |
US7647415B1 (en) * | 2004-02-25 | 2010-01-12 | Sun Microsystems, Inc. | Dynamic web services stack |
US20050193396A1 (en) * | 2004-02-27 | 2005-09-01 | Stafford-Fraser James Q. | Computer network architecture and method of providing display data |
US20050256923A1 (en) | 2004-05-14 | 2005-11-17 | Citrix Systems, Inc. | Methods and apparatus for displaying application output on devices having constrained system resources |
EP1756702B1 (en) | 2004-05-21 | 2017-01-25 | CA, Inc. | Systems and methods for tracking screen updates |
US7454479B2 (en) * | 2004-05-28 | 2008-11-18 | Microsoft Corporation | Flexible teleport architecture |
US7173538B2 (en) * | 2004-06-25 | 2007-02-06 | Rm2, Inc. | Apparatus, system and method for monitoring a drying procedure |
US7990374B2 (en) * | 2004-06-29 | 2011-08-02 | Sensable Technologies, Inc. | Apparatus and methods for haptic rendering using data in a graphics pipeline |
US8127024B2 (en) * | 2004-10-29 | 2012-02-28 | Oracle International Corporation | Parameter passing in web based systems |
US8878851B2 (en) * | 2004-11-12 | 2014-11-04 | Synchronica Plc | Method and system for streaming documents, e-mail attachments and maps to wireless devices |
US20060161671A1 (en) | 2005-01-14 | 2006-07-20 | Citrix Systems, Inc. | Method and systems for capture and replay of remote presentation protocol data |
US8145777B2 (en) | 2005-01-14 | 2012-03-27 | Citrix Systems, Inc. | Method and system for real-time seeking during playback of remote presentation protocols |
US7774830B2 (en) | 2005-03-14 | 2010-08-10 | Microsoft Corporation | Access control policy engine controlling access to resource based on any of multiple received types of security tokens |
US8423673B2 (en) * | 2005-03-14 | 2013-04-16 | Citrix Systems, Inc. | Method and apparatus for updating a graphical display in a distributed processing environment using compression |
US7461274B2 (en) * | 2005-08-23 | 2008-12-02 | International Business Machines Corporation | Method for maximizing server utilization in a resource constrained environment |
US20080235320A1 (en) * | 2005-08-26 | 2008-09-25 | Bruce Joy | Distributed 3D Environment Framework |
US8266232B2 (en) * | 2005-10-15 | 2012-09-11 | International Business Machines Corporation | Hardware processing of commands within virtual client computing environment |
US7830388B1 (en) * | 2006-02-07 | 2010-11-09 | Vitie Inc. | Methods and apparatus of sharing graphics data of multiple instances of interactive application |
US8494661B2 (en) * | 2007-12-28 | 2013-07-23 | Server Technology, Inc. | Power distribution, management, and monitoring systems and methods |
US7868893B2 (en) * | 2006-03-07 | 2011-01-11 | Graphics Properties Holdings, Inc. | Integration of graphical application content into the graphical scene of another application |
US7619623B2 (en) | 2006-04-17 | 2009-11-17 | Microsoft Corporation | Perfect multidimensional spatial hashing |
US8104041B2 (en) * | 2006-04-24 | 2012-01-24 | Hewlett-Packard Development Company, L.P. | Computer workload redistribution based on prediction from analysis of local resource utilization chronology data |
US7502897B2 (en) * | 2006-06-28 | 2009-03-10 | Intel Corporation | Object based conflict detection in a software transactional memory |
US8352754B2 (en) * | 2006-11-15 | 2013-01-08 | Broadcom Corporation | Power management of PoE devices based on powered queue and unpowered queue of time order connection priority while maintaining reserve power |
JP5095293B2 (ja) | 2007-08-01 | 2012-12-12 | 東洋ゴム工業株式会社 | 空気入りタイヤ及びその製造方法 |
US8638336B2 (en) | 2007-10-20 | 2014-01-28 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphical data |
CA2699309A1 (en) * | 2007-10-21 | 2009-04-30 | Citrix Systems, Inc. | Systems and methods to adaptively load balance user sessions to reduce energy consumption |
US8006108B2 (en) * | 2007-11-08 | 2011-08-23 | International Business Machines Corporation | Dynamic selection of group and device power limits |
US8350863B2 (en) | 2008-01-27 | 2013-01-08 | Citrix Systems, Inc. | Methods and systems for improving resource utilization by delaying rendering of three dimensional graphics |
US8521476B2 (en) * | 2008-02-12 | 2013-08-27 | Accenture Global Services Limited | System for monitoring the energy efficiency of technology components |
AU2008355092A1 (en) * | 2008-04-21 | 2009-10-29 | Adaptive Computing Enterprises, Inc. | System and method for managing energy consumption in a compute environment |
US9830670B2 (en) * | 2008-07-10 | 2017-11-28 | Apple Inc. | Intelligent power monitoring |
US8054598B1 (en) * | 2009-01-16 | 2011-11-08 | Exaflop Llc | Negotiating capacity allocation among distributed current protection devices |
US8255709B2 (en) * | 2009-02-06 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | Power budgeting for a group of computer systems using utilization feedback for manageable components |
US20110010566A1 (en) * | 2009-07-07 | 2011-01-13 | International Business Machines Corporation | Power management by selective authorization of elevated power states of computer system hardware devices |
US20110102443A1 (en) * | 2009-11-04 | 2011-05-05 | Microsoft Corporation | Virtualized GPU in a Virtual Machine Environment |
US10853808B1 (en) | 2016-12-18 | 2020-12-01 | Mark Lawrence | Method and apparatus for controlled products |
-
2009
- 2009-01-27 US US12/360,838 patent/US8350863B2/en active Active
- 2009-01-27 EP EP10190906.7A patent/EP2315122B1/en active Active
- 2009-01-27 EP EP10190909.1A patent/EP2315123B1/en active Active
- 2009-01-27 US US12/360,843 patent/US20090189893A1/en not_active Abandoned
- 2009-01-27 WO PCT/US2009/032173 patent/WO2009094673A2/en active Application Filing
- 2009-01-27 US US12/360,842 patent/US20090189892A1/en not_active Abandoned
- 2009-01-27 CN CN2009801011246A patent/CN101918921B/zh not_active Expired - Fee Related
- 2009-01-27 US US12/360,841 patent/US8169436B2/en active Active
- 2009-01-27 US US12/360,844 patent/US20090189894A1/en not_active Abandoned
- 2009-01-27 CA CA2700225A patent/CA2700225A1/en not_active Abandoned
- 2009-01-27 AU AU2009206251A patent/AU2009206251B2/en not_active Ceased
- 2009-01-27 EP EP10190910.9A patent/EP2315124B1/en active Active
- 2009-01-27 EP EP09704877.1A patent/EP2245536B1/en active Active
- 2009-01-27 EP EP10190907.5A patent/EP2293192B1/en active Active
-
2010
- 2010-04-25 IL IL205332A patent/IL205332A0/en unknown
-
2012
- 2012-04-30 US US13/460,186 patent/US8405654B2/en active Active
-
2013
- 2013-03-18 US US13/846,682 patent/US8665265B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742289A (en) * | 1994-04-01 | 1998-04-21 | Lucent Technologies Inc. | System and method of generating compressed video graphics images |
WO2003075116A2 (en) * | 2002-03-01 | 2003-09-12 | T5 Labs Ltd | Centralised interactive graphical application server |
CN101101505A (zh) * | 2006-07-07 | 2008-01-09 | 华为技术有限公司 | 一种实现三维增强现实的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US8665265B2 (en) | 2014-03-04 |
EP2315123B1 (en) | 2021-03-31 |
EP2315124A3 (en) | 2011-05-04 |
AU2009206251B2 (en) | 2014-03-27 |
US20090189893A1 (en) | 2009-07-30 |
EP2315124A2 (en) | 2011-04-27 |
US20130215110A1 (en) | 2013-08-22 |
EP2315122A3 (en) | 2011-05-04 |
EP2315122B1 (en) | 2020-10-28 |
US8405654B2 (en) | 2013-03-26 |
CN101918921A (zh) | 2010-12-15 |
EP2315124B1 (en) | 2020-08-05 |
EP2315122A2 (en) | 2011-04-27 |
US20090189890A1 (en) | 2009-07-30 |
AU2009206251A1 (en) | 2009-07-30 |
EP2245536A2 (en) | 2010-11-03 |
US20120218260A1 (en) | 2012-08-30 |
EP2293192A3 (en) | 2011-05-04 |
EP2293192B1 (en) | 2021-03-31 |
US8350863B2 (en) | 2013-01-08 |
EP2315123A3 (en) | 2011-05-11 |
WO2009094673A2 (en) | 2009-07-30 |
WO2009094673A3 (en) | 2009-10-01 |
EP2245536B1 (en) | 2018-10-24 |
US20090189892A1 (en) | 2009-07-30 |
US20090189891A1 (en) | 2009-07-30 |
CA2700225A1 (en) | 2009-07-30 |
EP2293192A2 (en) | 2011-03-09 |
EP2315123A2 (en) | 2011-04-27 |
US20090189894A1 (en) | 2009-07-30 |
IL205332A0 (en) | 2010-12-30 |
US8169436B2 (en) | 2012-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101918921B (zh) | 用于远程提供三维图形的方法和系统 | |
EP2417518B1 (en) | Methods and systems for prioritizing dirty regions within an image | |
KR101640904B1 (ko) | 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템 | |
CN101849224B (zh) | 用于远程处理三维图像数据的方法和系统 | |
EP2248101B1 (en) | Graphics remoting architecture | |
CN102447901B (zh) | 用于处理要传送到远程计算设备的图形数据的方法和系统 | |
US20140059538A1 (en) | Virtual machine state tracking using object based storage | |
WO2016126256A1 (en) | Detecting content types and window regions in composited display frames |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131204 |