CN112068908A - 图形处理方法及相关装置和设备 - Google Patents
图形处理方法及相关装置和设备 Download PDFInfo
- Publication number
- CN112068908A CN112068908A CN202010738340.XA CN202010738340A CN112068908A CN 112068908 A CN112068908 A CN 112068908A CN 202010738340 A CN202010738340 A CN 202010738340A CN 112068908 A CN112068908 A CN 112068908A
- Authority
- CN
- China
- Prior art keywords
- api
- graphics
- graphic
- library
- calling
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 242
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 45
- 239000000872 buffer Substances 0.000 claims description 37
- 238000013507 mapping Methods 0.000 claims description 36
- 230000005540 biological transmission Effects 0.000 abstract description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 74
- 230000006870 function Effects 0.000 description 61
- 238000010586 diagram Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 238000009877 rendering Methods 0.000 description 6
- 230000009191 jumping Effects 0.000 description 5
- 230000008676 import Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 102100021662 Baculoviral IAP repeat-containing protein 3 Human genes 0.000 description 1
- 101000896224 Homo sapiens Baculoviral IAP repeat-containing protein 3 Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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)
- Image Generation (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种图形处理方法及相关装置和设备,该方法包括:获取应用程序发起的对应第一图形API的第一绘图指令;根据第一绘图指令调用第一图形库的第一图形API以执行第一绘图指令,并向应用程序发送第一处理通知;生成第一图形API的调用信息,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码;将第一图形API的调用信息发送至客户端。通过以上方案,服务器向客户端单向数据传输图形API的调用信息,可降低对网络延时的要求,且在网络断线状态下保证服务器的应用程序正常运行,从而提高用户体验。
Description
技术领域
本申请涉及信息技术领域,通过服务器对客户端的单向数据传输来实现远程界面绘制。
背景技术
随着移动互联网和云计算的发展,由于云计算便于管理、存储容量大、高稳定性等特点,将应用程序从客户端迁移到服务器成为未来发展的趋势,在将客户端的应用程序迁移到服务器后,在服务器运行的应用程序的图形界面(User Interface,UI)需通过广域网显示到终端,使得客户端和服务器的数据交互越来越频繁。
现有技术中,基于客户端-服务器(client-server,C-S)模式的开放图形库(OpenGraphics Library,Opengl)可实现应用程序的远程显示界面绘制,在客户端-服务器架构中,客户端设置有图形处理器(Graphics Processing Unit,GPU),且安装有Opengl图形库,在Opengl图形库中设置有图形应用程序编程接口(Application Programming Interface,API)。而服务器没有设置GPU,服务器也没有安装Opengl图形库,但服务器上运行有应用程序,该应用程序需要在客户端的Opengl图形库调用图形API。当应用程序需要调用图形API时,服务器将需要调用的图形API发送至客户端,客户端在本地的Opengl图形库调用图形API,在图形API调用过程中,客户端运行图形API的绘图代码,该绘图代码控制客户端本地的GPU进行图形绘制。
在现有技术中,每帧图像的生成,需要多次图形API的调用,且图形API的调用大多是以串行调用为主,举例而言,服务器的应用程序需要依序调用2个图形API,应用程序在服务器本地不进行2个图形API的调用,而是分别将2个图形API发送至客户端,由客户端进行图形API的调用。
在现有技术中,服务器的应用程序将第一个图形API及第一图形API的入口参数发送至客户端,并在上述数据发送至客户端之后进行等待。在应用程序等待期间,客户端根据第一图形API的入口参数在客户端本地的Opengl图形库调用第一个图形API,在调用完毕之后,客户端将用于通知应用程序第一图形API调用完毕的处理通知发回服务器的应用程序,服务器的应用程序在接收到客户端发送的处理通知后,才能结束等待,将第二图形API的入口参数和第二图形API发送至客户端。
因此,现有技术中,服务器与客户端之间每进行一次图形API调用时均需要进行一次双向的数据传输,服务器需花费时间来等待客户端返回的处理通知。
在低延时网络,如局域网,上述的远程图形API调用的网络延时在1毫秒以内,而1秒可以完成大于1000次调用,在所需绘制的图形界面不复杂的情况下,可以提供较好的体验。
但是,如果在广域网,尤其是在无线广域网的环境下,如3G或4G网络,上述远程图形API调用的网络延时在100~300毫秒之间,则1秒内最多完成10次调用,只有局域网1秒内可执行图形API数量的1%,因此,现有技术对网络延时要求较高,在高延时网络无法提供良好的用户体验。
发明内容
本申请公开了一种图形处理方法及相关装置和设备,服务器向客户端单向数据传输图形API的调用信息,可降低对网络延时的要求,且在网络断线状态下保证服务器的应用程序正常运行,从而提高用户体验。
第一方面,本申请提供一种图形处理方法,该方法应用于服务器,具体的,服务器设置有第一图形库和应用程序,服务器与客户端具有网络连接,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应。基于以上配置环境,该图形处理方法包括以下步骤:获取应用程序发起的对应第一图形API的第一绘图指令。根据第一绘图指令调用第一图形库的第一图形API以执行第一绘图指令,并向应用程序发送第一处理通知。第一处理通知用于通知应用程序第一图形API调用完毕,生成第一图形API的调用信息,具体地,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,并且,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码。最后,将第一图形API的调用信息发送至客户端。
由于服务器的应用程序发起的第一绘图指令对应的第一图形API在调用完毕之后,应用程序可马上在本地获取用于通知应用程序第一图形API调用完毕的第一处理通知,因此服务器的应用程序可不依赖于客户端而独立运行,即便客户端死机,或客户端与服务器之间的连接中断,也不会影响服务器的应用程序的运行,可提高用户体验。
进一步,服务器生成携带有第一图形API涉及的参数的第一图形API的调用信息,并将第一图形API的调用信息发送至客户端,客户端可根据第一图形API涉及的参数调用第二图形库中的第一图形API,由于服务器的应用程序已经收到第一处理通知,客户端调用完第二图形库中的第一图形API之后,无需再发送处理通知给服务器的应用程序,因此服务器与客户端之间实现了单向传输,从而可降低对网络延时的要求。
在第一方面的第一种可能的实现方式中,该图形处理方法还包括以下步骤:确定第一绘图指令是否需要返回出口参数,在第一绘图指令需要返回出口参数的情况下,在第一处理通知进一步设置服务器调用第一图形API所产生的出口参数,并且,第一图形API的调用信息具体包括第一图形API的入口参数、服务器调用第一图形API所产生的出口参数和第一图形API的识别码。
在第一绘图指令需要返回出口参数的情况下,在第一处理通知进一步设置服务器调用第一图形API所产生的出口参数,使得应用程序通过第一处理通知可获取服务器调用第一图形API所产生的出口参数,在后续调用到输入参数为第一图形API的出口参数的其他图形API时,可将获取到的出口参数作为其他图形API的入口参数,从而保证应用程序正常运行。
并且,将第一图形API的入口参数、服务器调用第一图形API所产生的出口参数和第一图形API的识别码设置在发送至客户端的第一图形API的调用信息中,使得客户端可根据第一图形API的入口参数、服务器调用第一图形API所产生的出口参数和第一图形API的识别码在本地调用第二图形库中的第一图形API。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在第一图形API不需要返回出口参数的情况下,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
在第一绘图指令不需要返回出口参数的情况下,将第一图形API的入口参数和第一图形API的识别码设置在发送至客户端的第一图形API的调用信息中,使得客户端可根据第一图形API的入口参数和第一图形API的识别码本地调用第二图形库中的第一图形API。
根据第一方面的第一种可能的实现方式,在第三种可能的实现方式中,该图形处理方法还包括以下步骤:接收应用程序根据第一处理通知发起的第二绘图指令,具体地,第二绘图指令对应第二图形API,第二图形API的入口参数为服务器调用第一图形API所产生的出口参数。根据第二绘图指令调用第一图形库的第二图形API,并向应用程序发送第二处理通知,具体地,第二处理通知用于通知应用程序第二图形API调用完毕。生成第二图形API的调用信息,具体地,第二图形API的调用信息用于指示客户端调用第二图形库中的第二图形API,并且,第二图形API的调用信息包括第二图形API涉及的参数,以及第二图形API的识别码。之后,将第二图形API的调用信息发送至客户端。
由于在第一方面的第一种可能的实现方式中,第一处理通知进一步设置服务器调用第一图形API所产生的出口参数,因此,应用程序可从第一处理通知获取服务器调用第一图形API所产生的出口参数,并将第一图形API所产生的出口参数作为第二图形API的入口参数来调用第一图形库的第二图形API,并向应用程序发送第二处理通知,从而使得应用程序继续运行,因此,即便第二图形API与第一图形API存在依赖关系,应用程序也无需等待客户端返回数据,从而节约时间,降低对网络延时的要求,提高用户体验。
根据第一方面的第三种可能的实现方式,在第四种可能的实现方式中,该图形处理方法还包括:将第一图形API的调用信息和第二图形API的调用信息保存在先进先出队列,在满足预定条件后,将先进先出队列中的第一图形API的调用信息和第二图形API的调用信息同时发送给客户端。
应用程序的运行速度较快,应用程序运行时,单位时间内产生多组调用信息,通过打包方式在满足预定条件后同时发送多组调用信息至客户端,相对于每产生一组调用信息就发送一次调用信息给客户端而言,本实现方式在服务器进行多次图形API的调用之后,仅需向客户端发送一次数据,因此可有效节约处理开销。
在一种可能的实现方式中,预定条件为超出预定时间。
在一种可能的实现方式中,预定条件为先进先出队列中的数据超出预定数据大小。
在一种可能的实现方式中,该图形处理方法还包括以下步骤:将第一图形API的调用信息和第二图形API的调用信息写入文件中,并存储该文件。
客户端可隔一定时间后(如几天后)再从服务器下载该文件,依次读取该文件中记录的多组调用信息,从而实现对应用程序的绘图界面的回放。
第二方面,本申请提供一种图形处理方法,该方法应用于客户端,具体地,客户端与服务器具有网络连接,服务器设置有第一图形库和应用程序,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应。基于以上配置环境,图形处理方法具体包括以下步骤:接收服务器发送的第一图形库中的第一图形API的调用信息,具体地,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码。根据第一图形API的调用信息中的第一图形API的识别码和第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库中的第一图形API。
服务器在第一图形库的第一图形API调用完成之后,生成携带有第一图形API涉及的参数的第一图形API的调用信息,并将第一图形API的调用信息发送至客户端,客户端从服务器接收第一图形API的调用信息,可根据第一图形API涉及的参数调用第二图形库中的第一图形API,由于服务器的第一图形库的第一图形API调用已经完成,因此,客户端调用完第二图形库中的第一图形API之后,无需再发送处理通知给服务器的应用程序,因此服务器与客户端之间实现了单向传输,因此可降低对网络延时的要求。
在第二方面的第一种可能的实现方式中,该图形处理方法还包括:在第一图形API的调用信息中的第一图形API涉及的参数包括服务器调用第一图形API所产生的出口参数的情况下,获取客户端调用第一图形API所产生的出口参数,并建立服务器调用第一图形API所产生的出口参数与客户端调用第一图形API所产生的出口参数的映射关系。
由于客户端与服务器之间的硬件配置条件不同,因此,服务器调用第一图形API所产生的出口参数与客户端调用第一图形API产生的出口参数也不相同,在第一图形API产生的出口参数为其他图形API的入口参数的情况下,客户端不能将第一图形API的调用信息携带的服务器调用第一图形API所产生的出口参数直接作为其他图形API的入口参数,因此客户端建立服务器调用第一图形API所产生的出口参数与客户端调用第一图形API所产生的出口参数的映射关系,客户端可通过服务器调用第一图形API所产生的出口参数查询映射关系,来获取客户端调用第一图形API所产生的出口参数,并将客户端调用第一图形API所产生的出口参数作为其他图形API的入口参数。从而克服由于客户端与服务器之间的硬件配置条件不同而造成的出口参数不同步的技术问题。
根据第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该方法还包括:接收服务器发送的第二图形API的调用信息,具体地,第二图形API的调用信息包括第二图形API涉及的参数以及第二图形API的识别码,并且,第二图形API的入口参数为服务器调用第一图形API所产生的出口参数。根据第二图形API的识别码确定第二图形API,根据第二图形API的入口参数查询映射关系,获取第二图形API的入口参数在映射关系中对应的参数,具体的,第二图形API的入口参数在映射关系中对应的参数为客户端调用第一图形API所产生的出口参数。
具体地,在第一图形API产生的出口参数为第二图形API的入口参数的情况下,客户端不能将第一图形API的调用信息携带的服务器调用第一图形API所产生的出口参数直接作为第二图形API的入口参数,因此客户端可通过服务器调用第一图形API所产生的出口参数查询映射关系,来获取客户端调用第一图形API所产生的出口参数,并将客户端调用第一图形API所产生的出口参数作为第二图形API的入口参数。从而克服由于客户端与服务器之间的硬件配置条件不同而造成的出口参数不同步的技术问题。
根据第二方面的第二种可能的实现方式中,在第三种可能的实现方式中,该方法还包括:接收服务器同时发送第一图形API的调用信息和第二图形API的调用信息。
客户端接收服务器同时发送的数据,并从该数据中依次读取到第一图形API的调用信息和第二图形API的调用信息,无需分别接收第一图形API的调用信息和第二图形API的调用信息,可有效节约处理开销。
在第二方面的一种可能的实现方式中,根据第一图形API的调用信息中的第一图形API的识别码和第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库中的第一图形API具体包括:根据第一图形API的调用信息中的第一图形API的识别码确定第一图形API,并根据第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库中的第一图形API。
第三方面,本申请提供一种图形处理方法,该方法应用于服务器,具体地,服务器设置有第一图形库和应用程序,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应。基于以上配置环境,该方法包括以下步骤:获取应用程序发起的第一绘图指令,具体地,第一绘图指令对应第一图形API。确定第一图形API为第一图形库的预定图形API时,拒绝调用第一图形库的第一图形API,向应用程序发送第一处理通知,具体地,第一处理通知用于通知应用程序第一图形API调用完毕。生成第一图形API的调用信息,具体地,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,并且,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码。之后,将第一图形API的调用信息发送至客户端。
当第一图形API为预定图形API时,拒绝调用服务器的应用程序发起的第一绘图指令对应的第一图形API,并发送第一处理通知给应用程序,以通知应用程序第一图形API调用完毕,因此服务器的应用程序可不依赖于客户端而独立运行,即便客户端死机,或客户端与服务器之间的连接中断,也不会影响服务器的应用程序的运行,可提高用户体验。
并且,由于服务器无需将绘制好的图形显示给用户,因此即使拒绝调用服务器的应用程序发起的第一绘图指令对应的第一图形API,从而使得服务器的GPU不工作,也不会影响用户体验。
进一步,服务器生成携带有第一图形API涉及的参数的第一图形API的调用信息,并将第一图形API的调用信息发送至客户端,客户端可根据第一图形API涉及的参数调用第二图形库中的第一图形API,由于服务器的应用程序已经收到第一处理通知,因此,客户端调用完第二图形库中的第一图形API之后,无需再发送处理通知给服务器的应用程序,因此服务器与客户端之间实现了单向传输,因此可降低对网络延时的要求。
在第三方面的第一种可能的实现方式中,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
根据第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,预定图形API包括着色器启动图形API、光栅化启动图形API、清除缓冲区图形API或交换缓冲区图形API中的任意一种。
着色器启动图形API、光栅化启动图形API、清除缓冲区图形API以及交换缓冲区图形API所对应的绘图代码在执行时,需要服务器的GPU进行大量的运算,在判断到当前调用的第一图形API为预定图形API时,拒绝调用第一图形API,可使得GPU避免进行大量运算,从而可节约服务器上宝贵的运算资源,使得服务器可以运行数量更多的应用程序。
在一种可能的实现方式中,预定图形API用于控制服务器的GPU进行色器启动、光栅化启动、清除缓冲区或交换缓冲区。
在一种可能的实现方式中,预定图形API用于控制服务器的GPU进行大量的图形运算。第四方面,本申请提供一种图形处理装置,设置于服务器,该服务器还设置有第一图形库和应用程序,服务器与客户端具有网络连接,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应,该图形处理装置包括:绘图指令获取模块,用于获取应用程序发起的第一绘图指令,具体地,第一绘图指令对应第一图形API,图形API调用模块,用于根据第一绘图指令调用第一图形库的第一图形API以执行第一绘图指令,并向应用程序发送第一处理通知,具体地,第一处理通知用于通知应用程序第一图形API调用完毕,调用信息生成模块,用于生成第一图形API的调用信息,具体地,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,并且,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码,调用信息发送模块,用于将第一图形API的调用信息发送至客户端。
第四方面或第四方面任意一种实现方式是第一方面或第一方面任意一种实现方式对应的装置实现,第一方面或第一方面任意一种实现方式中的描述适用于第四方面或第四方面任意一种实现方式,在此不再赘述。
第五方面,本申请提供一种图形处理装置,设置于客户端,客户端与服务器具有网络连接,服务器设置有第一图形库,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应,图形处理装置包括:调用信息接收模块,用于接收服务器发送的第一图形API的调用信息,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码,图形API调用模块,用于根据第一图形API的调用信息中的第一图形API的识别码确定第一图形API,并根据第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库中的第一图形API。
第五方面或第五方面任意一种实现方式是第二方面或第二方面任意一种实现方式对应的装置实现,第二方面或第二方面任意一种实现方式中的描述适用于第五方面或第五方面任意一种实现方式,在此不再赘述。
第六方面,本申请提供一种图形处理装置,设置于服务器,服务器还设置有第一图形库和应用程序,服务器与客户端具有网络连接,客户端设置有第二图形库,第一图形库中包括多个图形应用程序编程接口API,第二图形库中包括多个图形API,第一图形库中至少有M个图形API与第二图形库中的M个图形API一一对应,图形处理装置包括:绘图指令获取模块,用于获取应用程序发起的第一绘图指令,其中第一绘图指令对应第一图形API,图形API调用模块,用于确定第一图形API为第一图形库的预定图形API时,拒绝调用第一图形库的第一图形API,图形API调用模块,还用于向应用程序发送第一处理通知,第一处理通知用于通知应用程序第一图形API调用完毕,调用信息生成模块,用于生成第一图形API的调用信息,具体地,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,并且,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码,调用信息发送模块,用于将第一图形API的调用信息发送至客户端。
第六方面或第六方面任意一种实现方式是第三方面或第三方面任意一种实现方式对应的装置实现,第三方面或第三方面任意一种实现方式中的描述适用于第六方面或第六方面任意一种实现方式,在此不再赘述。
第七方面,本申请提供一种服务器,包括处理器和存储器,存储器存储有程序指令,处理器运行程序指令以执行第一方面或第一方面任意一种实现方式提供的图形处理方法。
第八方面,本申请提供一种客户端,包括处理器和存储器,存储器存储有程序指令,处理器运行程序指令以执行第二方面或第二方面任意一种实现方式提供的图形处理方法。
第九方面,本申请提供一种服务器,包括处理器和存储器,存储器存储有程序指令,处理器运行程序指令以执行第三方面或第三方面任一一种实现方式提供的图形处理方法。
第十方面,本申请提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被存储控制器运行时,该存储控制器执行前述第一方面或第一方面的任意一种实现方式提供的图形处理方法。该存储介质包括但不限于只读存储器,随机访问存储器,快闪存储器、HDD或SSD。
第十一方面,本申请提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被存储控制器运行时,该存储控制器执行前述第二方面或第二方面任意一种实现方式提供的图形处理方法。该存储介质包括但不限于只读存储器,随机访问存储器,快闪存储器、HDD或SSD。
第十二方面,本申请提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被存储控制器运行时,该存储控制器执行前述第三方面或第三方面任意一种实现方式中提供的图形处理方法。该存储介质包括但不限于只读存储器,随机访问存储器,快闪存储器、HDD或SSD。
第十三方面,本申请提供了一种计算机程序产品,该计算机程序产品包括程序代码,当该计算机程序产品被存储控制器执行时,该存储控制器执行前述第一方面或第一方面的任意一种实现方式提供的图形处理方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面的任意一种实现方式提供的图形处理方法的情况下,可以下载该计算机程序产品至存储控制器并在该存储控制器上运行该计算机程序产品。
第十四方面,本申请提供了一种计算机程序产品,该计算机程序产品包括程序代码,当该计算机程序产品被存储控制器执行时,该存储控制器执行前述第二方面或第二方面任意一种实现方式提供的图形处理方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第二方面或第二方面任意一种实现方式提供的图形处理方法的情况下,可以下载该计算机程序产品至存储控制器并在该存储控制器上运行该计算机程序产品。
第十五方面,本申请提供了一种计算机程序产品,该计算机程序产品包括程序代码,当该计算机程序产品被存储控制器执行时,该存储控制器执行前述第三方面或第三方面的任意一种实现方式提供的图形处理方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第三方面或第三方面任意一种实现方式提供的图形处理方法的情况下,可以下载该计算机程序产品至存储控制器并在该存储控制器上运行该计算机程序产品。
附图说明
图1是根据本发明实施例的远程界面显示系统的结构示意图;
图2是根据本发明实施例的应用程序调用图形API的示意图;
图3是根据本发明实施例的图形处理方法的数据交互图;
图4是根据本发明实施例的图形处理方法的流程图;
图5是根据本发明实施例的应用程序调用图形API的另一示意图;
图6是根据本发明实施例的第二图形处理装置调用图形API的示意图;
图7是根据本发明实施例的服务器的数据流向图;
图8是根据本发明实施例的图形处理方法的另一流程图;
图9是根据本发明实施例的客户端的数据流向图;
图10是根据本发明实施例的图形处理装置的装置结构示意图;
图11是根据本发明实施例的图形处理装置的另一装置结构示意图;
图12是根据本发明实施例的图形处理装置的另一装置结构示意图;
图13是根据本发明实施例的服务器的装置结构示意图;
图14是根据本发明实施例的客户端的装置结构示意图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
首先请参见图1,图1是根据本发明实施例的远程界面显示系统的结构示意图。如图1所示,远程界面显示系统包括服务器10和客户端20,客户端20通过网络30与服务器10连接。
服务器10包括硬件100、操作系统102、第一图形库103、应用程序104以及第一图形处理装置105,硬件10设置有GPU 111、网卡112、CPU 113以及内存114。
值得注意的是,在另一些示例中,服务器10可不设置GPU 111,由CPU 113对GPU111进行模拟,通过CPU 113来实现GPU 111的绘图功能。
第一图形库103设置有多个图形API,每一图形API对应特定的绘图代码,其中,绘图代码用于控制GPU 111进行绘图,如句柄申请、图形渲染、着色、更新缓冲区、以及显示图像等,应用程序104加载第一图形库103,应用程序104在运行过程中,可直接调用已加载的第一图形库103中的图形API。
操作系统102设置有网卡112的网卡驱动程序,第一图形处理装置105可根据网卡112的网卡驱动程序控制网卡112通过网络30接收或发送数据,操作系统102还设置有GPU111的显卡驱动程序,应用程序104以及第一图形处理装置105根据GPU 111的显卡驱动程序控制GPU 111进行绘图。
第一图形库103、应用程序104以及第一图形处理装置105分别在操作系统102上运行,第一图形库103可例如为Opengl图形库、Vulkan图形库或其他图形库。
举例而言,第一图形库103为Opengl图形库,第一图形库103中的图形API可为eglCreateWindowSurface、eglCreateContext、glCreateShader、glCompileShader、glGenBuffers、glBufferData、glDrawArrays、或eglSwapBuffers。
其中,eglCreateWindowSurface用于申请图形缓冲区,eglCreateContext用于申请上下文句柄,glCreateShader用于申请着色器句柄,glCompileShader用于编译着色器,glGenBuffers申请顶点和纹理缓冲句柄,glBufferData用于发送顶点和纹理数据到客户端,glDrawArrays用于开始绘制像素到后台缓冲区,eglSwapBuffers用于交换前后缓冲区。
在本发明实施例中,应用程序104为客户端20部署在服务器10的应用程序,例如为2D游戏、3D游戏、邮箱以及社交软件等。
在本发明实施例中,应用程序104启动后,可根据应用程序104的程序代码依次调用第一图形库103的N个图形API,其中,N个图形API的调用顺序预先记录在应用程序104的程序代码中。
在另一些示例中,程序指令也可设置为使得应用程序104循环调用N个图形API。
举例而言,可进一步参见图2,图2是根据本发明实施例的应用程序调用图形API的示意图。如图2所示,应用程序104根据自身的程序代码依次调用第一图形库103中的图形API:eglCreateWindowSurface、eglCreateContext、glCreateShader、glCompileShader、glGenBuffers、glBufferData、glDrawArrays、以及eglSwapBuffers。
并且,在调用图形API的过程中,针对eglCreateWindowSurface、eglCreateContext、glCreateShader、以及glGenBuffers产生出口参数,针对glCompileShader、glBufferData、glDrawArrays、以及eglSwapBuffers不产生出口参数,以空(void)表示。
并且,有些图形API之间存在依赖关系,即部分图形API的入口参数为其他图形API的出口参数,例如针对eglCreateContext而言,其入口参数之一surfaceA为eglCreateWindowSurface的出口参数。针对glCompileShader而言,其入口参数shader_handle为glCreateshader的出口参数。针对eglSwapBuffers而言,其入口参数之一surfaceA为eglCreateWindowSurface的出口参数。
进一步,图2所示的各图形API的入参:egldisplay,eglconfig,eglwindow,attrib_list,eglcontexts,GL_FRAGMENT_SHADER,count,GL_ARRAY_BUFFER,size,Vertices,GL_STATIC_DRAW,GL_TRIANGLES,first均为常数,其具体数值预先记录在程序代码中。
在程序员进行编程过程中,作为常数的入口参数预先记录在程序代码中,应用程序104在调用图形API时可直接从程序代码获取该入口参数。而在当前调用的图形API的入口参数为其他图形API的出口参数时,即当前调用的图形API与其他图形API之间存在依赖关系时,应用程序104需在其他图形API调用完毕后之后,才能将其他图形API返回的出口参数作为当前调用的图形API的入口参数,来调用当前需调用的图形API。
举例而言,请继续参见图2,针对glCreateShader,其入口参数GL_FRAGMENT_SHADER可直接从程序代码获得,针对glCompileShader,其入口参数shader_handle为glCreateShader的出口参数,因此应用程序104需在glCreateShader调用完毕并产生出口参数shader_handle之后,才能将glCreateShader产生的出口参数shader_handle作为glCompileShader的入口参数,来调用glCompileShader。
值得注意的是,在一些示例中,第一图形库103可为第三方厂商提供的图形库,在另一些示例中,第一图形103可为自定义的图形库,此时,第一图形处理装置105可与第一图形库103整合在一起,在图1中以虚线框表示。
以下对客户端20进行介绍,请继续参见图1,如图1所示,客户端20包括硬件200、操作系统202、第二图形库203以及第二图形处理装置204,其中,硬件200设置有GPU 211、网卡212、显示屏213、CPU 214以及内存215。
值得注意的是,在另一些示例中,客户端20可不设置GPU 211,由CPU 214对GPU211进行模拟,通过CPU 214实现GPU 211的绘图功能。
与第一图形库103类似,第二图形库203同样设置有多个图形API,第二图形库203的每一图形API对应特定的绘图代码,第二图形处理装置204加载第二图形库203,第二图形处理装置204可直接调用已加载的第二图形库203中的图形API,从而控制GPU 211进行绘图。
操作系统202设置有网卡212的网卡驱动程序,第二图形处理装置204可根据网卡212的网卡驱动程序控制网卡212通过网络30接收或发送数据。操作系统202还设置有GPU211的显卡驱动程序,第二图形处理装置204通过GPU 211的显卡驱动程序控制GPU 211进行绘图。操作系统202还设置有显示屏213的显示屏驱动程序,当GPU 211需要显示绘制好的界面时,显示屏驱动程序控制显示屏213显示绘制好的界面。
第二图形库203以及第二图形处理装置204分别在操作系统202上运行,第二图形库203可例如为Opengl图形库、Vulkan图形库或其他常用的图形库。
举例而言,与第一图形库103类似,在第二图形库203为Opengl图形库时,第二图形库203中的图形API可为eglCreateWindowSurface、eglCreateContext、glCreateShader、glCompileShader、glGenBuffers、glBufferData、glDrawArrays、或eglSwapBuffers。
其中,上述图形API的功能于上文已经得到描述,于此不作赘述。
在本发明实施例中,第一图形库103和第二图形库203为相同类型的图形库,第一图形库103中至少有M个图形API与所述第二图形库203中的M个图形API一一对应。
举例而言,第一图形库103和第二图形库203均为Opengl图形库,且设置有相同的图形API:eglCreateWindowSurface,第一图形库103和第二图形库203中的eglCreateWindowSurface的作用相同,均用于申请图形缓冲区,但第一图形库103的eglCreateWindowSurface和第二图形库203的eglCreateWindowSurface的实现细节有可能不一样。具体而言,第一图形库103的eglCreateWindowSurface可由C++语言实现,而第二图形库203中的eglCreateWindowSurface可由java语言实现。在本发明实施例中,虽然第一图形库103的eglCreateWindowSurface和第二图形库203的eglCreateWindowSurface实现细节可能不一样,但由于二者作用相同,且设置在相同类型的图形库,因此第一图形库103的eglCreateWindowSurface和第二图形库203的eglCreateWindowSurface具有一一对应关系,可称为相同的图形API。
同理,第一图形库103和第二图形库203中的eglCreateContext、glCreateShader、glCompileShader、glGenBuffers、glBufferData、glDrawArrays、或eglSwapBuffers均具有一一对应关系。
值得注意的是,上述介绍的图形API仅为Opengl图形库中的一部分,本发明实施例亦可适用于Opengl图形库中的其他图形API,并可以适用于Vulkan图形库或其他常用的图形库中的图形API,只要保证服务器10和客户端20具有同一类型的图形库即可。
在本发明实施例中,应用程序104预先加载第一图形库103,在加载第一图形库103之后,应用程序104获知第一图形库103的图形API的函数地址,当应用程序104调用第一图形库103的图形API时,发起携带有该图形API的入口参数和跳转命令的绘图指令,该跳转命令用于跳转至所要调用的图形API的函数地址,应用程序104根据跳转命令跳转至该函数地址并根据入口参数执行函数地址上的绘图代码。
进一步,第二图形处理装置204预先加载第二图形库203,在加载第二图形库203之后,第二图形处理装置204获知第二图形库203的图形API的函数地址,当第二图形处理装置204调用第二图形库203的图形API时,发起携带有该图形API的入口参数和跳转命令的绘图指令,该跳转命令用于跳转至图形API的函数地址,第二图形处理装置204根据跳转命令跳转至该函数地址并根据入口参数执行函数地址上的绘图代码。
在一些示例中,若图形API以C++语言编写,图形API具体表现为需要调用的图形API在服务器10的函数地址,其中,该函数地址具体为内存地址。
在另一些示例中,若图形API以java语言编写,则图形API具体表现为需要调用的图形API在服务器10的函数、方法或对象,java虚拟机将图形API的函数、方法或对象转换为在服务器10的函数地址。
值得注意的是,在本发明实施例中,以函数地址为例对图形API进行举例说明。
为了进一步清楚说明,以下请参见图3,图3是根据本发明实施例的图形处理方法的数据交互图。如图3所示,本发明实施例的图形处理方法包括以下步骤:
步骤S1:应用程序104发起第一绘图指令,第一图形处理装置105获取第一绘图指令,其中,第一绘图指令对应于第一图形API,第一绘图指令携带有第一图形API的入口参数和用于跳转至第一图形API的函数地址的跳转命令。
第一绘图指令对应于第一图形库103的第一图形API和/或第二图形库203中的第一图形API。
其中,应用程序104发起第一绘图指令后,进行等待,直到获取第一绘图指令的执行结果才能继续运行。
在一些示例中,应用程序104发起第一绘图指令,并执行第一绘图指令,跳转到跳转命令所要跳转的函数地址时,第一图形处理装置105通过钩子(HOOK)截获第一绘图指令。
步骤S2:第一图形处理装置105根据第一绘图指令调用第一图形库的第一图形API以执行第一绘图指令。
其中,第一图形处理装置105根据第一绘图指令携带的跳转指令跳转至第一图形API的函数地址,根据第一绘图指令携带的第一图形API的入口参数执行第一图形API的函数地址上的绘图代码,在绘图代码执行时,可控制GPU 111进行图像渲染,从而完成对第一图形库的第一图形API的调用以及第一绘图指令的执行。
在本步骤中,第一图形处理装置105根据第一绘图指令调用第一图形库的第一图形API之前,可进一步确认第一图形API是否为第一图形库的预定图形API,其中,预定图形API调用时,GPU 111需进行大量的运算。
在本步骤中,而第一图形处理装置105确定第一图形API非第一图形库的预定图形API时,根据第一绘图指令调用第一图形库的第一图形API以执行第一绘图指令。并且,第一图形处理装置105确定第一图形API为第一图形库的预定图形API时,拒绝调用第一图形库的第一图形API。
步骤S3:第一图形处理装置105产生第一处理通知,并发送第一处理通知至应用程序104,其中,第一处理通知作为第一绘图指令的执行结果用于通知应用程序104第一图形API调用完毕。
在本步骤中,第一图形处理装置105可进一步确定第一绘图指令是否需要返回出口参数,在第一绘图指令需要返回出口参数的情况下,第一处理通知还包括服务器调用第一图形API所产生的出口参数。
在第一绘图指令需要返回出口参数的情况下,在第一处理通知进一步携带有服务器10调用第一图形API所产生的出口参数,使得应用程序104通过第一处理通知可获取服务器10调用第一图形API所产生的出口参数,在应用程序104后续调用到输入参数为第一图形API的出口参数的其他图形API时,可将获取到的出口参数作为其他图形API的入口参数,从而保证应用程序104正常运行。
并且,当在步骤S3中,第一图形处理装置105确定第一图形API为第一图形库103的预定图形API,并拒绝调用第一图形库103的第一图形API时,在本步骤中,第一图形处理装置105仍产生用于通知应用程序104第一图形API调用完毕的第一处理通知,并发送第一处理通知至应用程序104。
其中,预定图形API为需要GPU 111进行大量运算的图形API。
图形API包括着色器启动图形API、光栅化启动图形API、清除缓冲区图形API或交换缓冲区图形API中的任意一种。
值得注意的是,着色器启动图形API、光栅化启动图形API、清除缓冲区图形API以及交换缓冲区图形API所对应的绘图代码在执行时,需要GPU 111启动着色器、启动光栅化、清除缓冲区以及交换缓冲区,这些操作会使得GPU 111进行大量的运算。第一图形处理装置105在判断到当前调用的第一图形API为上述的预定图形API时,拒绝调用该第一图形API,可使得GPU 111避免进行大量运算,从而可节约服务器10上宝贵的运算资源。
举例而言,针对Opengl图形库,glDrawArrays用于开始绘制像素到后台缓冲区,在绘制像素到后台缓冲区时,需要启动着色器,并由着色器启动光栅化,因此glDrawArrays同时为着色器启动图形API和光栅化启动图形API;eglSwapBuffers用于交换前后缓冲区,因此eglSwapBuffers为交换缓冲区图形API;glDrawElements用于开始绘制,而绘制时会启动着色器,因此glDrawElements也是着色器启动图形API;glClearDepthf和glClearColor会清除缓冲区,因此glClearDepthf和glClearColor为清除缓冲区图形API。
由于第一图形处理装置105确定第一图形API为第一图形库103的预定图形API时,拒绝调用第一图形库103的第一图形API,因此GPU 111无需执行启动着色器、启动光栅化、清除缓冲区或交换缓冲区,从而实现空渲染。但是,在本发明实施例中,第一图形处理装置105仍产生用于通知应用程序104第一图形API调用完毕的第一处理通知,并发送第一处理通知至应用程序104,使得应用程序104仍可获取第一处理通知得以结束等待,继续运行。
由于服务器10无需将绘制好的图形显示给用户,因此即使服务器10的GPU 111不工作,也不会影响用户体验。
因此,上述揭示的空渲染可使得GPU 111避免进行大量运算,从而可节约服务器10上宝贵的运算资源,使得服务器10可以运行数量更多的应用程序。
步骤S4:第一图形处理装置105生成第一图形API的调用信息,并通过网络30将第一图形API的调用信息发送至客户端20的第二图形处理装置204。
其中,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,第一图形API的调用信息包括服务器10在第一图形库103调用第一图形API涉及的参数,以及第一图形API的识别码。
可选地,第一图形API的涉及的参数可包括第一图形API的入口参数,或者,图形API的涉及的参数可包括第一图形API的入口参数和出口参数。
在第一图形库103和第二图形库203中,一部分图形API只有入口参数而没有出口参数,以Opengl图形库为例,用于开始绘制像素到后台缓冲区的图形API:glDrawArrays,其入口参数包括GL_TRIANGLES、first以及count,且没有出口参数,而另一部分图形API同时具有入口参数和出口参数,例如用于申请图形缓冲区的图形API:eglCreateWindowSurface,其入口参数包括egldisplay、eglconfig、eglwindow以及attrib_list,其出口参数是surfaceA。
其中,上述的入口参数和出口参数具体为数值、寄存器地址或内存地址,举例而言,surfaceA为Opengl图形库定义的图形缓存区的句柄,即为申请到的图形缓存区的内存地址,surfaceA的具体数值取决于服务器10的内存114使用情况,例如服务器10的内存114存在空闲的内存空间,则可将该空闲内存空间的入口地址分配给surfaceA。
进一步,在第一图形库103和第二图形库203均为Opengl图形库时,以下的表1举例示出第一图形库103的图形API在服务器10的函数地址与识别码的对应关系:
表1
其中,表1可由服务器10的第一图形处理装置105维护,举例而言,在表1中,eglCreateWindowSurface在服务器10的函数地址A具体为应用程序104在加载第一图形库103之后用于实现图形API:eglCreateWindowSurface的绘图代码在服务器10的内存114上分配到的入口地址。
eglCreateWindowSurface在服务器10的内存114所分配到的入口地址可以是0x00000001,当应用程序104调用第一图形库103的eglCreateWindowSurface时,直接跳转至服务器10的内存地址0x00000001,从0x00000001开始执行eglCreateWindowSurface对应的绘图代码。
因此,在本步骤中,在第一绘图指令需要返回出口参数的情况下,第一图形API涉及的参数包括第一图形API的入口参数和服务器调用第一图形API所产生的出口参数,第一图形API的调用信息包括第一图形API的入口参数、服务器调用第一图形API所产生的出口参数和第一图形API的识别码。
并且,在第一绘图指令不需要返回出口参数的情况下,第一图形API涉及的参数包括第一图形API的入口参数,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
进一步,当第一图形处理装置105确定第一图形API为第一图形库103的预定图形API,并拒绝调用第一图形库103的第一图形API时,第一图形API涉及的参数包括第一图形API的入口参数,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
值得注意的是,表1中所示的识别码仅为示例说明,只要保证识别码在图形库中的唯一性即可,在另一些示例中,也可以图形API的名称作为识别码,如eglCreateWindowSurface。
步骤S5:第二图形处理装置204接收第一图形API的调用信息,根据第一图形API的调用信息中的第一图形API的识别码确定第一图形API,根据第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库203中的第一图形API。
在本发明实施例中,第二图形处理装置204预先记录图形API与图形API的识别码之间的对应关系,示例性地,以下的表2示出上文表1第二列中所示的识别码与第二图形库203的图形API在客户端20的函数地址的对应关系:
表2
其中,表2可由客户端20的第二图形处理装置204维护,举例而言,在表2中,eglCreateWindowSurface在客户端20的函数地址A’具体为第二图形处理装置204在加载第二图形库203之后实现图形API:eglCreateWindowSurface的绘图代码在客户端20的内存215上分配到的入口地址。
举例而言,eglCreateWindowSurface在客户端20的内存215所分配到的内存入口地址可以是0xA000100F,当第二图形处理装置204调用第二图形库203的eglCreateWindowSurface时,直接跳转至客户端20的内存地址0xA000100F,从0xA000100F开始执行eglCreateWindowSurface对应的绘图代码。
在本步骤中,第二图形处理装置204根据第一图形API的调用信息中的第一图形API的识别码0009确定第一图形API在客户端20的函数地址I’,并执行函数地址I’上的绘图代码,绘图代码控制GPU 211进行图形绘制,从而完成第二图形库203中的第一图形API的调用。
可选地,在本步骤中,在第一图形API的调用信息中的第一图形API涉及的参数包括服务器10调用第一图形API所产生的出口参数的情况下,第二图形处理装置204获取客户端20调用第一图形API所产生的出口参数,并建立服务器调用第一图形API所产生的出口参数与客户端调用第一图形API所产生的出口参数的映射关系。
由于客户端20与服务器10之间的硬件配置条件不同,因此,服务器10调用第一图形API所产生的出口参数与客户端20调用第一图形API产生的出口参数也不相同。举例而言,若第一图形API的作用为申请一段缓存空间,其返回的出口参数为缓存空间的内存地址,由于服务器10和客户端20的运行环境完全不同,因此该图形API在服务器10和客户端20产生的出口参数(即内存地址)也不相同。
因此,在第一图形API产生的出口参数为其他图形API的入口参数的情况下,客户端20不能将第一图形API的调用信息携带的服务器10调用第一图形API所产生的出口参数直接作为其他图形API的入口参数。对应地,客户端20建立服务器10调用第一图形API所产生的出口参数与客户端20调用第一图形API所产生的出口参数的映射关系,客户端20可根据从服务器10接收到的服务器10调用第一图形API所产生的出口参数查询该映射关系,来获取客户端20调用第一图形API所产生的出口参数,并将获取到的客户端20调用第一图形API所产生的出口参数作为其他图形API的入口参数。从而克服由于客户端20与服务器10之间的硬件配置条件不同而造成的出口参数不同步的技术问题。
值得注意的是,本发明实施例中,第一图形处理装置105实际上是对第一图形API涉及的参数进行复制,具体而言,当第一图形API具有出口参数时,对第一图形API的入口参数和出口参数进行复制,当第一图形API不具有出口参数时,仅对第一图形API的入口参数进行复制。第一图形处理装置105根据复制所得的参数和第一图形API的识别码,形成第一图形API的调用信息。
步骤S6:应用程序104根据第一处理通知发起第二绘图指令,第一图形处理装置105获取第二绘图指令,其中,第二绘图指令对应于第二图形API,第二绘图指令携带有第二图形API的入口参数和用于跳转至第二图形API的函数地址的跳转命令。
第二绘图指令对应于第一图形库103的第二图形API和/或第二图形库203中的第二图形API。
可选地,应用程序104发起第二绘图指令,并执行第二绘图指令,跳转至第二绘图指令中的跳转命令所要跳转到的函数地址时,第一图形处理装置105可通过钩子(HOOK)截获第二绘图指令。
应该理解的是,步骤S6只需保证在步骤S3之后执行,因此步骤S6也可直接位于步骤S3或步骤S4之后。
在本步骤中,应用程序104在接收到第一图形处理装置105发送的第一处理通知之后,停止等待,并继续运行,在运行至需要调用第一图形库103的第二图形API的程序代码时,发起第二绘图指令。因此,应用程序104完全不依赖于客户端20,可在服务器10独立运行。
步骤S7:第一图形处理装置105根据第二绘图指令调用第一图形库103的第二图形API以执行第二绘图指令。
其中,第一图形处理装置105根据第二绘图指令携带的跳转指令跳转至第二图形API的函数地址,根据第二绘图指令携带的第一图形API的入口参数执行第一图形API的函数地址上的绘图代码,绘图代码控制GPU 111进行绘图运算,从而完成对第一图形库的第一图形API的调用以及第一绘图指令的执行。
步骤S8:第一图形处理装置105在第二绘图指令执行完毕之后,产生第二处理通知,并发送第二处理通知至应用程序104,其中,第二处理通知作为第二绘图指令的执行结果用于通知应用程序104第二图形API调用完毕。
步骤S9:第一图形处理装置105生成第二图形API的调用信息,并通过网络30将第二图形API的调用信息发送至客户端20的第二图形处理装置204。
其中,第二图形API的调用信息用于指示客户端调用第二图形库中的第二图形API,第二图形API的调用信息包括第二图形API涉及的参数,以及第二图形API的识别码。
步骤S10:第二图形处理装置204接收第二图形API的调用信息,根据第二图形API的调用信息中的第二图形API的识别码确定第二图形API,根据第二图形API的调用信息中的第二图形API涉及的参数调用第二图形库中的第一图形API。
在本步骤中,第二图形处理装置204根据第二图形API的调用信息中的第二图形API的识别码000A确定第一图形API在客户端20的函数地址J’,并执行函数地址J’上的绘图代码,从而完成第二图形库203中的第二图形API的调用。
可选地,在本步骤中,在第二图形API的入口参数为第一图形API的出口参数的情况下,第二图形处理装置204根据第二图形API的入口参数查询步骤S5中记录的映射关系,并获取第二图形API的入口参数在映射关系中对应的参数,其中,第二图形API的入口参数在映射关系中对应的参数为客户端20调用第一图形API所产生的出口参数。
因此,在第一图形API产生的出口参数为第二图形API的入口参数的情况下,通过以上处理方式,可克服由于客户端20与服务器10之间的硬件配置条件不同而造成的出口参数不同步的技术问题。
值得注意的是,在一些示例中,第一图形处理装置105可将第一图形API的调用信息和第二图形API的调用信息保存在先进先出队列,在满足预定条件后,将先进先出队列中的数据同时发送给客户端20的第二图形处理装置204。其中,预定条件可例如为计时时间超过预设时间段,或先进先出队列中的数据超出预定数据大小。
由于应用程序104的运行速度较快,应用程序104运行时,单位时间内产生多组调用信息,通过打包方式在满足预定条件后同时发送多组调用信息至客户端20,相对于每产生一组调用信息就发送一次调用信息给客户端20而言,可有效节约处理开销。
综上,由于服务器10的应用程序104发起的绘图指令对应的图形API在调用完毕之后,应用程序104可马上在本地获取用于通知应用程序104图形API调用完毕的处理通知,因此服务器10的应用程序104可不依赖于客户端20而独立运行,即便客户端20死机,或客户端20与服务器10之间的连接中断,也不会影响服务器10的应用程序104的运行,可提高用户体验。
进一步,服务器10的第一图形处理装置105生成携带有图形API涉及的参数的调用信息,并将调用信息发送至客户端20,客户端20可根据图形API涉及的参数调用第二图形库中的第一图形API。而服务器10的应用程序104在第一图形处理装置105发送调用信息之前,已经接收到第一图形处理装置105发送的处理通知,因此,客户端20调用完第二图形库203中的图形API之后,无需再发送处理通知给服务器10的应用程序104,因此服务器10与客户端20之间实现了单向传输,从而可降低对网络延时的要求。
为进一步对上述步骤进行清楚说明,请参见图4,图4是根据本发明实施例的图形处理方法的流程图,图4具体描述服务器的工作流程,如图4所示,图形处理方法具体包括以下步骤:
步骤S101:应用程序104启动。
步骤S102:应用程序104发起第一绘图指令。具体而言,应用程序104运行至需要调用第一图形API的程序代码时,发起第一绘图指令。
其中,第一绘图指令携带有第一图形API的入口参数和用于跳转至第一图形API的函数地址的跳转命令,其中,函数地址为第一图形API在服务器10的函数地址I以及第一图形API的入口参数。
步骤S103:第一图形处理装置105获取第一绘图指令。
在一些示例中,第一图形处理装置105利用钩子(HOOK)截获第一绘图指令。
步骤S104:第一图形处理装置105判断图形处理请求对应的图形API是否需要返回出口参数,如果是,执行步骤S105,如果否,执行步骤S107。
在本步骤中,第一图形处理装置105可预先记录第一图形库103中的所有图形API中何者需要返回出口参数,何者不需要返回出口参数。
举例而言,第一图形库103为Opengl图形库时,第一图形处理装置105可预先记录Opengl图形库中的每一图形API是否需要返回出口参数,而在Opengl图形库公开的技术文档中,具体定义了图形API的输入参数的类型(如整数、指针、内存地址以及寄存器地址等)、数量、以及排列顺序,并定义了图形API是否需要返回出口参数,程序员通过阅读技术文档可以编写对应的程序代码调用图形API。
步骤S105:第一图形处理装置105调用第一图形库103的图形API,获取出口参数,发送携带有出口参数的处理通知至应用程序104,其中,该处理通知用于通知应用程序104当前的图形API调用完毕。
步骤S106:第一图形处理装置105为图形API设置识别码,将识别码、入口参数及出口参数作为一组调用信息设置在先进先出队列。
举例而言,第一图形处理装置105可根据上文所述的表1为图形API设置识别码,具体地,第一图形处理装置105获取当前的绘图指令携带的跳转命令,在表1搜索与跳转命令所要跳转的函数地址对应的识别码,将搜索到的识别码作为当前的图形API对应的识别码。
步骤S107:第一图形处理装置105判断当前调用的图形API是否是预定图形API,如果是,执行步骤S109,拒绝调用第一图形库103的该图形API,如果否,执行步骤S108,调用第一图形库103的该图形API。其中,预定图形API包括着色器启动图形API、光栅化启动图形API、清除交换缓冲区图形API以及交换缓冲区图形API。
值得注意的是,着色器启动图形API、光栅化启动图形API、清除缓冲区图形API以及交换缓冲区图形API所对应的绘图代码在执行时,需要GPU 111进行大量的运算,在本步骤中,第一图形处理装置105在判断到当前调用的图形API为上述的预定图形API时,直接跳过步骤S108,拒绝调用预定图形API,可使得GPU 111避免进行大量图形运算,从而实现空渲染,可节约服务器10上宝贵的运算资源。
由于服务器10无需将绘制好的图形显示给用户,因此即使GPU 111不工作,也不会影响用户体验。
步骤S108:第一图形处理装置105调用第一图形库103的图形API。
在本步骤中,第一图形处理装置105根据当前获取的绘图指令携带的跳转命令跳转至跳转命令的函数地址,并将当前的图形处理请求携带的入口参数作为输入参数执行函数地址上的绘图代码。
步骤S109:第一图形处理装置105调用第一图形库103的图形API之后,第一图形处理装置105发送处理通知至应用程序104,其中,该处理通知用于通知应用程序104图形API调用完毕,本步骤执行完毕后,流程分别跳转至步骤S111和步骤S110。
值得注意的是,与步骤S105相比,在本步骤中,由于图形API不需要返回出口参数,因此,本步骤的所发送的处理通知没有携带有图形API的出口参数。
步骤S110:第一图形处理装置105为图形API设置识别码,将识别码、入口参数作为一组调用信息设置在先进先出队列。
与步骤S105类似,在本步骤中,第一图形处理装置105可根据上文所述的表1为图形API设置识别码,具体而言,第一图形处理装置105可在表1搜索与跳转命令所要跳转的函数地址对应的识别码,将搜索到的识别码作为当前的图形API对应的识别码。
步骤S111:应用程序104根据接收到的处理通知继续运行程序指令,且在运行至需要调用另一图形API的程序代码时,发起另一绘图指令,然后流程跳转回步骤S103。
因此,随着应用程序104根据程序代码的运行依次发起多个绘图指令,第一图形处理装置105可针对不同的绘图指令在本地依次调用多个图形API,并将调用过的图形API的调用信息存入先进先出队列,其中,调用过的图形API的调用信息详细描述了多个图形API在服务器10的调用时涉及的参数以及图形API的类型。
步骤S112:第一图形处理装置105在先进先出队列存入第一组调用信息后每隔预定时间将先进先出队列中的若干组调用信息发送至客户端20。
在本步骤中,预定时间可例如为3ms,通过设置预定时间,使得记录到的若干组调用信息可每隔预定时间自动发送至客户端20。
由于应用程序104的运行速度较快,应用程序104运行时,单位时间内产生多组调用信息,若每产生一组调用信息就发送给客户端20,则在单位时间内,需要发送多次调用信息,而通过打包方式在经过预定时间后同时发送多组调用信息至客户端20,相对于每产生一组调用信息就发送一次调用信息给客户端20而言,可有效节约处理开销。
进一步,第一图形处理装置105在发送N组调用信息至客户端20之后,若应用程序104继续调用图形API,则在预定时间后,第一图形处理装置105还会发送L组调用信息至客户端20,其中,L与N的数值可以相同,也可以不相同,而调用信息的数量取决于第一图形处理装置105在预定时间内调用的图形API的数量。举例而言,在第一个3ms内,图4所示的流程可处理50个图形API,即第一个3ms对应50组调用信息,在第二个3ms内,图4所示的流程可处理70个图形API,即第二个3ms对应70组调用信息,。
因此,在图4所示的流程中,第一图形处理装置105可随着应用程序104的运行不断将应用程序104在运行过程中调用过的图形API的识别码和涉及的参数记录于先进先出队列,并定时发送先进先出队列记录的多组调用信息至客户端20,由于第一图形处理装置105在每次记录调用信息之前及时发送处理通知至应用程序104,应用程序104在获取处理通知后可继续运行,因此在本发明实施例中,客户端20完全不会对应用程序104的运行造成任何影响。
即便客户端20停机,所造成的后果只是服务器10发送至客户端20的调用信息不能被客户端20接收,而服务器10中的应用程序104不会受到任何影响,应用程序104仍可正常运行,因此,可极大地提高用户体验。
为进一步解释图4所示流程,于此可以表1中所示的第一图形API和第二图形API为例对图4所示的循环过程进行说明,假设第一图形API的入口参数x,y,z,第一图形API与第二图形API之间存在依赖关系,第一图形API根据入口参数x,y,z在服务器10调用产生的出口参数为retA,第二图形API在根据入口参数retA在服务器10调用产生的出口参数为retB,第一图形API根据入口参数x,y,z在客户端20调用产生的出口参数为retA’,第二图形API根据入口参数retA’在客户端20调用产生的出口参数为retB’,并且,假设应用程序104的程序代码设定为只会单次串行地调用第一图形API和第二图形API。
可结合图5和图6进行理解,图5是根据本发明实施例的应用程序调用图形API的另一示意图,如图5所示,应用程序104的程序代码设定为分别调用第一图形API和第二图形API,其中,入口参数x,y,z为设置在程序代码中的常数,第二图形API的入口参数为第一图形API的出口参数retA。
而图6是根据本发明实施例的第二图形处理装置调用图形API的示意图,如图6所示,第二图形处理装置204分别调用第一图形API和第二图形API,其中,第一图形API的入口参数x,y,z从第一组调用信息获得,第二图形API的入口参数retA’从映射表中获得,于下文将会具体介绍。
值得注意的是,在本发明实施例中,即便输入的入口参数相同,相同的图形API在服务器10和客户端20调用后产生的出口参数不相同,举例而言,第一图形API根据入口参数x,y,z在服务器10调用产生的出口参数retA和第一图形API根据入口参数x,y,z在客户端20调用产生的出口参数retA’不相同。
原因在于,服务器10和客户端20的运行环境不一致,例如图形API的作用为申请一段缓存空间,其返回的出口参数为缓存空间的内存地址,由于服务器10和客户端20的运行环境完全不同,因此该图形API在服务器10和客户端20产生的出口参数(即内存地址)也不相同。
以下请结合图5至图7提供的实例继续参考图3,其中图7是根据本发明实施例的服务器的数据流向图。
步骤S101:应用程序104启动。
步骤S102:应用程序104运行至需要调用第一图形API的程序程序代码时,发起第一绘图指令1011(如图7所示),该第一绘图指令1011包括第一图形API的入口参数x,y,z和用于跳转至第一图形API的函数地址I的跳转命令。
步骤S103:第一图形处理装置105获取该第一图形处理请求1011,从而获取跳转至第一图形API在服务器10的函数地址I的跳转命令和入口参数x,y,z。
步骤S104:第一图形处理装置105判断该第一图形API是否需要返回出口参数。
根据图5可知,第一图形处理装置105可判断到第一图形API需要返回出口参数,因此流程跳转至步骤S105。
步骤S105:第一图形处理装置105调用第一图形库103的第一图形API,具体地,第一图形处理装置105跳转至第一图形API在服务器10的函数地址I,将入口参数x,y,z作为输入参数运行函数地址I上的绘图代码,在绘图代码运行完毕后获取作为运行结果的出口参数retA,并将包括出口参数retA的第一处理通知1012(如图7所示)发送给应用程序104,然后流程分别跳转至步骤S111和步骤S106。
其中,该第一处理通知1012用于通知应用程序104当前的第一图形API调用完毕。
步骤S106:第一图形处理装置105根据表1为第一图形API设置第一识别码0009,将第一识别码0009、入口参数x,y,z和出口参数retA作为第一图形API的调用信息1001设置在先进先出队列1000。
步骤S112:第一图形处理装置105在先进先出队列1000存入第一图形API的调用信息1001后开始计时。
在一些示例中,先进先出队列1000以2个字节为基本单位,第一图形处理装置105分别将识别码0009、入口参数x、入口参数y、入口参数z和出口参数retA分别存入先进先出队列1000的8个字节中,因此,第一图形API的调用信息1001包括8个字节。
步骤S111:应用程序104根据第一处理通知1012继续运行程序代码,且在运行至需要调用第二图形API的程序代码时,发起第二图形指令1013。
具体而言,在本步骤中,应用程序104接收到第一处理通知1012后,继续运行,在运行至需要调用第二图形API的程序代码时,发起第二绘图指令1013,其中第二绘图指令包括跳转至第二图形API在服务器10的函数地址J的跳转命令和第一处理通知1012携带的入口参数retA。
此时,流程跳转回步骤S103。
步骤S103:第一图形处理装置105获取第二绘图指令1013,从而获取跳转至第二图形API在服务器10的函数地址J的跳转命令和入口参数retA。
步骤S104:第一图形处理装置105判断该第二图形API是否需要返回出口参数。
根据图5可知,第二图形API需要返回出口参数,因此在本步骤中,第一图形处理装置105判断到第二图形API需要返回出口参数,流程跳转至步骤S105。
步骤S105:第一图形处理装置105调用第一图形库103中的第二图形API,具体地,第一图形处理装置105根据跳转命令跳转至第二图形API在服务器10的函数地址J,将入口参数retA作为输入参数运行函数地址J上的绘图代码,并在绘图代码运行完毕后获取作为运行结果的出口参数retB,将retB返回应用程序104,并发送包括第二图形API的出口参数retB的第二处理通知1014至应用程序104,然后分别跳转至步骤S111和步骤S106。
其中,该第二处理通知1014用于通知应用程序104当前的第二图形API调用完毕。
步骤S111:如图5所示,由于在本实施例中,程序指令只是分别单次调用第一图形API和第二图形API,因此,应用程序104在调用完以上两个图形API之后,不存在另一图形API,无需继续调用新的图形API,因此不会发起另一绘图指令,应用程序104根据第二处理通知1012退出运行,循环到此中止。
步骤S106:第一图形处理装置105根据表1为第二图形API设置识别码000A,将识别码000A、入口参数retA和出口参数retB作为第二图形API的调用信息1002设置在先进先出队列1000。
步骤S112:第一图形处理装置105在预定时间到达后将先进先出队列1000中的两组调用信息通过网卡112发送至客户端20。
值得注意的是,在本实施例中,预定时间可设置为足够长以使得应用程序104可分别完成第一图形API和第二图形API的调用。其中,预定时间可例如为3ms。
综上,先进先出队列1000包括调用信息1001和调用信息1002,调用信息1001包括第一识别码0009、入口参数x,y,z和出口参数retA,调用信息1002包括第二识别码000A、入口参数retA和出口参数retB。
在一些示例中,先进先出队列1000以2个字节为基本单位,第一图形处理装置105分别将第一识别码0009、入口参数x、入口参数y、入口参数z和出口参数retA分别存入先进先出队列1000的前8个字节中,即调用信息1001包括8个字节,并将第二识别码000A、入口参数retA和出口参数retB分别存入先进先出队列1000的后6个字节中,即调用信息1002包括6个字节。因此,2组调用信息的总数据长度为14个字节。
根据上述公开内容可知,服务器10的应用程序104在服务器10本地运行,服务器10单向发送N组数据至客户端20,而且服务器10无需从客户端20接收数据,因此,可省去从客户端20接收数据的等待时间,应用程序104的运行速度得到极大提升。
以下请参见图8,图8是根据本发明实施例的图形处理方法的另一流程图,图8描述了客户端20的工作流程,如图8所示,图形处理方法具体包括以下步骤:
步骤S301:第二图形处理装置204接收服务器10发送的若干组调用信息。
具体而言,第二图形处理装置204通过网卡212接收到服务器10的第一图形处理装置105发送的若干组调用信息。
步骤S302:第二图形处理装置204读取若第一组调用信息的识别码。
可选地,第一组调用信息位于若干组调用信息的起始位置,并且识别码位于第一组调用信息的起始位置。
步骤S303:第二图形处理装置204根据读取到的识别码确认要调用的图形API。
具体地,第二图形处理装置204根据读取到的识别码查找表2,从而确认要调用的图形API在客户端20的函数地址,从而确认要调用的图形API。
步骤S304:图形处理装置判断图形API的入口参数是否是其他图形API的出口参数,如果是,执行步骤S305,如果否,执行步骤S306。
在本步骤中,图形API分为两种类型,一种类型是可返回出口参数的类型,另一种类型是不返回出口参数的类型,本发明实施例根据判断到的图形API的类型和与识别码位于同一组调用信息的入口参数确认要调用的图形API的入口参数。
以下步骤S305和步骤S306分别针对两种类型的图形API进行相应处理。
步骤S305:第二图形处理装置204读取与当前识别码位于同一组调用信息的入口参数,根据该入口参数在映射表搜索对应的出口参数,将搜索到的出口参数作为当前调用的图形API的入口参数。
其中,映射表记录有服务器调用特定图形API所产生的出口参数与客户端调用该特定图形API所产生的出口参数的映射关系,并且映射表根据下文所述的步骤S309生成。
步骤S306:第二图形处理装置204读取与当前识别码位于同一组调用信息的入口参数,将读取到的入口参数作为当前调用的图形API的入口参数。
值得注意的是,针对具有多个入口参数的图形API而言,若多个入口参数中的一部分入口参数不是其他图形API的出口参数,且多个入口参数中的另一部分入口参数是其他图形API的出口参数,则针对是其他图形API的出口参数的入口参数可通过执行步骤S305获得,针对不是其他图形API的入口参数可通过执行步骤S306获得。
步骤S307:第二图形处理装置204根据已确认的入口参数调用第二图形库203的图形API。
步骤S308:第二图形处理装置204判断图形API是否返回出口参数,如果是,执行步骤S309,如果否,执行步骤S310。
步骤S309:第二图形处理装置204读取与当前识别码位于同一组调用信息的出口参数,将读取到的出口参数与返回的出口参数记录在映射表。
步骤S310:第二图形处理装置204判断是否存在下一组调用信息,如果是,执行步骤S312,如果否,执行步骤S301,在步骤301中,第二图形处理装置204继续接收服务器10发送的另一若干组调用信息,并针对另一若干组调用信息继续执行步骤301至步骤312。
步骤S312:第二图形处理装置204读取下一组调用信息中记录的识别码,并跳转至步骤S303,从而针对下一组调用信息继续执行步骤303至步骤312。
综上,客户端20可根据接收到的若干组调用信息,依序在本地调用若干个服务器10调用过的图形API,从而在本地进行图形绘制,使得客户端20的用户可在客户端20本地看到服务器10的应用程序104运行时所绘制的界面。并且,客户端20无需向服务器10发送数据,因此实现了单向传输。
为进一步解释图8所示流程,于此可以表1和表2中所示的第一图形API和第二图形API为例进行说明,并且,若干组调用信息具体为图7及其对应描述中的2组调用信息,该2组调用信息包括第一组调用信息1001和第二组调用信息1002。
并请结合图9继续参考图8所示的流程,其中,图9是根据本发明实施例的客户端的数据流向图。
步骤S301:第二图形处理装置204接收服务器10发送的2组调用信息,2组调用信息包括第一组调用信息1001和第二组调用信息1002,其中第一组调用信息1001位于2组调用信息的头部,识别码0009位于第一组调用信息1001的头部。
步骤S302:第二图形处理装置204读取2组调用信息的第一组调用信息1001的识别码0009。
步骤S303:第二图形处理装置204根据读取到的识别码0009查找表2,获得要调用的第一图形API在客户端20的函数地址I’,从而确认要调用的第一图形API。
步骤S304:图形处理装置204判断第一图形API的入口参数是否是其他图形API的出口参数,判断结果为否,执行步骤S306。
步骤S306:第二图形处理装置204读取与当前识别码0009位于同一组调用信息1001的入口参数x,y,z,将读取到的入口参数x,y,z作为当前调用的第一图形API的入口参数。
步骤S307:第二图形处理装置204根据已确认的入口参数x,y,z调用第二图形库203的第一图形API。
具体地,第二图形处理装置204跳转至第一图形API在客户端20的函数地址I’,将入口参数x,y,z作为输入参数运行函数地址I’上的绘图代码,绘图代码用于控制GPU 211进行图形绘制,并在绘图代码运行完毕后获取作为运行结果的出口参数retA’。
可结合图9进行理解,具体而言,该步骤对应于图9的步骤1。
步骤S308:第二图形处理装置204判断第一图形API是否返回出口参数,并且判断结果为是,执行步骤S309。
步骤S309:第二图形处理装置204读取与当前识别码0009位于同一组调用信息1001的出口参数retA,将读取到的出口参数retA与返回的出口参数retA’的映射关系记录在映射表2041(参见图9)。
具体而言,该步骤对应于图9的步骤2。
步骤S310:第二图形处理装置204判断是否存在下一组调用信息,由于还存在第二组调用信息1002,因此判断结果为是,执行步骤S312。
步骤S312:第二图形处理装置204读取下一组调用信息1002中记录的识别码000A,并跳转至步骤S303,使得本流程循环执行。
步骤S303:第二图形处理装置204根据读取到的识别码000A查找表2,获得要调用的第二图形API在客户端20的函数地址J’,从而确认要调用的第二图形API。
该步骤对应于图9的步骤3中根据识别码获取API2的步骤。
步骤S304:第二图形处理装置204判断第二图形API的入口参数是否是其他图形API的出口参数,并且判断结果为是,执行步骤S305。
在本步骤中,第二图形API在客户端20调用时的入口参数retA’为第一图形API在客户端20调用时的出口参数retA’,因此第二图形处理装置204执行步骤305。
步骤305:第二图形处理装置204读取与识别码000A位于同一组调用信息1002的入口参数retA,根据该入口参数retA在映射表2041搜索对应的出口参数retA’,将搜索到的出口参数retA’作为当前调用的第二图形API的入口参数retA’。
可结合图9进行理解,具体而言,该步骤对应于图9的步骤3中读取入口参数retA的步骤以及步骤4。
步骤S307:第二图形处理装置204根据已确认的入口参数retA’调用第二图形库203的第二图形API。
该步骤对应于图9的步骤5。
具体而言,在调用过程中,第二图形处理装置204可跳转至第二图形API在客户端20的函数地址J’,并将入口参数retA’作为输入参数执行函数地址J’上的绘图代码,绘图代码用于控制GPU 211进行图形绘制,并在绘图代码运行完毕后获取作为运行结果的出口参数retB’。
步骤S308:第二图形处理装置204判断第二图形API是否返回出口参数,判断结果为是,执行步骤S309。
步骤S309:第二图形处理装置204读取与当前识别码000A位于同一组调用信息1002的出口参数retB,将读取到的出口参数retB与返回的出口参数retB’记录在映射表2041。
该步骤S309对应于图9的步骤6。
步骤S310:第二图形处理装置204判断是否存在下一组调用信息,由于前面假设若干组调用信息具体为2组调用信息,不存在下一组调用信息,因此判断结果为否,执行步骤S301,继续接收另一若干组调用信息进行类似处理。
因此,第二图形处理装置204可如图6所示根据接收到的2组调用信息在本地调用2个图形API,从而完成图形处理。
可选地,一些示例中,第一图形处理装置105可将生成的多组调用信息分别写入文件中,并存储该文件。客户端20可隔一定时间后(如几天后)再从服务器10下载该文件,并由第二图形处理装置204根据图8所示的流程依次读取该文件中记录的多组调用信息,从而实现对应用程序104的绘图界面的回放。
请参见图10,本发明实施例进一步提供一种图形处理装置,图10是根据本发明实施例的图形处理装置的装置结构示意图,该图形处理装置设置在服务器10,如图10所示,该图形处理装置105包括:
绘图指令获取模块1051,用于获取应用程序104发起的第一绘图指令,第一绘图指令对应第一图形API;
图形API调用模块1052,用于根据第一绘图指令调用第一图形库103的第一图形API以执行第一绘图指令,并向应用程序104发送第一处理通知,第一处理通知用于通知应用程序104第一图形API调用完毕;
调用信息生成模块1053,用于生成第一图形API的调用信息,第一图形API的调用信息用于指示客户端20调用第二图形库203中的第一图形API,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码;
调用信息发送模块1054,用于将第一图形API的调用信息发送至客户端20。
可选地,调用信息生成模块1053还用于:确定第一绘图指令是否需要返回出口参数;在第一绘图指令需要返回出口参数的情况下,第一处理通知还包括服务器10调用第一图形API所产生的出口参数,第一图形API的调用信息包括第一图形API的入口参数、服务器10调用第一图形API所产生的出口参数和第一图形API的识别码。
可选地,在第一图形API不需要返回出口参数的情况下,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
可选地,绘图指令获取模块1051,用于获取应用程序104根据第一处理通知发起的第二绘图指令,第二绘图指令对应第二图形API,第二图形API的入口参数为服务器10调用第一图形API所产生的出口参数;图形API调用模块1052,用于根据第二绘图指令调用第一图形库103的第二图形API,并向应用程序104发送第二处理通知,第二处理通知用于通知应用程序104第二图形API调用完毕;调用信息生成模块1053,用于生成第二图形API的调用信息,第二图形API的调用信息用于指示客户端20调用第二图形库203中的第二图形API,第二图形API的调用信息包括第二图形API涉及的参数,以及第二图形API的识别码;调用信息发送模块1054,用于将第二图形API的调用信息发送至客户端20。
可选地,调用信息发送模块1054,具体用于:将第一图形API的调用信息和第二图形API的调用信息保存在先进先出队列;在满足预定条件后,将先进先出队列中的数据同时发送给客户端20。
由于服务器的应用程序发起的第一绘图指令对应的第一图形API在调用完毕之后,应用程序可马上在本地获取用于通知应用程序第一图形API调用完毕的第一处理通知,因此服务器的应用程序可不依赖于客户端而独立运行,即便客户端死机,或客户端与服务器之间的连接中断,也不会影响服务器的应用程序的运行,可提高用户体验。
进一步,服务器生成携带有第一图形API涉及的参数的第一图形API的调用信息,并将第一图形API的调用信息发送至客户端,客户端可根据第一图形API涉及的参数调用第二图形库中的第一图形API,由于服务器的应用程序已经收到第一处理通知,因此,客户端调用完第二图形库中的第一图形API之后,无需再发送处理通知给服务器的应用程序,因此服务器与客户端之间实现了单向传输,从而可降低对网络延时的要求。
以下请参见图11,本发明实施例进一步提供一种图形处理装置,图11是根据本发明实施例的图形处理装置的另一装置结构示意图,该图形处理装置设置在客户端20,如图11所示,图形处理装置204,包括:
调用信息接收模块2041,用于接收服务器10发送的第一图形API的调用信息,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码;
图形API调用模块2042,用于根据第一图形API的调用信息中的第一图形API的识别码确定第一图形API,并根据第一图形API的调用信息中的第一图形API涉及的参数调用第二图形库203中的第一图形API。
可选地,图形处理装置204还包括映射关系建立模块2043,用于在第一图形API的调用信息中的第一图形API涉及的参数包括服务器10调用第一图形API所产生的出口参数的情况下,获取客户端20调用第一图形API所产生的出口参数,并建立服务器10调用第一图形API所产生的出口参数与客户端20调用第一图形API所产生的出口参数的映射关系。
可选地,调用信息接收模块2041,还用于接收服务器10发送的第二图形API的调用信息,第二图形API的调用信息包括第二图形API涉及的参数以及第二图形API的识别码,第二图形API的入口参数为服务器10调用第一图形API所产生的出口参数;图形API调用模块2042,还用于根据第二图形API的识别码确定第二图形API;图形API调用模块2042,还用于根据第二图形API的入口参数查询映射关系,获取第二图形API的入口参数在映射关系中对应的参数,第二图形API的入口参数在映射关系中对应的参数为客户端20调用第一图形API所产生的出口参数。
可选地,调用信息接收模块2041,具体用于:接收服务器10发送的数据,该数据包括第一图形API的调用信息和第二图形API的调用信息。
客户端从服务器接收第一图形API的调用信息,可根据第一图形API涉及的参数调用第二图形库中的第一图形API,由于服务器的第一图形库的第一图形API调用已经完成,因此,客户端调用完第二图形库中的第一图形API之后,无需再发送处理通知给服务器的应用程序,因此服务器与客户端之间实现了单向传输,因此可降低对网络延时的要求。
请参见图12,本发明实施例进一步提供一种图形处理装置,图12是根据本发明实施例的图形处理装置的另一装置结构示意图,该图形处理装置设置在服务器10,如图12所示,图形处理装置105包括:
绘图指令获取模块1061,用于获取应用程序104发起的第一绘图指令,第一绘图指令对应第一图形API;
图形API调用模块1062,用于确定第一图形API为第一图形库的预定图形API时,拒绝调用第一图形库的第一图形API;
图形API调用模块1062,还用于向应用程序104发送第一处理通知,第一处理通知用于通知应用程序104第一图形API调用完毕;
调用信息生成模块1063,用于生成第一图形API的调用信息,第一图形API的调用信息用于指示客户端调用第二图形库中的第一图形API,第一图形API的调用信息包括第一图形API涉及的参数,以及第一图形API的识别码;
调用信息发送模块1064,用于将第一图形API的调用信息发送至客户端。
可选地,第一图形API的调用信息包括第一图形API的入口参数和第一图形API的识别码。
可选地,预定图形API包括着色器启动图形API、光栅化启动图形API或交换缓冲区图形API中的任意一种。
当第一图形API为预定图形API时,拒绝调用服务器的应用程序发起的第一绘图指令对应的第一图形API,并发送第一处理通知给应用程序,以通知应用程序第一图形API调用完毕,因此服务器的应用程序可不依赖于客户端而独立运行,即便客户端死机,或客户端与服务器之间的连接中断,也不会影响服务器的应用程序的运行,可提高用户体验。
并且,由于服务器无需将绘制好的图形显示给用户,因此即使拒绝调用服务器的应用程序发起的第一绘图指令对应的第一图形API,从而使得服务器的GPU不工作,也不会影响用户体验。
以下请参见图13,图13是根据本发明实施例的服务器的装置结构示意图,如图13所示,服务器10包括处理器121、总线122以及存储器123,处理器121和存储器123与总线122连接,存储器123存储有程序指令,处理器121执行程序指令以完成上文中介绍的第一图形处理装置105的功能。
以下请参见图14,图14是根据本发明实施例的客户端的装置结构示意图,如图14所示,客户端20包括处理器221、总线222以及存储器223,处理器221和存储器223与总线222连接,存储器223存储有程序指令,处理器221执行程序指令以完成上文中介绍的第二图形处理装置204的功能。
需说明的是,以上描述的任意装置实施例都仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置或单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (27)
1.一种图形处理方法,其特征在于,所述方法应用于服务器,所述服务器设置有第一图形库和应用程序,客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述方法包括:
获取所述应用程序发起的第一绘图指令,所述第一绘图指令对应所述第一图形库的第一图形API;
根据所述第一绘图指令调用所述第一图形库的所述第一图形API以执行所述第一绘图指令,并向所述应用程序发送第一处理通知,所述第一处理通知用于通知所述应用程序所述第一图形库的第一图形API调用完毕;
生成所述第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息用于指示所述客户端调用所述第二图形库的第一图形API,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
将所述第一图形库的第一图形API的调用信息发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一绘图指令是否需要返回出口参数;
在所述第一绘图指令需要返回出口参数的情况下,所述第一处理通知还包括所述服务器调用所述第一图形库的第一图形API所产生的出口参数,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数、所述服务器调用所述第一图形库的第一图形API所产生的出口参数和所述第一图形库的第一图形API的标识。
3.根据权利要求2所述的方法,其特征在于,在所述第一图形库的第一图形API不需要返回出口参数的情况下,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数和所述第一图形库的第一图形API的标识。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收所述应用程序根据所述第一处理通知发起的第二绘图指令,所述第二绘图指令对应所述第一图形库的第二图形API,所述第一图形库的第二图形API的入口参数为所述服务器调用所述第一图形库的第一图形API所产生的出口参数;
根据所述第二绘图指令调用所述第一图形库的第二图形API,并向所述应用程序发送第二处理通知,所述第二处理通知用于通知所述应用程序所述第一图形库的第二图形API调用完毕;
生成所述第一图形库的第二图形API的调用信息,所述第一图形库中的第二图形API的调用信息用于指示所述客户端调用所述第二图形库的第二图形API,所述第一图形库中的第二图形API的调用信息包括所述第一图形库的第二图形API涉及的参数,以及所述第一图形库的第二图形API的标识;
将所述第一图形库的第二图形API的调用信息发送至所述客户端。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述第一图形库的第一图形API的调用信息和所述第一图形库的第二图形API的调用信息保存在先进先出队列;
在满足预定条件后,将所述先进先出队列中的所述第一图形库的第一图形API的调用信息和所述第一图形库的第二图形API的调用信息同时发送给所述客户端。
6.一种图形处理方法,其特征在于,所述方法应用于客户端,服务器设置有第一图形库,所述客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述方法包括:
接收所述服务器发送的所述第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
根据所述第一图形库的第一图形API的调用信息中的所述第一图形库的第一图形API的标识和所述第一图形库的第一图形API的调用信息中的所述第一图形库的第一图形API涉及的参数调用所述第二图形库的第一图形API。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述第一图形库的第一图形API的调用信息中的所述第一图形库的第一图形API涉及的参数包括所述服务器调用所述第一图形库的第一图形API所产生的出口参数的情况下,获取所述客户端调用所述第二图形库的第一图形API所产生的出口参数,并建立所述服务器调用所述第一图形库的第一图形API所产生的出口参数与所述客户端调用所述第二图形库的第一图形API所产生的出口参数的映射关系。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收所述服务器发送的所述第一图形库的第二图形API的调用信息,所述第一图形库的第二图形API的调用信息包括所述第一图形库的第二图形API涉及的参数以及所述第一图形库的第二图形API的标识,所述第一图形库的第二图形API的入口参数为所述服务器调用所述第一图形库的第一图形API所产生的出口参数;
根据所述第一图形库的第二图形API的标识确定所述第二图形库的第二图形API;
根据所述第一图形库的第二图形API的入口参数查询所述映射关系,获取所述第一图形库的第二图形API的入口参数在所述映射关系中对应的参数,所述第一图形库的第二图形API的入口参数在所述映射关系中对应的参数为所述客户端调用所述第二图形库的第一图形API所产生的出口参数。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
接收所述服务器同时发送的所述第一图形库的第一图形API的调用信息和所述第一图形库的第二图形API的调用信息。
10.一种图形处理方法,其特征在于,所述方法应用于服务器,所述服务器设置有第一图形库和应用程序,客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述方法包括:
获取所述应用程序发起的第一绘图指令,所述第一绘图指令对应所述第一图形库的第一图形API;
确定所述第一图形库的第一图形API为所述第一图形库的预定图形API时,拒绝调用所述第一图形库的第一图形API;
向所述应用程序发送第一处理通知,所述第一处理通知用于通知所述应用程序所述第一图形库的第一图形API调用完毕;
生成所述第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息用于指示所述客户端调用所述第二图形库的第一图形API,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
将所述第一图形库的第一图形API的调用信息发送至所述客户端。
11.根据权利要求10所述的方法,其特征在于,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数和所述第一图形库的第一图形API的标识。
12.根据权利要求10或11所述的方法,其特征在于,所述预定图形API包括着色器启动图形API、光栅化启动图形API、清除缓冲区图形API或交换缓冲区图形API中的任意一种。
13.一种图形处理装置,其特征在于,设置于服务器,所述服务器还设置有第一图形库和应用程序,客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述图形处理装置包括:
绘图指令获取模块,用于获取所述应用程序发起的第一绘图指令,所述第一绘图指令对应所述第一图形库的第一图形API;
图形API调用模块,用于根据所述第一绘图指令调用所述第一图形库的所述第一图形库的第一图形API以执行所述第一绘图指令,并向所述应用程序发送第一处理通知,所述第一处理通知用于通知所述应用程序所述第一图形库的第一图形API调用完毕;
调用信息生成模块,用于生成所述第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息用于指示所述客户端调用所述第二图形库的第一图形API,所述第二图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
调用信息发送模块,用于将所述第一图形库的第一图形API的调用信息发送至所述客户端。
14.根据权利要求13所述的装置,其特征在于,所述调用信息生成模块还用于:
确定所述第一绘图指令是否需要返回出口参数;
在所述第一绘图指令需要返回出口参数的情况下,所述第一处理通知还包括所述服务器调用所述第一图形库的第一图形API所产生的出口参数,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数、所述服务器调用所述第一图形库的第一图形API所产生的出口参数和所述第一图形库的第一图形API的标识。
15.根据权利要求14所述的装置,其特征在于,在所述第一图形库的第一图形API不需要返回出口参数的情况下,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数和所述第一图形库的第一图形API的标识。
16.根据权利要求14所述的装置,其特征在于,
所述绘图指令获取模块,用于获取所述应用程序根据所述第一处理通知发起的第二绘图指令,所述第二绘图指令对应所述第一图形库的第二图形API,所述第一图形库的第二图形API的入口参数为所述服务器调用所述第一图形库的第一图形API所产生的出口参数;
所述图形API调用模块,用于根据所述第二绘图指令调用所述第一图形库的第二图形API,并向所述应用程序发送第二处理通知,所述第二处理通知用于通知所述应用程序所述第一图形库的第二图形API调用完毕;
所述调用信息生成模块,用于生成所述第一图形库的第二图形API的调用信息,所述第一图形库的第二图形API的调用信息用于指示所述客户端调用所述第二图形库的所述第二图形API,所述第一图形库的第二图形API的调用信息包括所述第一图形库的第二图形API涉及的参数,以及所述第一图形库的第二图形API的标识;
所述调用信息发送模块,用于将所述第一图形库的第二图形API的调用信息发送至所述客户端。
17.根据权利要求16所述的装置,其特征在于,所述调用信息发送模块,具体用于:
将所述第一图形库的第一图形API的调用信息和所述第二图形库的第二图形API的调用信息保存在先进先出队列;
在满足预定条件后,将所述先进先出队列中的所述第一图形库的第一图形API的调用信息和所述第二图形库的第二图形API的调用信息同时发送给所述客户端。
18.一种图形处理装置,其特征在于,设置于客户端,服务器设置有第一图形库,所述客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述图形处理装置包括:
调用信息接收模块,用于接收所述服务器发送的所述第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
图形API调用模块,用于根据所述所述第一图形库的第一图形API的调用信息中的所述第一图形库的第一图形API的标识和所述第一图形库的第一图形API的调用信息中的所述第一图形API涉及的参数调用所述第二图形库的第一图形API。
19.根据权利要求18所述的装置,其特征在于,所述装置还包括映射关系建立模块,用于在所述第一图形库的第一图形API的调用信息中的所述第一图形库的第一图形API涉及的参数包括所述服务器调用所述第一图形库的第一图形API所产生的出口参数的情况下,获取所述客户端调用所述第二图形库的第一图形API所产生的出口参数,并建立所述服务器调用所述第一图形库的第一图形API所产生的出口参数与所述客户端调用所述第二图形库的第一图形API所产生的出口参数的映射关系。
20.根据权利要求19所述的装置,其特征在于,
所述调用信息接收模块,还用于接收所述服务器发送的所述第一图形库的第二图形API的调用信息,所述第一图形库的第二图形API的调用信息包括所述第一图形库的第二图形API涉及的参数以及所述第一图形库的第二图形API的标识,所述第一图形库的第二图形API的入口参数为所述服务器调用所述第一图形库的第一图形API所产生的出口参数;
所述图形API调用模块,还用于根据所述第一图形库的第二图形API的标识确定所述第二图形库的第二图形API;
所述图形API调用模块,还用于根据所述第一图形库的第二图形API的入口参数查询所述映射关系,获取所述第一图形库的第二图形API的入口参数在所述映射关系中对应的参数,所述第一图形库的第二图形API的入口参数在所述映射关系中对应的参数为所述客户端调用所述第二图形库的第一图形API所产生的出口参数。
21.根据权利要求20所述的装置,其特征在于,所述调用信息接收模块,具体用于:
接收所述服务器同时发送所述第一图形库的第一图形API的调用信息和所述第一图形库的第二图形API的调用信息。
22.一种图形处理装置,其特征在于,设置于服务器,所述服务器还设置有第一图形库和应用程序,客户端设置有第二图形库,所述第一图形库中包括多个图形应用程序编程接口API,所述第二图形库中包括多个图形API,所述第一图形库中至少有M个图形API与所述第二图形库中的M个图形API一一对应,所述图形处理装置包括:
绘图指令获取模块,用于获取所述应用程序发起的第一绘图指令,所述第一绘图指令对应所述第一图形库的第一图形API;
图形API调用模块,用于确定所述第一图形库的第一图形API为所述第一图形库的预定图形API时,拒绝调用所述第一图形库的第一图形API;
所述图形API调用模块,还用于向所述应用程序发送第一处理通知,所述第一处理通知用于通知所述应用程序所述第一图形库的第一图形API调用完毕;
调用信息生成模块,用于生成第一图形库的第一图形API的调用信息,所述第一图形库的第一图形API的调用信息用于指示所述客户端调用所述第二图形库的第一图形API,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API涉及的参数,以及所述第一图形库的第一图形API的标识;
调用信息发送模块,用于将所述第一图形库的第一图形API的调用信息发送至所述客户端。
23.根据权利要求22所述的装置,其特征在于,所述第一图形库的第一图形API的调用信息包括所述第一图形库的第一图形API的入口参数和所述第一图形库的第一图形API的标识。
24.根据权利要求22或23所述的装置,其特征在于,所述预定图形API包括着色器启动图形API、光栅化启动图形API、清除缓冲区图形API或交换缓冲区图形API中的任意一种。
25.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有程序指令,所述处理器运行所述程序指令以执行权利要求1至5任一项所述的图形处理方法。
26.一种客户端,其特征在于,包括处理器和存储器,所述存储器存储有程序指令,所述处理器运行所述程序指令以执行权利要求6至9任一项所述的图形处理方法。
27.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有程序指令,所述处理器运行所述程序指令以执行权利要求10至12任一项所述的图形处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010738340.XA CN112068908B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010738340.XA CN112068908B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
CN201780065686.4A CN109983435B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
PCT/CN2017/107341 WO2019079940A1 (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065686.4A Division CN109983435B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112068908A true CN112068908A (zh) | 2020-12-11 |
CN112068908B CN112068908B (zh) | 2024-01-30 |
Family
ID=66247125
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065686.4A Active CN109983435B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
CN202010738340.XA Active CN112068908B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065686.4A Active CN109983435B (zh) | 2017-10-23 | 2017-10-23 | 图形处理方法及相关装置和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11189003B2 (zh) |
EP (1) | EP3693850A4 (zh) |
CN (2) | CN109983435B (zh) |
WO (1) | WO2019079940A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947993B2 (en) * | 2021-06-22 | 2024-04-02 | International Business Machines Corporation | Cooperative input/output of address modes for interoperating programs |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06325182A (ja) * | 1993-05-10 | 1994-11-25 | Hitachi Ltd | グラフィックス描画方法及びその装置と計算機システム |
KR20100038026A (ko) * | 2008-12-16 | 2010-04-12 | 삼성전자주식회사 | 그래픽 데이터 처리 방법 |
US20130113833A1 (en) * | 2011-11-08 | 2013-05-09 | Alexander Larsson | Method and system for rendering images in a remote web browser |
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 |
CN104272285A (zh) * | 2012-05-31 | 2015-01-07 | 英特尔公司 | 渲染多个远程图形应用程序 |
CN105637886A (zh) * | 2014-09-25 | 2016-06-01 | 华为技术有限公司 | 用于向客户端提供图形用户界面的服务器,以及客户端 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903278A (en) * | 1996-08-02 | 1999-05-11 | Hewlett-Packard Company | Primitive colorization of three dimensional graphics to provide feedback to a developer |
AU2468899A (en) * | 1998-01-26 | 1999-08-23 | Unif/X Inc. | A transaction execution system interface and enterprise system architecture thereof |
US7274368B1 (en) | 2000-07-31 | 2007-09-25 | Silicon Graphics, Inc. | System method and computer program product for remote graphics processing |
US20060080406A1 (en) | 2004-08-20 | 2006-04-13 | Boris Sacks | XWindows++ |
US8035636B1 (en) * | 2005-09-08 | 2011-10-11 | Oracle America, Inc. | Software system for efficient data transport across a distributed system for interactive viewing |
EP2053552A3 (en) * | 2005-11-03 | 2011-02-02 | KTFreetel Co., Ltd. | A legacy cooperation device and processing method |
US7898554B2 (en) * | 2007-06-07 | 2011-03-01 | Apple Inc. | Asymmetric two-pass graphics scaling |
US8180905B2 (en) | 2008-12-09 | 2012-05-15 | Microsoft Corporation | User-mode based remote desktop protocol (RDP) encoding architecture |
US8307103B2 (en) | 2009-03-09 | 2012-11-06 | Microsoft Corporation | Tear-free remote desktop protocol (RDP) display |
US8171154B2 (en) | 2009-09-29 | 2012-05-01 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
US8799357B2 (en) * | 2010-11-08 | 2014-08-05 | Sony Corporation | Methods and systems for use in providing a remote user interface |
CN103164838B (zh) * | 2011-12-12 | 2015-11-04 | 扬智科技股份有限公司 | 图形数据处理方法 |
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 |
CN103457965B (zh) | 2012-05-29 | 2018-11-06 | 索尼公司 | 虚拟机系统和远程显示方法 |
KR20140027741A (ko) * | 2012-08-27 | 2014-03-07 | 한국전자통신연구원 | 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치 |
CN104904230B (zh) | 2012-10-18 | 2018-10-09 | Lg电子株式会社 | 处理交互服务的设备和方法 |
CN104065679B (zh) | 2013-03-21 | 2018-04-20 | 华为技术有限公司 | 一种远程桌面操作的方法及客户端 |
CN103593184B (zh) * | 2013-10-31 | 2016-08-17 | 福州瑞芯微电子股份有限公司 | 图像显示系统及图像显示方法 |
US9876880B2 (en) * | 2014-12-05 | 2018-01-23 | Red Hat, Inc. | Creation of a binding based on a description associated with a server |
CN104536758B (zh) * | 2014-12-29 | 2017-12-08 | 北京奇艺世纪科技有限公司 | 一种图形生成方法及装置 |
US10225570B2 (en) | 2015-11-12 | 2019-03-05 | Vmware, Inc. | Split framebuffer encoding |
CN106161630A (zh) | 2016-07-20 | 2016-11-23 | 中霆云计算科技(上海)有限公司 | 一种基于远程桌面协议的客户端屏幕更新显示方法 |
-
2017
- 2017-10-23 WO PCT/CN2017/107341 patent/WO2019079940A1/zh unknown
- 2017-10-23 CN CN201780065686.4A patent/CN109983435B/zh active Active
- 2017-10-23 CN CN202010738340.XA patent/CN112068908B/zh active Active
- 2017-10-23 EP EP17929704.9A patent/EP3693850A4/en active Pending
-
2020
- 2020-04-22 US US16/854,929 patent/US11189003B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06325182A (ja) * | 1993-05-10 | 1994-11-25 | Hitachi Ltd | グラフィックス描画方法及びその装置と計算機システム |
KR20100038026A (ko) * | 2008-12-16 | 2010-04-12 | 삼성전자주식회사 | 그래픽 데이터 처리 방법 |
US20130113833A1 (en) * | 2011-11-08 | 2013-05-09 | Alexander Larsson | Method and system for rendering images in a remote web browser |
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 |
CN104272285A (zh) * | 2012-05-31 | 2015-01-07 | 英特尔公司 | 渲染多个远程图形应用程序 |
CN105637886A (zh) * | 2014-09-25 | 2016-06-01 | 华为技术有限公司 | 用于向客户端提供图形用户界面的服务器,以及客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN109983435A (zh) | 2019-07-05 |
US20200250790A1 (en) | 2020-08-06 |
EP3693850A1 (en) | 2020-08-12 |
CN109983435B (zh) | 2020-08-07 |
CN112068908B (zh) | 2024-01-30 |
EP3693850A4 (en) | 2020-10-21 |
WO2019079940A1 (zh) | 2019-05-02 |
US11189003B2 (en) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10074206B1 (en) | Network-optimized graphics library for virtualized graphics processing | |
JP3659062B2 (ja) | 計算機システム | |
JP5939524B2 (ja) | サブバッファオブジェクト | |
JP5091215B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
EP1921584B1 (en) | Graphics processing apparatus, graphics library module, and graphics processing method | |
JP5335743B2 (ja) | タスクのスケジューリングを支援する装置 | |
US9098462B1 (en) | Communications via shared memory | |
EP2613269A1 (en) | Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme | |
CN115100022B (zh) | 图形处理方法及系统 | |
US9563466B2 (en) | Method and apparatus for supporting programmable software context state execution during hardware context restore flow | |
CN109964244B (zh) | 用于图形处理的本地图像块 | |
JPH10116346A (ja) | テクスチャの高速ダウンロード方法 | |
US20230403437A1 (en) | Graphics engine and graphics processing method applicable to player | |
EP1883051A1 (en) | Graphic processor and information processing device | |
WO2006123547A1 (ja) | 情報処理装置、システム、方法およびプロセッサ | |
KR100988395B1 (ko) | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 | |
CN109983435B (zh) | 图形处理方法及相关装置和设备 | |
CN117707721A (zh) | 任务提交方法、电子设备及存储介质 | |
EP4148571A1 (en) | Overlapped geometry processing in a multicore gpu | |
CN111310638A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
JP5811211B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
KR101130361B1 (ko) | 코프로세서 내의 연산을 스트림라인하는 방법 | |
US20240070962A1 (en) | Graphics processing method and system | |
CN116974480A (zh) | 闪存芯片访问方法、装置、设备及介质 | |
CN116934570A (zh) | 一种应用程序页面的图像处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |