CN110083324A - 图像绘制的方法、装置、电子设备及计算机存储介质 - Google Patents
图像绘制的方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN110083324A CN110083324A CN201910364751.4A CN201910364751A CN110083324A CN 110083324 A CN110083324 A CN 110083324A CN 201910364751 A CN201910364751 A CN 201910364751A CN 110083324 A CN110083324 A CN 110083324A
- Authority
- CN
- China
- Prior art keywords
- equipment
- instruction
- user interface
- draws
- gpu
- 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.)
- Pending
Links
Classifications
-
- 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
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请提供了图像绘制的方法、装置、电子设备及计算机存储介质,所述方法包括:所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制;所述第一设备向所述第二设备发送所述第一绘制指令。由于传输第一绘制指令的流量消耗远远小于传输渲染后的视频媒体流的流量消耗,使得用户使用第二设备远程控制第一设备时,可以在减少第一设备GPU的压力的同时,降低网络流量占用,提高画面显示流畅度。
Description
技术领域
本申请涉及通信技术领域,尤其涉及图像绘制的方法、装置、电子设备及计算机存储介质。
背景技术
随着网络技术的发展,移动终端已得到广泛应用。然而,为了提高移动终端的移动性和便携性,移动终端的体积通常比较小,因此,移动终端的屏幕大小、存储容量等等均受到了限制。大屏电子设备的移动性和便携性尽管不高,但是,其屏幕大小、存储容量等等通常会更具优势。为了能够利用大屏电子设备的优势来克服移动终端的劣势,例如,移动终端可以将移动终端的用户界面通过网络发送给大屏电子设备,以供用户在智能设备上完成对用户界面的操作。
在目前技术条件下,用户在使用大屏电子设备远程操控移动终端时,在大屏电子设备上完成对用户界面的操作的流畅度非常差,不能满足用户的需求。
发明内容
本申请提供了图像绘制的方法、装置、电子设备及计算机存储介质,能够解决用户在使用大屏电子设备远程操控移动终端时流畅度差的问题。
第一方面,提供了一种图像绘制的方法,应用于第一设备,所述第一设备与第二设备建立通信连接,所述方法包括:
所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制;
所述第一设备向所述第二设备发送所述第一绘制指令。
具体地,所述第一设备具有第一绘图指令库,所述第一设备的图像处理器GPU使用所述第一绘图指令库执行所述第一设备的CPU生成的绘图指令;所述生成第一绘图指令具体为:所述第一设备的CPU根据所述第一用户界面绘制需求以及所述第一绘图指令库,生成可供所述第二设备的GPU执行的所述第一绘制指令。
具体实现中,所述第二设备具有第二绘图指令库,所述第二设备的图像处理器GPU使用第二绘图指令库执行所述第二设备的CPU生成的绘图指令;所述方法还包括:所述第一设备接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;所述生成第一绘图指令具体为:所述第一设备的CPU根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
实施第一方面描述的方法,在用户使用第二设备远程控制第一设备时,第一设备通过获取本应被第一设备GPU执行的第一绘制指令,并将其发送给第二设备,由第二设备的GPU直接执行并显示在第二设备的显示设备中。由于传输第一绘制指令的流量消耗远远小于传输渲染后的视频媒体流的流量消耗,因此可以在减少第一设备GPU的压力的同时,降低网络流量占用,提高画面显示流畅度。并且,由于所述第一绘制指令是根据所述第二设备的设备信息获得的,从而进一步确保了跨设备远程控制的实现。
在一些实施方式中,所述第一设备向所述第二设备发送所述第一绘制指令之前,所述方法还包括:所述第一设备判断是否需要将所述第一用户界面显示在所述第二设备上;若所述第一设备需要将所述第一用户界面显示在所述第二设备上,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,则所述第一设备的GPU执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
在一些实施方式中,所述第一设备向所述第二设备发送所述第一绘制指令之前,所述方法还包括:所述第一绘图指令库判断所述第一用户界面绘制需求是否包括所述第二设备的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;若所述第一用户界面绘制需求包括所述第二设备的标识,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令;若所述第一用户界面绘制需求不包括所述第二设备的标识,则所述第一设备的GPU使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
上述实施方式中,第一设备在需要将所述第一用户界面显示在所述第二设备上时,将所述第一绘制指令发送给第二设备的GPU,在不需要将所述第一用户界面显示在所述第二设备上时,将所述第一绘制指令发送给自己的GPU,从而在保证用户流畅的使用第二设备远程操作第一设备的同时,也确保了用户对第一设备的操作不会受到干扰。
在一些实施方式中,所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包。从而进一步降低远程操作时所需的网络流量,提高指令的传输速度以及画面流畅度。
在一些实施方式中,所述方法还包括:所述第一设备接收所述第二设备发送的控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;所述第一设备的CPU根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的GPU依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;所述第一设备向所述第二设备发送所述第四绘制指令。
在一些实施方式中,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是所述第一用户界面的坐标,所述第一坐标是所述第二设备根据第二坐标以及所述第一用户界面的坐标与所述第二设备屏幕的坐标之间的映射关系后获得的,所述第二坐标是所述第二设备屏幕的坐标,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的。
上述实施方式中,由于第二设备获取的控制信息包含了第一用户界面坐标以及用户的操作动作,而开发人员在进行应用程序的开发时,是根据用户界面坐标以及用户操作动作进行相应的指令编写的,因此第一设备的CPU可以直接根据所述控制信息获得相应的第四绘制指令,并将其发送给第二设备的GPU,从而使得第二设备绘制出第二用户界面,确保用户通过第二设备远程操作第一设备上的应用程序这一方案的实现。
第二方面,提供了一种图像绘制的方法,应用于第二设备,第一设备与所述第二设备建立通信连接,所述方法包括:
所述第二设备接收所述第一设备发送的第一绘制指令,其中,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对应用程序第一用户界面进行绘制;
所述第二设备的图像处理器GPU依据所述第一绘制指令对所述应用程序第一用户界面进行绘制,获得第一绘制结果;
所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示。
具体实现中,所述第一设备具有第一绘图指令库,所述第二设备具有第二绘图指令库,所述方法还包括:所述第二设备向所述第一设备发送所述第二设备的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制,使得所述第一设备根据所述第一绘图指令库以及所述设备信息,生成所述第一绘制指令。
实施第二方面描述的方法,在用户使用第二设备远程控制第一设备时,第一设备通过获取本应被第一设备GPU执行的第一绘制指令,并将其发送给第二设备,由第二设备的GPU直接执行并显示在第二设备的显示设备中。由于传输第一绘制指令的流量消耗远远小于传输渲染后的视频媒体流的流量消耗,因此可以在减少第一设备GPU的压力的同时,降低网络流量占用,提高画面显示流畅度。并且,由于所述第一绘制指令是根据所述第二设备的设备信息获得的,从而进一步确保了跨设备远程控制的实现。
在一些实施方式中,所述第一绘制指令为经过序列化处理和压缩处理得到的压缩包,所述第二设备接收所述第一设备发送的第一绘制指令包括:所述第二设备接收所述第一设备发送的所述压缩包;所述第二设备的CPU对所述压缩包先进行解压缩处理,后经过反序列化处理,获得解压后的压缩包;或者,所述第二设备的CPU对所述压缩包先进行反序列化处理,后经过解压缩处理,获得解压后的压缩包;所述第二设备的CPU根据所述第二绘图指令库以及所述解压后的压缩包,重构所述第一绘制指令。应理解,由于显示数据(第一绘制指令)的结构十分复杂,其中包括了很多存在一定绘制顺序的绘制步骤的调用函数,如果直接将所述第一绘制指令以文件的形式进行传输,可能会在传输过程中出现问题,比如读写顺序出错等,因此可以先对所述第一绘制指令进行序列化处理,将数据分解为有序列号的字节流,以便在网络上行传输。为了进一步减少流量消耗,可以再将序列化后的第一绘制指令进行压缩处理,从而进一步降低远程操作时所需的网络流量,提高指令的传输速度以及画面流畅度。
在一些实施方式中,所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示之后,所述方法还包括:所述第二设备的CPU获取控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;所述第二设备向所述第一设备发送所述控制信息;所述第二设备接收所述第一设备发送的所述第二绘制指令,其中,所述第二绘制指令用于供所述第二设备的GPU依据所述第二绘制指令调用所述第二绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;所述第二设备的GPU依据所述第二绘制指令调用所述第二绘图指令库对所述第二用户界面进行绘制,获得第二绘制结果;所述第二设备的GPU将所述第二绘制结果在所述第二设备的屏幕上显示。
结合第二方面,在一些实施方式中,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是基于所述第一用户界面的坐标,所述方法还包括:所述第二设备的CPU获取所述用户在所述第二设备屏幕的操作动作以及所述操作动作对应的第二坐标,其中,所述第二坐标是基于所述第二设备屏幕的坐标;所述第二设备的CPU获取所述第一用户界面坐标与所述第二设备屏幕坐标之间的映射关系,其中,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的;所述第二设备的CPU根据所述映射关系以及所述第二坐标,获取所述第一坐标;所述第二设备向所述第一设备发送所述控制信息,其中,所述控制信息包括所述第一坐标以及所述用户在所述第一用户界面上的操作动作。
上述实施方式中,由于第二设备获取的控制信息包含了第一用户界面坐标以及用户的操作动作,而开发人员在进行应用程序的开发时,是根据用户界面坐标以及用户操作动作进行相应的指令编写的,因此第一设备的CPU可以直接根据所述控制信息获得相应的第四绘制指令,并将其发送给第二设备的GPU,从而使得第二设备绘制出第二用户界面,确保用户通过第二设备远程操作第一设备上的应用程序这一方案的实现。
第三方面,提供了一种图像绘制控制装置,应用于第一设备,所述第一设备与第二设备建立通信连接,其特征在于,所述装置包括:
处理单元,用于运行应用程序,根据所述应用程序的用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示所述第一设备的图像处理器GPU对所述应用程序的界面进行绘制;
接口,用于供所述处理单元指示所述第一设备的发送器向所述第二设备发送所述第一绘制指令。
具体实现中,所述第一设备具有第一绘图指令库,所述第一设备的GPU使用第一绘图指令库执行所述第一设备的处理单元生成的绘图指令,所述第二设备具有第二绘图指令库,所述第二设备的GPU使用第二绘图指令库执行所述第二设备的处理单元生成的绘图指令;所述接口还用于:接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;所述处理单元还用于:根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
在一些实施方式中,所述处理单元,还用于在所述第一设备向所述第二设备发送所述第一绘制指令之前,判断是否需要将所述第一用户界面显示在所述第二设备上;所述处理单元,还用于若所述第一设备需要将所述第一用户界面显示在所述第二设备上,指示所述第一设备的发送器向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;所述处理单元,还用于若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,通过所述接口将所述第二绘制指令发送给第一设备的GPU,以使所述第一设备的GPU执行所述第二绘图指令并显示所述第一用户界面。
在一些实施方式中,所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包。
在一些实施方式中,所述接口,还用于接收所述第二设备发送的控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;所述处理单元,还用于根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的图像处理单元依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;所述处理单元,还用于根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;所述接口,还用于供所述处理单元指示所述第一设备的发送器向所述第二设备发送所述第四绘制指令。
在一些实施方式中,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是所述第一用户界面的坐标,所述第一坐标是所述第二设备根据第二坐标以及所述第一用户界面的坐标与所述第二设备屏幕的坐标之间的映射关系后获得的,所述第二坐标是所述第二设备屏幕的坐标,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的。
第四方面,提供了一种图像绘制控制系统,包括:第一设备和第二设备,所述第一设备与所述第二设备建立通信连接,其中,
所述第一设备用于通过所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制;
所述第一设备用于向所述第二设备发送所述第一绘制指令;
所述第二设备用于接收所述第一设备发送的所述第一绘制指令;
所述第二设备用于通过所述第二设备的图像处理器GPU依据所述第一绘制指令对所述应用程序第一用户界面进行绘制,获得第一绘制结果;
所述第二设备用于通过所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示。
具体地,所述第一设备具有第一绘图指令库,所述第一设备的图像处理器GPU使用所述第一绘图指令库执行所述第一设备的CPU生成的绘图指令,所述第一设备还用于通过所述第一设备的CPU,根据所述第一用户界面绘制需求以及所述第一绘图指令库,生成可供所述第二设备的GPU执行的所述第一绘制指令。
具体实现中,所述第二设备具有第二绘图指令库,所述第二设备的图像处理器GPU使用第二绘图指令库执行所述第二设备的CPU生成的绘图指令,所述第一设备还用于接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;所述第一设备还用于通过所述第一设备的CPU,根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;所述第一设备还用于根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
在一些实施方式中,所述第一设备还用于在向所述第二设备发送所述第一绘制指令之前,判断是否需要将所述第一用户界面显示在所述第二设备上;
所述第一设备还用于若所述第一设备需要将所述第一用户界面显示在所述第二设备上,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;所述第一设备还用于若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,则所述第一设备的GPU执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
在一些实施方式中,所述第一设备还用于在向所述第二设备发送所述第一绘制指令之前,通过所述第一绘图指令库判断所述第一用户界面绘制需求是否包括所述第二设备的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;所述第一设备还用于若所述第一用户界面绘制需求包括所述第二设备的标识,向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令;所述第一设备还用于若所述第一用户界面绘制需求不包括所述第二设备的标识,则所述第一设备的GPU使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
在一些实施方式中,所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包,所述第二设备还用于接收所述第一设备发送的所述压缩包;所述第二设备还用于对所述压缩包先进行解压缩处理,后经过反序列化处理,获得解压后的压缩包;或者,所述第二设备还用于对所述压缩包先进行反序列化处理,后经过解压缩处理,获得解压后的压缩包;所述第二设备还用于根据所述第二绘图指令库以及所述解压后的压缩包,重构所述第一绘制指令。
在一些实施方式中,所述第二设备还用于在所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示之后,所述第二设备的CPU获取控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;所述第二设备还用于向所述第一设备发送所述控制信息;所述第一设备还用于接收所述第二设备发送的控制信息;所述第一设备还用于根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的GPU依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;所述第一设备还用于根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;所述第一设备还用于向所述第二设备发送所述第四绘制指令;所述第二设备还用于接收所述第一设备发送的所述第四绘制指令;所述第二设备还用于通过GPU依据所述第四绘制指令调用所述第二绘图指令库对所述第二用户界面进行绘制,获得第二绘制结果;所述第二设备还用于将所述第二绘制结果在所述第二设备的屏幕上显示。
在一些实施方式中,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是基于所述第一用户界面的坐标,所述第二设备还用于获取所述用户在所述第二设备屏幕的操作动作以及所述操作动作对应的第二坐标,其中,所述第二坐标是基于所述第二设备屏幕的坐标;所述第二设备还用于获取所述第一用户界面坐标与所述第二设备屏幕坐标之间的映射关系,其中,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的;所述第二设备还用于根据所述映射关系以及所述第二坐标,获取所述第一坐标;所述第二设备还用于向所述第一设备发送所述控制信息,其中,所述控制信息包括所述第一坐标以及所述用户在所述第一用户界面上的操作动作。
第五方面,提供了一种电子设备,包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,其中,所述处理器执行所述指令时执行如第一方面所述的方法。
第六方面,提供了一种电子设备,包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,其中,所述处理器执行所述指令时执行如第二方面所述的方法。
第七方面,提供了一种非瞬态的计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面描述的方法。
第八方面,提供了一种非瞬态的计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第二方面描述的方法。
第九方面,提供了一种计算机程序产品,当所述计算机程序产品被计算机读取并执行时,所述计算机程序产品用于实现如上述第一方面描述的方法。
第十方面,提供了一种计算机程序产品,当所述计算机程序产品被计算机读取并执行时,所述计算机程序产品用于实现如第二方面描述的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1A-图1C是本申请实施例提供的一种应用场景示意图;
图2是本申请实施例提供的一种投屏方法的流程示意图;
图3是本申请实施例提供的一种移动终端启动应用程序的流程示意图;
图4是本申请实施例提供的移动终端进行图像绘制的具体流程示意图;
图5是本申请实施例提供的一种图像绘制方法的流程示意图;
图6是本申请实施例提供的一种图像绘制方法的具体流程示意图;
图7是本申请实施例提供的一种指令压缩的流程示意图;
图8是本申请实施例提供的一种应用场景的示意图;
图9A是本申请实施例提供的一种电子设备的硬件架构示意图;
图9B是本申请实施例提供的一种电子设备的硬件架构示意图;
图10是图9A实施例描述的设备和图9B实施例描述的设备内各个部件的协作交互示意图;
图11是本申请实施例提供的一种图像绘制系统以及相关设备的功能模块示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
为了便于理解本申请实施例,这里先说明本申请实施例涉及的应用场景。场景一:将第一设备的界面投射到第二设备的显示屏上显示;该投射的第一设备的界面是正在或者准备在第一设备的显示屏上显示的界面。场景二:使用第二设备进行远程控制第一设备。将第一设备的界面投射到第二设备之后,第一设备的显示屏显示的画面与第二设备的显示屏显示的画面可以是相同的,也可以是不相同的。其中,界面可以是没有运行程序时的桌面界面,也可以是应用程序运行时的程序界面等等。这里,程序界面可以是游戏程序的界面、计算机程序的界面、即时通信程序的界面以及阅读程序的界面等等。
其中,第一设备可以通过有线或者无线的方式与第二设备进行连接。其中,其中,无线的方式包括通用分组无线服务技术(General Packet Radio Service,GPRS)、无线局域网(Wireless Local Area Networks,WLAN)、紫蜂(ZigBee)、蓝牙(Bluetooth)、近场通信(Near Field Communication,NFC)等等,有线的方式包括网线、铜线、RS232、RS458等等。应理解,上述通讯方式的举例仅仅是用于进行说明,不应构成具体限定。
第一设备以及第二设备可以是显示屏的体积比较小的移动终端。移动终端可以是智能手机、掌上处理设备、平板电脑、移动笔记本、虚拟现实设备、一体化掌机等等。移动终端还可以是可穿戴设备,可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备可以是直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备可以通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
第一设备以及第二设备还可以是显示屏的体积比较大的大屏电子设备。大屏电子设备可以是车载设备、智能会议设备、智能广告设备、智能家电等等。智能家电可以是自带音效设备的家电,例如,智能电视机等等,也可以是不带音效设备的家电,例如,智能投影仪,智能显示屏等等,此处不作具体限定。
在一应用场景中,第一设备可以是显示屏体积比较小的人机交互设备,第二设备可以是显示屏体积比较大的设备,例如,第一设备可以是手机,第二设备可以是电视机,将第一设备的显示屏上显示的界面投射到第二设备的显示屏上显示,可以大大提高用户的视觉体验;第一设备还可以是显示屏提及比较大的设备,第二设备可以是显示屏体积比较小的人机交互设备,例如第一设备是电视机,第二设备是掌上游戏机(例如switch、PS4等等),将第一设备的显示屏上显示的界面投射到第二设备的显示屏上显示,用户使用掌机的手柄进行游戏,可以提高用户的游戏体验;第一设备还可以是与第二设备相同的设备,例如第一设备和第二设备都是手机,将第一设备的显示屏上显示的界面投射到第二设备的显示屏上显示,第一设备置黑显示,可以节省第一设备的电量,降低第二设备存储空间的占用。应理解,上述举例仅用于说明,不能构成具体限定。
下面以图1A-图1C为例,对上述应用场景涉及的人机交互流程进行举例说明,其中,图1A-图1C所描述的应用场景为用户需要使用电视机(第二设备200)玩手机(第一设备100)上的“汤姆猫”游戏。首先,用户需要在电视机上安装一个投屏客户端。当手机和电视机在同一个局域网内时,用户从电视启动所述投屏客户端,将会自动发现待投屏的手机,投屏客户端将会显示如图1A所示的界面。接着,用户点击要连接的手机并输入密码后,手机和电视机即可建立指令通道和反向控制通道。此时,电视机上投屏客户端的界面可以显示出当前能够被投屏的手机App,具体可参考图1B。可以理解的是,这里的投屏客户端界面可以是如图1B所示的,仅仅显示可被投屏的手机App,也可以直接显示所连接的手机的桌面,此处不作具体限定。最后,当用户通过手柄、电视遥控器或者触屏从电视机的投屏客户端界面选择启动“汤姆猫”游戏后,电视机上的投屏客户端将会显示如图1C所示的游戏画面,用户即可从电视机处玩手机上的“汤姆猫”游戏。应理解,上述示例仅仅用于解释本申请实施例,不应构成具体限定。
为了能够实现上述人机交互流程,也就是说,为了能够实现上述场景一,即将在或者准备在第一设备的显示屏上显示的界面投射到第二设备的显示屏上显示,如图2所示,基于安卓系统的一种界面投射方法,可以包括如下步骤:
S101:所述第一设备的中央处理器CPU运行目标应用程序,根据所述目标应用程序的第一用户界面绘制需求,生成第一命令,其中,所述第一命令用于供所述第一设备的图像处理器(Graphics Processing Unit,GPU)调用绘图指令库中的接口对第一用户界面进行绘制,其中,第一用户界面可以是第一设备上的某应用程序的用户界面。
S102:第一设备的CPU将所述第一命令发送给第二设备的GPU。
S103:第一设备的GPU执行所述第一命令调用绘图指令库中的接口对所述第一用户界面进行绘制,以生成视频媒体流。
S104:第一设备通过通信接口将视频媒体流发送给第二设备。相应地,第二设备通过通信接口接收移动终端发送的视频媒体流。
S105:第二设备的CPU将所述视频媒体流发送给显示屏幕,从而显示目标界面。
下面结合图3以及图4,详细说明上述S101-S105描述的界面投射的方法。
在一具体的实施方式中,所述第一设备100的CPU101生成第一命令是开发者在开发目标应用程序时,根据第一用户界面以及绘图指令库103编写的第一命令。需要说明的,第一设备100在接收到用户触发的目标应用程序(Application,App)的启动指令后,目标App的启动过程主要分为两步:第一步:启动支撑目标App运行的多个组件,第二步:调用支撑目标应用程序运行的多个组件实现目标App所需的各种功能,从而完成目标App的启动。其中,所述绘图指令库103是在第一步中加载的,第一命令是在第二步获得的。
需要说明的,目标App是第一设备100安装的程序,具体可以是视频软件、游戏软件、社交软件等等,本申请不作具体限定,第一用户界面是目标App当前需要显示的界面的图像,绘图指令库用于供所述第一设备100的GPU102调用绘图指令库103中的接口对第一用户界面进行绘制。应理解,由于CPU不擅长图形计算,因此图形绘制一般会依赖GPU进行硬件加速,将CPU不擅长的图形计算转换为GPU专用指令,再由GPU进行图像的渲染。而GPU作为一个硬件驱动装置,用户是无法直接使用的,因此GPU一般厂商是按照开放式图形库(OpenGraphics Library,OpenGL)规范实现的驱动,换句话说,GPU通过调用OpenGL中的应用程序编程接口(Application Programming Interface,API)实现图像渲染。其中,OpenGL是用于渲染3D矢量图形的跨语言、跨平台的API。这个API由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。其中,绘图指令库中的API能让编程人员所设计的3D软件只要调用其API内的程序,就可以让API自动和硬件的驱动程序沟通,启动3D芯片内强大的3D图形处理功能,从而大幅度地提高了3D程序的设计效率。其中,绘图指令库可以是OpenGL ES 1.0指令动态库、OpenGL ES 2.0指令动态库、OpenGL ES 3.0指令动态库、OpenGL ES API指令动态库、DirectX指令动态库等等通用开放式图形库,本申请不作具体限定。
在一具体的实施方式中,绘图指令库103是在启动支撑目标App运行的多个组件时加载的。绘图指令库是支撑目标App运行的多个组件中的一种组件。支撑目标App运行的多个组件可以是同时启动的,具体地,支撑所述目标App运行的多个组件可以是通过活动管理服务(ActivityManagerService,AMS)实现的。在开机启动时,首先会启动超级管理服务(SystemServer),紧接着,超级管理服务将会启动AMS。在开机后,AMS将一直处于运行状态。因此,AMS启动多个组件(包括绘图指令库)的具体流程可以如图3所示,具体可以分为三步。第一,用户从桌面点击App对应的应用图标后,系统根据安装时注册的组件信息,也就是注册清单(AndroidManifest)文件,获得支撑目标App运行的多个组件(包括绘图指令库)的信息。第二,由AMS去启动所述支撑目标App运行的多个组件(包括绘图指令库),从而完成启动流程。其中,由于App是Java程序,需要在Java虚拟机上运行,因此,AMS启动所述多个组件(包括绘图指令库)之前,系统层面会提前建立一个Linux进程(Process),该进程存放有一个虚拟机(Virtual Machine,VM),用于运行App。需要说明的,由于创建VM非常耗时,为了加快App启动速度,系统一般会采用复制的方式进行进程和VM的分配:系统开机启动时将启动一个孵化(Zygote)进程,这个进程会初始化系统的第一个VM,当接收到目标App的启动指令时,孵化进程通过复制(fork)自己的的VM,就可以快速创建一个带VM的进程,为目标App运行提供载体。在分配好目标App的进程以及VM后,AMS将会根据注册清单文件启动支撑目标App运行的多个组件(包括绘图指令库)。
在一具体的实施方式中,第一命令是在调用所述支撑目标应用程序运行的多个组件实现目标App所需的各种功能的过程中得到的。在支撑目标App运行的多个组件(包括绘图指令库103)启动之后,主线程1011(或者UI线程)可以通过调用组件实现启动所述目标应用程序所需的各种功能,例如,消息处理的功能以及图像绘制的功能等等,从而获得关于绘制第一用户界面的图像绘制命令,其中,所述图像绘制命令可以是在App程序开发时,开发人员根据所述第一用户界面绘制需求以及绘图指令库编写的,该命令包含了CPU101需要执行的创建相关的命令,比如,创建顶点、创建纹理对象等等,也包含了GPU102需要执行的渲染相关的命令,也就是第一命令,比如,绘制圆形、设置阴影、绘制颜色等等,CPU101在执行了自己需要执行的部分指令后,将需要GPU102执行的第一命令发送给GPU102。
在一具体的实施方式中,第一命令是供所述第一设备的GPU102进行图像绘制的命令,所述第一命令可以是由多个调用函数组成的渲染命令,该调用函数用于调用绘图指令库103中的API,使得GPU102通过绘图指令库103中的绘图函数完成图像绘制。第一命令可以是在App程序开发时,开发人员根据第一用户界面以及绘图指令库103编写的渲染命令,使得App在运行时,CPU101可以根据预先编写的图像绘制命令获得所述第一命令(图4所示的步骤1)。具体实现中,开发者可以通过向基于所述绘图指令库的开发软件(例如OpenGL软件)导入第一用户界面模型的方式自动生成GPU102渲染所述模型所需的第一命令;也可以通过递归遍历整个第一用户界面,也就是需要GPU102绘制的应用程序界面,按照绘制所述第一用户界面所需的绘制步骤以及绘图指令库编写渲染指令,使得App启动时,主线程1011根据App程序开发时写好的图像绘制命令,获得所述第一指令,并将其发送给渲染线程(Render Thread),渲染线程配置好OpenGL环境后,通知GPU102准备执行所述第一命令,完成图像渲染的操作,具体可以如图4左下角渲染线程1012部分所示的步骤2以及步骤3。
例如,假设所述第一用户界面是一个红色的圆形的图像,那么第一命令可以包括设置顶点数组的OpenGL调用函数、画圆形的OpenGL调用函数、设置阴影的OpenGL调用函数以及设置颜色的OpenGL调用函数,当App在启动过程中,CPU可以获取到绘制启动界面所需的第一命令,并发送给GPU,GPU根据第一命令,依次调用OpenGL库中设置顶点数组的函数、画圆形的函数、设置阴影的函数以及设置颜色的函数,从而绘制出所述第一用户界面,即一个红色的圆形。应理解,上述举例仅用于说明,并不能构成具体限定。
在一具体的实施方式中,如图4的GPU102部分所示,第一设备的GPU102从所述GPU通信中介104中接收所述第一命令后,将会执行所述第一命令,调用绘图指令库101中的接口对第一用户界面进行绘制(步骤4至步骤6)。具体实现中,GPU102可以根据第一命令,按照绘制步骤依次调用所述绘图指令库中的API接口,使用绘图指令库103中的绘图函数进行图像绘制,例如顶点处理以及像素处理等等,从而从简单的图形比特绘制出复杂的三维景象,也就是渲染结果。
需要说明的,在界面投射的过程当中,第二设备200上显示的界面不是静止的而是每帧不断变化的界面,因此,GPU102在渲染出多帧画面后,可以将所述多帧画面压缩为一连串的媒体数据流,以便接下来在步骤S104中,如图4所示,通过互联网分段发送数据,将所述媒体数据流发送给第二设备200(步骤7至9),使得第二设备200接收到所述媒体数据流后,可以直接将所述媒体数据流输出至第二设备的显示屏幕201进行显示(步骤10),从而完成界面投射的整个流程。
综上可知,该技术实现中,界面投射或者远程控制应用程序采用的是传递视频图像媒体流的方式,这一过程不但给第一设备的GPU带来很大压力,而且由于渲染好的图像文件较大,传输过程中将会占用较高的网络流量以及高速缓存容量,在界面投射过程中,第二设备很容易出现显示画面的延时、流畅度差,文本显示效果差、3D效果差等问题,给用户带来不良体验。
为了解决上述显示不良的问题,本申请提供一种图像绘制的方法,使得在第二设备200远程控制第一设备100的情况下,可实现在降低第一设备100的GPU压力的同时,大大降低网络流量占用,进而提高第二设备200显示画面的流畅度。
本申请实施例涉及的主要原理包括:通过将上述本应由第一设备的CPU发送给第一设备GPU的第一命令,发送给第二设备的GPU,使其不再被第一设备的GPU执行,而是由第二设备的GPU直接执行并显示在第二设备的显示设备中。由于传输指令压缩文件的流量消耗远远小于传输渲染后的视频媒体流文件的流量消耗,因此可以在降低第一设备的GPU压力的同时,降低网络流量占用,提高画面显示流畅度。
下面结合附图详细描述本申请实施例提供的图像绘制的方法。
图5是本申请实施例提供的一种图像绘制的方法流程示意图。如图5所示,其中,所述第一设备与第二设备建立通信连接,以实现所述第一设备与所述第二设备之间的数据通信,所述第一设备的存储器中存有第一绘图指令库,所述第二设备的存储器中存有第二绘图指令库,用户需要通过第二设备远程控制第一设备上的应用程序,下面展开描述:
S501:所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制。
S502:第一设备的CPU对所述第一绘制指令进行压缩处理,获得第一压缩包。具体的,所述第一设备可以采用序列化后再压缩的方式将所述第一绘制指令进行压缩,从而降低传输时所需的网络流量,进而提高传输速度。
S503:第一设备的CPU通过所述第一设备的发送器向所述第二设备发送所述第一压缩包,第二设备的中央处理器CPU通过所述第二设备的接收器接收所述第一压缩包。
S504:第二设备的CPU解压缩所述第一压缩包,获得所述第一绘制指令。具体的,所述第二设备可以采用先解压缩再反序列化的方式对所述第一压缩包进行解压,并对解压后的第一压缩包进行解析,重构为第二设备GPU可识别第一绘制指令。
S505:所述第二设备的图像处理器GPU依据所述第一绘制指令对所述应用程序第一用户界面进行绘制,获得第一绘制结果。具体的,所述第二设备的GPU执行所述第一绘制指令,调用第二绘图指令库中的绘图函数进行图像绘制,得到绘制结果。
S506:所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示。具体的,第二设备的GPU可以先将绘制结果输出至帧缓存器中(Video Memory),再输出至显示设备。
下面结合图6详细说明上述S501-S506描述的图像绘制过程。
在本申请实施例中,所述第一绘制指令是所述第一设备300根据第一绘图指令库303以及第二设备400的设备信息获得的。具体地,所述方法还包括:所述第一设备接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;所述生成第一绘图指令具体为:所述第一设备的CPU根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。也就是说,第一设备的CPU首先获取用于根据本地的第一绘图指令库303进行图像绘制的第二绘制指令,再根据第二设备的设备信息,将所述第二绘制指令修改为第二设备GPU能够执行的第一绘制指令,从而保证跨设备远程控制方案的实现。
需要说明的,所述第一用户界面即为前述内容中的第一用户界面,所述第二设备400中的第二绘图指令库403即为前述内容中的第二设备200中的绘图指令库203,这里不再进行赘述。但是,所述第一绘图指令库303与前述内容中的第一设备100中的绘图指令库103不同,所述第二绘制指令也与前述内容中的第一命令不同。因此,下面对所述第一绘图指令库303以及第二绘制指令进行详细说明。
在本申请实施例中,结合图4以及图6可知,所述第一绘图指令库303与所述绘图指令库103的不同之处在于,所述第一绘图指令库303还可以判断所述第一用户界面绘制需求是否包括所述第二设备400的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;若所述第一用户界面绘制需求包括所述第二设备的标识,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令;若所述第一用户界面绘制需求不包括所述第二设备的标识,则所述第一设备的GPU使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
具体实现中,图6中的所述第一绘图指令库303在所述绘图指令库103的基础上增加了判断是否需要在第二设备上显示所述第一用户界面的功能,并且,若需要在第二设备上显示所述第一用户界面,所述第一绘图指令库303将会阻止所述GPU调用所述第一绘图指令库303进行图像绘制(图6中的步骤3),并将所述第二绘制指令返回给CPU,使得CPU301根据设备信息将所述第二绘制指令修改为第一绘制指令后,发送给第二设备。这与图4中的绘图指令库103不同的是,绘图指令库103则会允许GPU调用所述绘图指令库中的API进行图像绘制,从而生成视频媒体流(图4中的步骤2至步骤7),发送给第二设备。需要说明的,由于所述第一绘图指令库303是在所述绘图指令库103的基础上进行修改的,因此所述第一绘图指令库403与绘图指令库103中的API接口、参数以及调用方法完全一致。
在本申请实施例中,第二绘制指令与前述内容中的第一命令相同的是,第二绘制指令也是目标App在程序开发时已编写好的,供GPU执行的渲染命令,所述第二绘制指令是开发者根据所述第一用户界面以及第一绘图指令库编写的供GPU执行的第二绘制指令。但是,所述第二绘制指令与前述第一命令存在两个不同点。
所述第二绘制指令与前述内容中的第一个不同点在于,第一命令用于调用绘图指令库103进行图像绘制,第二绘制指令用于调用第一绘图指令库303进行图像绘制。
所述第二绘制指令与前述内容中的第二个不同点在于,所述第二绘制指令还包括第一设备300的资源句柄(Resource Handle)信息。也就是说,第一绘图指令库303在阻止所述GPU调用所述第一绘图指令库303进行图像绘制,并将所述第二绘制指令返回给CPU时,还会返回第一设备的GPU302在准备执行所述第二绘制指令时,创建资源产生的句柄信息。应理解,如果不发送第一设备300在执行第二绘制指令时创建资源的句柄信息,直接将纯指令发送给第二设备400,由于第二设备400的资源环境与第一设备300不同,将会出现第二设备400显示错误的情况。简单来说,如果第一设备300生成的第二绘制指令是关于显示A的指令,直接将指令函数发送给第二设备400,第二设备400并不知道A是什么,将会出现无法显示的情况。举例来说,假设第一设备300的用于渲染的缓冲区对象(buffer)为A,第二设备400的缓冲区对象为B,第一设备300生成的绘制指令的伪代码是:
1.bufferA=glGenBuffers();//生个一个buffer
2.glBindBuffer(bufferA);//绑定buffer
如果直接将上述函数名和参数发送给第二设备400,那么第二设400备执行的伪代码是:
1.bufferB=glGenBuffers();//在第二设备生个一个buffer
2.glBindBuffer(bufferA);//出错,第二设备不认识bufferA是什么
如果将第一设备300生成资源的句柄同上述函数名和参数同时发送给第二设备400,那么第二设备400执行的伪代码是:
1.bufferB=glGenBuffers();//在第二设备生成一个buffer
2.bufferA->bufferB;//第二设备的资源句柄和第一设备产生的资源句柄做映射
3.glBindBuffer(bufferA);//绑定buffer
第二设备400在执行上述伪代码时,可以从映射表中查找bufferA对应的本地句柄,也就是bufferB,使得第二设备400得到glBindBuffer(bufferA)即为glBindBuffer(bufferB)的信息,最终执行的是glBindBuffer(bufferB),这样就得到正确的结果,从而达到第二设备400远程显示第一设备300界面的目的。也就是说,与第一设备300资源无关的指令,是可以直接发送给第二设备400的,但是与创建第一设备300资源相关的指令,需要将第一设备300执行该指令得到的相关句柄信息也发送给第二设备400,从而避免上述问题的出现,进一步保证跨设备远程控制方案的实现。应理解,上述举例以及涉及的伪代码均为举例说明,并不能构成具体限定。
在本申请实施例中,第一设备的GPU302将不会进行任何关于目标App的图像渲染的操作,因此,在第二设备400远程控制第一设备300的过程当中,第一设备300可以直接进入置黑(例如图1C所示)或者锁屏界面,从而减少第一设备的内存、电量等额外消耗,进而提高远程控制过程的流畅度以及续航程度。
需要说明的,所述第一绘图指令库303可以通过升级所述第一设备400上的应用程序获得,所述第一绘图指令库303可以是在目标App第一次启动时联网下载的指令库,也可以是本地下载好的指令库,本申请不作具体限定。
在本申请实施例中,若所述第一设备300直接将所述第二绘制指令发送给第二设备400,第二设备400如果是与第一设备300完全不同类型的设备,可能会出现第二设备的GPU402无法识别或没有能力执行所述第二绘制指令的情况。因此,所述第一设备300可以根据第二设备400的设备信息,将所述第二绘制指令修改为第二设备GPU402可识别的第一绘制指令,使得所述第一绘制指令由第一设备发送至第二设备后,第二设备的GPU402也可以执行所述第一绘制指令,从而实现跨设备的投屏或者远程App的控制。举例来说,假设第二设备支持的帧率(Frame rate)最大为30Hz,第一设备支持的帧率最大为60Hz,如果直接将可以绘制60帧图像画面的第二绘制指令发送给第二设备,第二设备将无法显示,因此,第一设备在获得到第二绘制指令后,可以根据第二设备信息,对其进行降频处理,将绘制60帧画面的第二绘制指令修改为绘制30帧图像画面的第一绘制指令,并将其发送给第二设备的GPU执行,从而实现跨设备的投屏或者远程App的控制。
需要说明的,第二设备的设备信息可以是在第二设备启动投屏客户端后,第二设备选择与第一设备建立有线或无线连接时获得的信息,也可以是第二设备向第一设备发送应用程序的启动请求时获得的信息,还可以是已经向第二设备传输了多帧画面后,第二设备反馈的帧率方面的设备信息,比如提示帧率过高无法显示等等,本申请不作具体限定。
在本申请实施例中,第一设备300在步骤S502对所述第一绘制指令进行了压缩处理,得到了第一压缩包,其中,压缩处理可以包括序列化处理和压缩处理。应理解,由于显示数据(第一绘制指令)的结构十分复杂,其中包括了很多存在一定绘制顺序的绘制步骤的调用函数,如果直接将所述第一绘制指令以文件的形式进行传输,可能会在传输过程中出现问题,比如读写顺序出错等,因此可以先对所述第一绘制指令进行序列化处理,将数据分解为有序列号的字节流,以便在网络上行传输。为了进一步减少流量消耗,可以再将序列化后的第一绘制指令进行压缩处理。其中,序列化方法可以是Kryo序列化、Java序列化等等,压缩算法可以是LZ4(Lempel-Ziv-4-algorithm)压缩算法、LZMA(Lempel-Ziv-Markov chain-Algorithm)压缩算法等等,本申请不作具体限定。需要说明的,序列化处理和压缩处理的先后顺序本申请不作具体限定。也就是说,步骤S502的压缩处理可以是先进行序列化处理再进行压缩处理,也可以是先进行压缩处理再进行序列化处理,本申请不作具体限定。
可以理解的,第二设备400在步骤S504对所述第一压缩包进行了解压处理,得到所述第一压缩包的解压缩文件。应理解,第二设备400的解压缩过程是与第一设备300的压缩过程对应的,也就是说,第一设备300在步骤S502进行了序列化处理,第二设备400就在步骤S504进行反序列化处理,第一设备300在步骤S502进行了压缩处理,第二设备400就在步骤S504进行解压缩处理。
举例来说,图7是本申请提供的一种第一绘制指令的压缩流程示意图。由图7可知,第设备在获取到所述第一绘制指令后,首先通过Kryo序列化,将所述第一绘制指令分解为适合网络传输的字节流;接着通过LZ4压缩方法,将序列化后的第一绘制指令压缩为第一压缩包;再通过指令通道将所述第一压缩包发送给第二设备;最后,第二设备将接收到的所述第一压缩包依次进行LZ4解压操作以及Kryo反序列化操作,复原所述第一绘制指令。应理解,图7所示的压缩流程仅用于举例说明,还可以通过Java序列化、LZMA压缩方法等其他序列化方法和压缩方法,并且,序列化方法与压缩方法的执行顺序也可以与图7不同,本申请不作具体限定。
在本申请实施例中,如果第二设备400是与第一设备300相同类型的设备,第一设备300上的第一绘图指令库303中的API接口、参数以及调用方法可以与第二设备400上的第二绘图指令库403完全一致,此时第一压缩包解压后得到的第一绘图指令可以直接被第二设备的GPU402执行,但是,如果第二设备400是与第一设备300不同类型的设备,第一绘图指令库303可能与第二绘图指令库403中的API接口、参数以及调用方法不同,比如第一绘图指令库303是OpenGL3.0,第二绘图指令库403是OpenGL2.0,此时解压后得到的绘图指令可能无法被第二设备的GPU402执行,因此第二设备400在步骤S504对所述第一压缩包进行解压得到第一绘图指令,所述第二设备400的CPU401根据本地的第二绘图指令库403以及所述解压后的压缩包,重构所述第一绘制指令。使得重构后的第一绘制指令能够完全被所述第二设备的GPU402识别,从而调用第二设备400中的第二绘图指令库403中的API完成图像绘制。也就是说,为了确保跨设备图像绘制的准确率,第二设备在获得所述第一压缩包并进行解压后,还可以根据第二设备400本地的第二绘图指令库403,将部分本地无法执行的3D绘制指令,替换为具有相同功能的,调用本地的第二绘图指令库403即可完成渲染的3D绘制指令,获得所述第二设备GPU402可识别的第一绘制指令,使得第二设备GPU402可直接执行所述第一绘制指令,得到GPU的绘制结果并输出至显示设备(图6中的步骤9至步骤11),从而确保跨设备远程控制方案的实现。
在本申请实施例中,在步骤S506后,在所述用户需要在第二设备处操控所述应用程序的情况下,所述第二设备的CPU还可以获取用户的控制信息,其中,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作,所述第二设备将所述控制信息发送给第一设备,所述第一设备的CPU根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的GPU依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;所述第一设备向所述第二设备发送所述第四绘制指令,所述第二设备的GPU依据所述第四绘制指令调用所述第二绘图指令库对所述第二用户界面进行绘制,获得第二绘制结果,并将所述第二绘制结果在所述第二设备的屏幕上显示,使得第二设备的显示屏幕不断更新所述应用程序的用户界面,直至远程操控结束。需要说明的,第一设备与第二设备建立远程连接后,可以建立两个传输通道,一个用于第一设备向第二设备传输所述第一压缩包,一个用于第二设备向第一设备传输所述控制信息,两个通道互不干扰,从而确保远程控制时的稳定性。其中,所述控制信息可以是第二设备的手柄、遥控器、触控设备等控制器产生的控制信息,本申请不作具体限定。
在本申请实施例中,,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是基于所述第一用户界面的坐标,所述方法还包括:所述第二设备的CPU获取所述用户在所述第二设备屏幕的操作动作以及所述操作动作对应的第二坐标,其中,所述第二坐标是基于所述第二设备屏幕的坐标;所述第二设备的CPU获取所述第一用户界面坐标与所述第二设备屏幕坐标之间的映射关系,其中,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的;所述第二设备的CPU根据所述映射关系以及所述第二坐标,获取所述第一坐标;所述第二设备向所述第一设备发送所述控制信息,其中,所述控制信息包括所述第一坐标以及所述用户在所述第一用户界面上的操作动作。可以理解的,由于第二设备获取的控制信息包含了第一用户界面坐标以及用户的操作动作,开发人员在进行应用程序的开发时,是根据用户界面坐标以及用户操作动作进行相应的指令编写的,因此第一设备的CPU可以直接根据所述控制信息获得相应的第四绘制指令,并将其发送给第二设备的GPU,从而使得第二设备绘制出第二用户界面,确保用户通过第二设备远程操作第一设备上的应用程序这一方案的实现。
具体实现中,所述控制信息可以是第二设备处的投屏客户端将所述应用程序的用户界面与投屏客户端的窗口进行绑定,以及所述投屏客户端的窗口与所述第二设备的屏幕进行绑定后,第二设备的CPU获取的控制信息,其中,所述控制信息包含了用户在第一用户界面某一点操作的第一坐标以及具体的操作动作(比如滑动、单击或者双击),使得所述第一设备在接收到所述控制信息后,可以根据所述第一坐标以及具体的操作动作,获得相应的第四绘制指令,第二设备的GPU可以根据所述第一绘制指令绘制出与用户的控制信息对应的第二用户界面,最终在第二设备上不断更新屏幕画面。可以理解的,第一设备的CPU只有收到基于第一用户界面的坐标以及操作动作后,才可以根据开发人员之前编写的程序代码,得到对应该第一用户界面的坐标以及操作动作的新的第一绘制命令。如果不进行绑定操作,第二设备的CPU只能获取到用户在第二设备屏幕上操作的屏幕坐标,并将屏幕坐标发送给第一设备,但是第一设备并不知道第二设备的屏幕坐标所代表的含义,导致远程操控失败。而在投屏客户端的窗口与所述第二设备的屏幕进行绑定后,第二设备的CPU可以得知屏幕坐标与投屏客户端坐标之间的第一映射关系,将所述应用程序的用户界面与投屏客户端的窗口进行绑定之后,第二设备的CPU可以得知投屏客户端坐标与用户界面坐标之间的第二映射关系,从而在获取到用户操作的屏幕坐标(第二坐标)后,根据第一映射关系获得对应的投屏客户端坐标,再根据第二映射关系获得对应的用户界面坐标(第一坐标),从而将所述用户界面坐标与用户的操作动作发送给第一设备。
例如,仍以图1A-图1C所示的应用场景为例,所述第二设备200处安装的投屏客户端可以在用户选择与第一设备100建立连接后(如图1A所示),所述第二设备200的CPU通过投屏客户端,将投屏客户端窗口与第二设备200的屏幕进行绑定,使得第二设的CPU获得用户在屏幕上操作时的屏幕坐标与投屏客户端坐标之间的第一映射关系,当用户选择启动第一设备100上的“汤姆猫”游戏时(如图1B所示),第二设备的CPU将会通过投屏客户端,将所述客户端窗口与游戏的用户界面进行绑定,使得第二设备的CPU获得所述投屏客户端坐标与游戏的用户界面坐标之间的第二映射关系。最终,当用户在第二设备屏幕上操作时,第二设备的CPU首先会获取该操作对应的屏幕坐标(第二坐标),如果该屏幕坐标不属于投屏客户端窗口范围内,比如图8所示的,用户虽然打开了投屏客户端进行游戏,但是选择的是第二设备的“设置”按钮,那么第二设备将会执行本机相应的操作,打开设置界面。如果该屏幕坐标属于投屏客户端窗口范围内,第二设备的CPU可以首先根据第一映射关系获取到该操作对应的投屏客户端坐标,再根据第二映射关系获取到该操作对应的用户界面坐标(第一坐标),将所述用户界面坐标和操作动作发送给第一设备后,再接收第一设备根据所述游戏坐标以及操作动作生成的第一绘制指令,从而实现通过第二设备200玩第一设备上的“汤姆猫”游戏的目的。应理解,上述举例仅用于说明,并不能构成具体限定。
可以理解的是,基于本申请提供的图像绘制方法,在用户使用第二设备远程控制第一设备时,第一设备获取本应被第一设备GPU执行的第一绘制指令,并将其发送给第二设备,由第二设备的GPU直接执行并显示在第二设备的显示设备中。由于传输第一绘制指令的流量消耗远远小于传输渲染后的视频媒体流的流量消耗,因此,实施本申请实施例,可以在减少第一设备GPU的压力的同时,降低网络流量占用,提高画面显示流畅度。
下面介绍本申请实施例提供的所述第一设备和所述第二设备,可分别如图9A、图9B所示的第一设备100和第二设备200。
参考图9A,第一设备100可包括:处理器101、存储器102(一个或多个计算机可读存储介质)、通信模块103、输入输出系统105以及图像处理器106。这些部件可在一个或多个通信总线104上通信。
处理器101可包括但不限于:指令判断模块、指令压缩模块以及指令同步模块。其中,根据前述内容可知,所述指令判断模块用于在确认所述第一设备需要将所述第一用户界面显示在所述第二设备上的情况下,向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令,所述指令同步模块用于将所述第二绘制指令调整为第二设备200的图像处理器206识别的调用指令,也就是第一绘制指令,所述指令压缩模块则用于将所述第一绘制指令压缩成第一压缩包。具体实现中,处理器101还可集成包括:一个或多个CPU、时钟模块以及电源管理模块。所述时钟模块主要用于为处理器101产生数据传输和时序控制所需要的时钟。所述电源管理模块主要用于为处理器101、通信模块103以及输入输出系统105等提供稳定的、高精确度的电压。
存储器102与处理器101耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器102可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器102可以存储操作系统(下述简称系统),例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。存储器102还可以存储网络通信程序,该网络通信程序可用于与一个或多个终端设备,例如所述第二设备,进行通信。存储器102还可以存储用户接口程序,例如本申请提供的第一绘图指令库,该用户接口程序可以通过图形化的操作界面,例如投屏客户端的UI界面,将应用程序的内容形象逼真的显示出来,并通过菜单、对话框以及按键等输入控件接收用户对应用程序的控制操作。
通信模块103用于接收和发送无线信号,主要集成了第一设备100的接收器和发射器。具体实现中,通信模块103可包括但不限于:Wi-Fi模块、蓝牙模块。Wi-Fi模块、蓝牙模块可分别用于其他通信设备,例如第二设备200,建立Wi-Fi、蓝牙等通信连接,以实现近距离的数据通信。在一些实施例中,可在单独的芯片上实现通信模块103。
输入输出系统105主要用于实现第一设备100和用户/外部环境之间的交互功能,主要包括第一设备100的输入输出装置。具体实现中,输入输出系统105可包括输入设备以及输出设备。其中,输入设备和输出设备可与各自对应的外围设备耦合。例如触摸屏控制器1051、显示设备1052等等。需要说明的,输入输出系统205还可以包括其他I/O外设。
图像处理器106用于图像绘制,可包括但不限于:API调用模块以及指令处理模块,其中,参考前述内容可知,所述API调用模块用于根据第一绘制指令调用第一绘图指令库中的API接口获得指令码和参数,指令处理模块用于执行所述API的指令码和参数,从而得到执行结果(3D动画场景),并通过输入输出系统105输出至显示设备1052。
需要说明的,所述第一设备100的第一绘图指令库还用于判断所述第一用户界面绘制需求是否包括所述第二设备的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;若所述第一用户界面绘制需求包括所述第二设备的标识,则通过通信模块103将第一绘制指令发送给第二设备200,且所述第一设备的图像处理器106无法使用所述第一绘图指令库执行所述第二绘制指令;若所述第一用户界面绘制需求不包括所述第二设备的标识,则图像处理器106使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
参考图9B,第二设备200可包括:处理器201、存储器202(一个或多个计算机可读存储介质)、通信模块203、输入输出系统205和图像处理器206。这些部件可在一个或多个通信总线204上通信。
处理器201可包括但不限于:指令解压模块、指令重构模块以及坐标处理模块。其中,参考前述内容可知,所述指令解压模块用于对第一设备100发送的第一压缩包进行解压缩处理,从而获得第一绘制指令。所述指令重构模块用于根据存储器202中的第二绘图指令库,对所述第一绘制指令进行解析和重构,使得重构后的第一绘制指令能够被图像处理器206识别并调用,从而进一步确保跨设备远程操作应用程序的方案的实现。所述坐标处理模块用于根据输入输出系统205获取的用户操作动作以及屏幕坐标(第二坐标),根据预先获得的屏幕坐标与用户界面坐标之间的映射关系,计算出所述屏幕坐标对应的用户界面坐标(第一坐标),从而将用户的操作信息以及对应的第一坐标发送给第一设备,进一步保证远程控制第一设备应用程序方案的实现,具体可参考前述实施例,这里不再赘述。具体实现中,处理器201还可集成包括:一个或多个CPU、时钟模块以及电源管理模块。所述时钟模块主要用于为处理器201产生数据传输和时序控制所需要的时钟。所述电源管理模块主要用于为处理器201、通信模块203以及输入输出系统205等提供稳定的、高精确度的电压。
存储器202与处理器201耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器202可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器202可以存储操作系统(下述简称系统),例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。存储器202还可以存储网络通信程序,该网络通信程序可用于与一个或多个终端设备,例如所述第二设备,进行通信。存储器202还可以存储用户接口程序,例如本申请提供的第二绘图指令库,该用户接口程序可以通过图形化的操作界面,例如投屏客户端的UI界面,将应用程序的内容形象逼真的显示出来,并通过菜单、对话框以及按键等输入控件接收用户对应用程序的控制操作。
通信模块203用于接收和发送无线信号,主要集成了第二设备200的接收器和发射器。具体实现中,通信模块203可包括但不限于:Wi-Fi模块、蓝牙模块。Wi-Fi模块、蓝牙模块可分别用于其他通信设备,例如第一设备100,建立Wi-Fi、蓝牙等通信连接,以实现近距离的数据通信。在一些实施例中,可在单独的芯片上实现通信模块203。
输入输出系统205主要用于实现第二设备200和用户/外部环境之间的交互功能,主要包括第二设备200的输入输出装置。具体实现中,输入输出系统205可包括触摸屏控制器2051、手柄控制器2051、音频控制器2053、显示设备2054等等。其中,各个控制器和显示设备可与各自对应的外围设备耦合。例如触摸屏2055、手柄或遥控器2056、音频电路2057、显示屏2058等等。需要说明的,输入输出系统205还可以包括其他I/O外设。
图像处理器206用于图像绘制,可包括但不限于:API调用模块以及指令处理模块,其中,根据前述内容可知,所述API调用模块用于根据第一绘制指令调用绘图指令库中的API接口,指令处理模块用于执行所述API的指令码和参数,从而得到执行结果(3D动画场景),并通过输入输出系统205输出至显示设备2054。
可以理解的,图9A所示的第一设备100可以是前述全部内容中的所述第一设备,图9B所示的第二设备200可以是前述全部内容中的所述第二设备。下面以图5实施例为例,详细说明第一设备100中的各个部件和第二设备200中的各个部件在本申请实施例中的协作关系,请参考图10。
1.输入输出系统205接收到用户发送的远程控制第一设备的请求后,通过通信模块203向第一设备发送该远程控制请求。具体实现中,触摸屏1054可以显示如图5所示的投屏客户端的图标,用户点击图标并选择第一设备进行远程控制后,即可向第一设备发送远程控制请求。
2.通信模块103接收所述远程控制请求,将其发送给处理器101。
3-6.处理器101可以根据远程控制请求中的验证信息进行验证,验证通过的情况下,与第二设备建立指令通道和反向控制通道,其中,所述指令通道用于第一设备向第二设备传输所述第一压缩包,所述反向控制通道用于第二设备向第一设备传输触控信息。
7-9.处理器201在接收到输入输出系统205接收的目标App的启动请求后,将所述目标App的启动请求发送给第一设备。具体实现中,触摸屏1054可以显示如图1B所示的投屏客户端界面,用户点击目标应用程序后,即可向第一设备发送目标应用程序的启动请求。
10.处理器101接收到目标应用程序的启动请求后,根据目标应用程序安装时获得的注册信息,通过AMS启动支撑App运行的相关组件(包括第一绘图指令库)。关于该过程的具体实现请参考图3实施例,这里不再赘述。
11.处理器101根据存储器102中存储的开发目标App的开发人员预先编写的程序,获得所述第二绘制指令,所述第二绘制指令是开发人员根据第一绘图指令库(例如OpenGL库)以及需要显示的第一用户界面构建的,其中,所述第二绘制指令是供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的指令。关于该过程的具体实现请参考图4实施例,这里不再赘述。
12.处理器101通过第一绘图指令库,确定所述第一用户界面绘制需求是否包括所述第二设备的标识,在确定第一用户界面绘制需求包括所述第二设备的标识后,所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令。具体地,所述第一绘图指令库可以在所述第一设备的GPU准备通过所述第一绘图指令库执行所述第二绘制指令时,阻止所述GPU调用所述第一绘图指令库进行图像绘制,并将所述第二绘制指令返回给CPU,并且,所述第二绘制指令中还包括第一设备的图像处理器106在调用第一绘图指令库之前,创建资源时生成的资源句柄信息,所述资源句柄信息的具体解释可参考前述内容,这里不再赘述。
13.处理器101根据远程控制请求中的第二设备200的设备信息,通过指令同步模块将所述第二绘制指令修改为第二设备适用的第一绘制指令。
14.处理器101将第一绘制指令进行压缩处理,获得第一压缩包。具体实现中,可以对所述第一绘制指令进行序列化和压缩处理,例如图7实施例所示的压缩方法。
15-17.通信模块103向第二设备200的通信模块203发送所述第一压缩包,第二设备200的通信模块203接收所述第一压缩包,通信模块203将所述第一压缩包发给处理器201。
18.处理器201对所述第一压缩包进行解压处理,获得第一绘制指令。具体实现中,可以对所述第一压缩包进行反序列化和解压处理,例如图7实施例所示的解压缩方法。
19.处理器201通过指令重构模块对所述第一绘制指令进行处理,根据所述第二绘图指令库,将其中第二设备无法识别的3D绘制指令,替换为本地具有相同功能的3D绘制指令,获得重构后的第一绘制指令,所述重构后的第一绘制指令是第二设备200的图像处理器206可以识别的3D绘制指令。应理解,这一步是为了确保解压后的第一绘制指令能够被第二设备200的图像处理器206执行,如果解压后的第一绘制指令已经是图像处理器206可识别的3D绘制指令,那么步骤19可被省去。
20.处理器201向图像处理器206发送所述重构后的第一绘制指令。
21.图像处理器206执行所述重构后的第一绘制指令,通过调用存储器202中的第二绘图指令库(例如OpenGL库)中的API接口,进行图像渲染,获得图像绘制结果。
22.图像处理器202将指令执行结果输出至显示设备。
在一实施例中,输入输出系统205通过输入设备,例如手柄2056或者触摸屏2055接收到用户的控制信息后,将会通过通信模块203向第一设备发送所述控制信息,使得所述第一设备的CPU根据所述控制信息重复上述步骤10-22,从而生成用户绘制第二用户界面的第四绘制指令,其中,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,具体可参考前述实施例,这里不再赘述。
需要说明的,图9A仅仅是本申请实施例的一种实现方式,实际应用中,第一设备100还可以包括更多或更少的部件,这里不作限制。图9B仅仅是本申请实施例的一种实现方式,实际应用中,第二设备200还可以包括更多或更少的部件,这里不作限制。
图11示出了本申请实施例提供的第一设备100和第二设备200的一种实施例,以及二者构成的通信系统的结构示意图。如图11所示,第一设备1100和第二设备1200之间可存在通信连接,例如蓝牙连接,可实现二者之间的数据通信。下面展开描述。
如图11所示,第一设备1100可包括:指令判断单元1101、指令同步单元1102、指令压缩单元1103以及通信单元1105,其中,第一设备1100侧可配置有第一绘图指令库1104,其中:
指令判断单元1101可用于判断所述第一用户界面绘制需求是否包括所述第二设备的标识,若所述第一用户界面绘制需求包括所述第二设备的标识,则通过通信单元1105将第一绘制指令发送给第二设备200,且所述第一设备的图像处理器无法使用所述第一绘图指令库1104执行所述第二绘制指令;若所述第一用户界面绘制需求不包括所述第二设备的标识,则图像处理器106使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
指令同步单元1102可用于将所述第二绘制指令调整为第二设备1200的GPU可识别的第一绘制指令;
指令压缩单元1103可用于将所述第一绘制指令压缩为第一压缩包;
通信单元1105可用于将所述第一压缩包发送给第二设备1200。
本申请实施例中,所述第一指令库1104可包括多个不同的图像绘制API调用函数,GPU通过绘图指令库1104可以绘制出复杂的三维景象。具体可参考前述实施例。
具体实现中,所述第一指令库1104是通用开放式图形库,换句话说,就是每个设备的GPU都可以识别、调用所述第一指令库中的指令,例如OpenGL指令动态库、OpenGL ES 1.0指令动态库、OpenGL ES 2.0指令动态库、OpenGL ES 3.0指令动态库、OpenGL ES API指令动态库、DirectX指令动态库等等,本申请不作具体限定。
如图11所示,第二设备1200可包括:通信单元1201、指令解压单元1202、指令修改单元1203以及指令执行单元1204。其中,第二设备1200侧可配置有绘图指令库1205,第二设备1200可以通过调用第一绘图指令库1205中的绘图指令绘制出复杂的三维景象。其中:
通信单元1201可用于接收第一设备1100发送的第一压缩包;
指令解压单元1202可用于解压所述第一压缩包,获得解压后的第一压缩包;
指令重构单元1203可用于对所述解压后的第一压缩包进行指令复原,使得复原后得到的第一绘制指令能够被第二设备1200的GPU识别并执行;
指令执行单元1204可用于执行所述第一绘制指令,得到图像绘制结果,并输出至显示设备。
本申请实施例中,所述绘图指令库1205可包括多个不同的图像绘制API调用函数,GPU通过调用绘图指令库1205中的绘图函数,可以绘制出复杂的三维景象。具体可参考前述实施例。
具体实现中,所述绘图指令库1205是通用开放式图形库,换句话说,就是每个设备的GPU都可以识别、调用所述第一绘图指令库中的指令,例如OpenGL指令动态库、OpenGLES1.0指令动态库、OpenGL ES 2.0指令动态库、OpenGL ES 3.0指令动态库、OpenGL ES API指令动态库、DirectX指令动态库等等,本申请不作具体限定。
需要说明的,图11实施例中未提及的内容以及各个功能单元的具体实现,请参考图5实施例,这里不再赘述。
另外,本申请实施例还提供了一种通信系统,所述通信系统包括第一设备和第二设备。
在一种实施例中,所述通信系统可以是图11所示的通信系统,所述第一设备可以是第一设备1100,所述第二设备可以是第二设备1200。在一些实施例中,所述第一设备可以是图9A实施例描述的第一设备100,所述第二设备可以是图9B实施例描述的第二设备200。应理解的,所述第一设备还可以是图5实施例中描述的所述第一设备以及第二设备
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (30)
1.一种图像绘制的方法,其特征在于,应用于第一设备,所述第一设备与第二设备建立通信连接,所述方法包括:
所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制;
所述第一设备向所述第二设备发送所述第一绘制指令。
2.根据权利要求1所述的方法,其特征在于,所述第一设备具有第一绘图指令库,所述第一设备的图像处理器GPU使用所述第一绘图指令库执行所述第一设备的CPU生成的绘图指令;所述生成第一绘图指令具体为:
所述第一设备的CPU根据所述第一用户界面绘制需求以及所述第一绘图指令库,生成可供所述第二设备的GPU执行的所述第一绘制指令。
3.根据权利要求2所述的方法,其特征在于,所述第二设备具有第二绘图指令库,所述第二设备的图像处理器GPU使用第二绘图指令库执行所述第二设备的CPU生成的绘图指令;所述方法还包括:
所述第一设备接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;
所述生成第一绘图指令具体为:
所述第一设备的CPU根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;
根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
4.根据权利要求1至3任一权利要求所述的方法,其特征在于,所述第一设备向所述第二设备发送所述第一绘制指令之前,所述方法还包括:
所述第一设备判断是否需要将所述第一用户界面显示在所述第二设备上;
若所述第一设备需要将所述第一用户界面显示在所述第二设备上,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;
若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,则所述第一设备的GPU执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
5.根据权利要求1至4任一权利要求所述的方法,其特征在于,所述第一设备向所述第二设备发送所述第一绘制指令之前,所述方法还包括:
所述第一绘图指令库判断所述第一用户界面绘制需求是否包括所述第二设备的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;
若所述第一用户界面绘制需求包括所述第二设备的标识,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令;
若所述第一用户界面绘制需求不包括所述第二设备的标识,则所述第一设备的GPU使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
6.根据权利要求1至5任一权利要求所述的方法,其特征在于,
所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,
所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包。
7.根据权利要求1至6任一权利要求所述的方法,其特征在于,所述方法还包括:
所述第一设备接收所述第二设备发送的控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;
所述第一设备的CPU根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的GPU依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;
根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;
所述第一设备向所述第二设备发送所述第四绘制指令。
8.根据权利要求7所述的方法,其特征在于,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是所述第一用户界面的坐标,所述第一坐标是所述第二设备根据第二坐标以及所述第一用户界面的坐标与所述第二设备屏幕的坐标之间的映射关系后获得的,所述第二坐标是所述第二设备屏幕的坐标,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的。
9.一种图像绘制的方法,其特征在于,应用于第二设备,第一设备与所述第二设备建立通信连接,所述方法包括:
所述第二设备接收所述第一设备发送的第一绘制指令,其中,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对应用程序第一用户界面进行绘制;
所述第二设备的图像处理器GPU依据所述第一绘制指令对所述应用程序第一用户界面进行绘制,获得第一绘制结果;
所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示。
10.根据权利要求9所述的方法,其特征在于,所述第一设备具有第一绘图指令库,所述第二设备具有第二绘图指令库,所述方法还包括:
所述第二设备向所述第一设备发送所述第二设备的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制,使得所述第一设备根据所述第一绘图指令库以及所述设备信息,生成所述第一绘制指令。
11.根据权利要求10所述的方法,其特征在于,所述第一绘制指令为经过序列化处理和压缩处理得到的压缩包,所述第二设备接收所述第一设备发送的第一绘制指令包括:
所述第二设备接收所述第一设备发送的所述压缩包;
所述第二设备的CPU对所述压缩包先进行解压缩处理,后经过反序列化处理,获得解压后的压缩包;或者,
所述第二设备的CPU对所述压缩包先进行反序列化处理,后经过解压缩处理,获得解压后的压缩包;
所述第二设备的CPU根据所述第二绘图指令库以及所述解压后的压缩包,重构所述第一绘制指令。
12.根据权利要求9至11任一权利要求所述的方法,其特征在于,所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示之后,所述方法还包括:
所述第二设备的CPU获取控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;
所述第二设备向所述第一设备发送所述控制信息;
所述第二设备接收所述第一设备发送的所述第二绘制指令,其中,所述第二绘制指令用于供所述第二设备的GPU依据所述第二绘制指令调用所述第二绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;
所述第二设备的GPU依据所述第二绘制指令调用所述第二绘图指令库对所述第二用户界面进行绘制,获得第二绘制结果;
所述第二设备的GPU将所述第二绘制结果在所述第二设备的屏幕上显示。
13.根据权利要求9至12任一权利要求所述的方法,其特征在于,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是基于所述第一用户界面的坐标,所述方法还包括:
所述第二设备的CPU获取所述用户在所述第二设备屏幕的操作动作以及所述操作动作对应的第二坐标,其中,所述第二坐标是基于所述第二设备屏幕的坐标;
所述第二设备的CPU获取所述第一用户界面坐标与所述第二设备屏幕坐标之间的映射关系,其中,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的;
所述第二设备的CPU根据所述映射关系以及所述第二坐标,获取所述第一坐标;
所述第二设备向所述第一设备发送所述控制信息,其中,所述控制信息包括所述第一坐标以及所述用户在所述第一用户界面上的操作动作。
14.一种图像绘制控制装置,应用于第一设备,所述第一设备与第二设备建立通信连接,其特征在于,所述装置包括:
处理单元,用于运行应用程序,根据所述应用程序的用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示所述第一设备的图像处理器GPU对所述应用程序的界面进行绘制;
接口,用于供所述处理单元指示所述第一设备的发送器向所述第二设备发送所述第一绘制指令。
15.根据权利要求14所述的装置,其特征在于,所述第一设备具有第一绘图指令库,所述第一设备的GPU使用所述第一绘图指令库执行所述第一设备的处理单元生成的绘图指令,所述第二设备具有第二绘图指令库,所述第二设备的GPU使用第二绘图指令库执行所述第二设备的处理单元生成的绘图指令;
所述接口还用于:
接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;
所述处理单元还用于:
根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;
根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
16.根据权利要求14或15所述的装置,其特征在于,
所述处理单元,还用于在所述第一设备向所述第二设备发送所述第一绘制指令之前,判断是否需要将所述第一用户界面显示在所述第二设备上;
所述处理单元,还用于若所述第一设备需要将所述第一用户界面显示在所述第二设备上,指示所述第一设备的发送器向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;
所述处理单元,还用于若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,通过所述接口将所述第二绘制指令发送给第一设备的GPU,以使所述第一设备的GPU执行所述第二绘图指令并显示所述第一用户界面。
17.根据权利要求14至16任一权利要求所述的装置,其特征在于,
所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,
所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包。
18.根据权利要求14至17任一权利要求所述的装置,其特征在于,
所述接口,还用于接收所述第二设备发送的控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;
所述处理单元,还用于根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的图像处理单元依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;
所述处理单元,还用于根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;
所述接口,还用于供所述处理单元指示所述第一设备的发送器向所述第二设备发送所述第四绘制指令。
19.根据权利要求18所述的装置,其特征在于,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是所述第一用户界面的坐标,所述第一坐标是所述第二设备根据第二坐标以及所述第一用户界面的坐标与所述第二设备屏幕的坐标之间的映射关系后获得的,所述第二坐标是所述第二设备屏幕的坐标,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的。
20.一种图像绘制系统,其特征在于,包括:第一设备和第二设备,所述第一设备与所述第二设备建立通信连接,其中,
所述第一设备用于通过所述第一设备的中央处理器CPU运行应用程序,根据所述应用程序的第一用户界面绘制需求,生成第一绘制指令,其中,所述第一绘制指令用于指示第二设备的图像处理器GPU对所述应用程序第一用户界面进行绘制;
所述第一设备用于向所述第二设备发送所述第一绘制指令;
所述第二设备用于接收所述第一设备发送的所述第一绘制指令;
所述第二设备用于通过所述第二设备的图像处理器GPU依据所述第一绘制指令对所述应用程序第一用户界面进行绘制,获得第一绘制结果;
所述第二设备用于通过所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示。
21.根据权利要求20所述的系统,其特征在于,所述第一设备具有第一绘图指令库,所述第一设备的图像处理器GPU使用所述第一绘图指令库执行所述第一设备的CPU生成的绘图指令,所述第一设备还用于通过所述第一设备的CPU,根据所述第一用户界面绘制需求以及所述第一绘图指令库,生成可供所述第二设备的GPU执行的所述第一绘制指令。
22.根据权利要求21所述的系统,其特征在于,所述第二设备具有第二绘图指令库,所述第二设备的图像处理器GPU使用第二绘图指令库执行所述第二设备的CPU生成的绘图指令,所述第一设备还用于接收所述第二设备发送的设备信息,其中,所述设备信息用于表示所述第二设备的GPU使用所述第二绘图指令库对所述第一用户界面进行绘制;
所述第一设备还用于通过所述第一设备的CPU,根据所述第一用户界面绘制需求,生成供所述第一设备的GPU执行的,使用所述第一绘图指令库对所述第一用户界面进行绘制的所述第二绘制指令;
所述第一设备还用于根据所述设备信息,将所述第二绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的所述第一绘制指令。
23.根据权利要求20至22任一权利要求所述的系统,其特征在于,所述第一设备还用于在向所述第二设备发送所述第一绘制指令之前,判断是否需要将所述第一用户界面显示在所述第二设备上;
所述第一设备还用于若所述第一设备需要将所述第一用户界面显示在所述第二设备上,则所述第一设备向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU不执行所述第二绘制指令;
所述第一设备还用于若所述第一设备判断无需将所述第一用户界面显示在所述第二设备上,则所述第一设备的GPU执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
24.根据权利要求20至23任一权利要求所述的系统,其特征在于,所述第一设备还用于在向所述第二设备发送所述第一绘制指令之前,通过所述第一绘图指令库判断所述第一用户界面绘制需求是否包括所述第二设备的标识,其中,需要将所述应用程序界面显示在所述第二设备上的所述第一用户界面绘制需求包括所述第二设备的标识;
所述第一设备还用于若所述第一用户界面绘制需求包括所述第二设备的标识,向所述第二设备发送所述第一绘制指令,且所述第一设备的GPU无法使用所述第一绘图指令库执行所述第二绘制指令;
所述第一设备还用于若所述第一用户界面绘制需求不包括所述第二设备的标识,则所述第一设备的GPU使用所述第一绘图指令库执行所述第二绘图指令,以使所述第一设备显示所述第一用户界面。
25.根据权利要求20至24任一权利要求所述的系统,其特征在于,所述第一绘制指令为先经过序列化处理,后经过压缩处理得到的压缩包;或者,所述第一绘制指令为先经过压缩处理,后经过序列化处理得到的压缩包,
所述第二设备还用于接收所述第一设备发送的所述压缩包;
所述第二设备还用于对所述压缩包先进行解压缩处理,后经过反序列化处理,获得解压后的压缩包;或者,
所述第二设备还用于对所述压缩包先进行反序列化处理,后经过解压缩处理,获得解压后的压缩包;
所述第二设备还用于根据所述第二绘图指令库以及所述解压后的压缩包,重构所述第一绘制指令。
26.根据权利要求20至25任一权利要求所述的系统,其特征在于,
所述第二设备还用于在所述第二设备的GPU将所述第一绘制结果在所述第二设备的屏幕上显示之后,所述第二设备的CPU获取控制信息,其中,所述控制信息反映了用户在所述第二设备上显示的所述应用程序的第一用户界面上的操作;
所述第二设备还用于向所述第一设备发送所述控制信息;
所述第一设备还用于接收所述第二设备发送的控制信息;
所述第一设备还用于根据所述控制信息生成第三绘制指令,其中,所述第三绘制指令用于供所述第一设备的GPU依据所述第三绘制指令调用所述第一绘图指令库以绘制所述应用程序的第二用户界面,所述第二用户界面为所述应用程序响应所述操作后所应呈现的用户界面;
所述第一设备还用于根据所述设备信息,将所述第三绘图指令转换为供所述第二设备的GPU执行的,使用所述第二绘图指令库对所述第一用户界面进行绘制的第四绘制指令;
所述第一设备还用于向所述第二设备发送所述第四绘制指令;
所述第二设备还用于接收所述第一设备发送的所述第四绘制指令;
所述第二设备还用于通过GPU依据所述第四绘制指令调用所述第二绘图指令库对所述第二用户界面进行绘制,获得第二绘制结果;
所述第二设备还用于将所述第二绘制结果在所述第二设备的屏幕上显示。
27.根据权利要求20至26任一权利要求所述的系统,其特征在于,所述控制信息包括所述用户在所述第一用户界面上的操作动作以及所述操作动作对应的第一坐标,其中,所述第一坐标是基于所述第一用户界面的坐标,
所述第二设备还用于获取所述用户在所述第二设备屏幕的操作动作以及所述操作动作对应的第二坐标,其中,所述第二坐标是基于所述第二设备屏幕的坐标;
所述第二设备还用于获取所述第一用户界面坐标与所述第二设备屏幕坐标之间的映射关系,其中,所述映射关系是在所述第一设备与所述第二设备建立通信连接时获取的;
所述第二设备还用于根据所述映射关系以及所述第二坐标,获取所述第一坐标;
所述第二设备还用于向所述第一设备发送所述控制信息,其中,所述控制信息包括所述第一坐标以及所述用户在所述第一用户界面上的操作动作。
28.一种电子设备,其特征在于,包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,所述处理器执行所述指令时执行如权利要求1至8或9至13任一项所述的方法。
29.一种非瞬态的计算机存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8或9至13任一项所述的方法。
30.一种计算机程序产品,其特征在于,当所述计算机程序产品被计算机读取并执行时,实现如权利要求1至8或9至13中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364751.4A CN110083324A (zh) | 2019-04-30 | 2019-04-30 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
PCT/CN2020/085769 WO2020221056A1 (zh) | 2019-04-30 | 2020-04-21 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364751.4A CN110083324A (zh) | 2019-04-30 | 2019-04-30 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110083324A true CN110083324A (zh) | 2019-08-02 |
Family
ID=67418342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910364751.4A Pending CN110083324A (zh) | 2019-04-30 | 2019-04-30 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110083324A (zh) |
WO (1) | WO2020221056A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442389A (zh) * | 2019-08-07 | 2019-11-12 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN111190561A (zh) * | 2019-12-24 | 2020-05-22 | 广州华多网络科技有限公司 | 内容绘制方法、装置、系统及电子设备 |
CN111818085A (zh) * | 2020-07-24 | 2020-10-23 | 广州彩熠灯光股份有限公司 | 以太网的图形显示系统、处理显示方法、服务端及客户端 |
WO2020221056A1 (zh) * | 2019-04-30 | 2020-11-05 | 华为技术有限公司 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
CN112083905A (zh) * | 2020-09-16 | 2020-12-15 | 青岛海信移动通信技术股份有限公司 | 电子设备及其图层绘制方法 |
CN112581557A (zh) * | 2019-09-30 | 2021-03-30 | Oppo广东移动通信有限公司 | 图层绘制方法及电子设备 |
CN113129202A (zh) * | 2020-01-10 | 2021-07-16 | 华为技术有限公司 | 数据传输方法、装置及数据处理系统、存储介质 |
CN113138024A (zh) * | 2020-01-19 | 2021-07-20 | 复旦大学 | 一种红外智检系统及其智检方法 |
WO2021169236A1 (zh) * | 2020-02-25 | 2021-09-02 | 华为技术有限公司 | 渲染的方法、装置 |
CN113448653A (zh) * | 2020-03-27 | 2021-09-28 | 北京猎户星空科技有限公司 | 一种业务处理方法、系统、电子设备和计算机可读介质 |
CN114697731A (zh) * | 2020-12-31 | 2022-07-01 | 华为技术有限公司 | 投屏方法、电子设备及存储介质 |
CN114764358A (zh) * | 2021-01-13 | 2022-07-19 | 华为技术有限公司 | 一种界面显示方法及电子设备 |
CN114816135A (zh) * | 2021-09-16 | 2022-07-29 | 华为技术有限公司 | 跨设备绘制系统 |
WO2023001043A1 (zh) * | 2021-07-23 | 2023-01-26 | 华为技术有限公司 | 一种显示内容方法、电子设备及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904282A (zh) * | 2021-08-19 | 2023-04-04 | 华为技术有限公司 | 一种投屏方法、设备、存储介质及计算机程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1605346A2 (en) * | 2004-06-11 | 2005-12-14 | Seiko Epson Corporation | Image transfer using drawing command hooking |
CN105786434A (zh) * | 2016-03-22 | 2016-07-20 | 北京星网锐捷网络技术有限公司 | 一种远程显示的控制方法及设备 |
CN107735997A (zh) * | 2015-05-29 | 2018-02-23 | 高通股份有限公司 | 从源设备到阱设备的远程渲染 |
US20180268512A1 (en) * | 2017-03-15 | 2018-09-20 | Microsoft Technology Licensing, Llc | Techniques for reducing perceptible delay in rendering graphics |
CN108667900A (zh) * | 2018-03-29 | 2018-10-16 | 深圳市九洲电器有限公司 | 远程设置智能设备的控制面板的方法及装置 |
CN108958868A (zh) * | 2018-06-30 | 2018-12-07 | 深圳市技达信息技术有限公司 | 显示界面的方法、装置及计算机可读存储介质 |
CN109150992A (zh) * | 2018-07-27 | 2019-01-04 | 深圳Tcl数字技术有限公司 | 基于Android的同步绘图方法、装置、可读存储介质及系统 |
CN109471605A (zh) * | 2018-11-14 | 2019-03-15 | 维沃移动通信有限公司 | 一种信息处理方法及终端设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6568702B2 (ja) * | 2015-03-27 | 2019-08-28 | 京セラ株式会社 | 表示装置および共有表示システム |
US10025447B1 (en) * | 2015-06-19 | 2018-07-17 | Amazon Technologies, Inc. | Multi-device user interface |
CN106502604A (zh) * | 2016-09-28 | 2017-03-15 | 北京小米移动软件有限公司 | 投屏切换方法及装置 |
CN110083324A (zh) * | 2019-04-30 | 2019-08-02 | 华为技术有限公司 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
-
2019
- 2019-04-30 CN CN201910364751.4A patent/CN110083324A/zh active Pending
-
2020
- 2020-04-21 WO PCT/CN2020/085769 patent/WO2020221056A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1605346A2 (en) * | 2004-06-11 | 2005-12-14 | Seiko Epson Corporation | Image transfer using drawing command hooking |
CN107735997A (zh) * | 2015-05-29 | 2018-02-23 | 高通股份有限公司 | 从源设备到阱设备的远程渲染 |
CN105786434A (zh) * | 2016-03-22 | 2016-07-20 | 北京星网锐捷网络技术有限公司 | 一种远程显示的控制方法及设备 |
US20180268512A1 (en) * | 2017-03-15 | 2018-09-20 | Microsoft Technology Licensing, Llc | Techniques for reducing perceptible delay in rendering graphics |
CN108667900A (zh) * | 2018-03-29 | 2018-10-16 | 深圳市九洲电器有限公司 | 远程设置智能设备的控制面板的方法及装置 |
CN108958868A (zh) * | 2018-06-30 | 2018-12-07 | 深圳市技达信息技术有限公司 | 显示界面的方法、装置及计算机可读存储介质 |
CN109150992A (zh) * | 2018-07-27 | 2019-01-04 | 深圳Tcl数字技术有限公司 | 基于Android的同步绘图方法、装置、可读存储介质及系统 |
CN109471605A (zh) * | 2018-11-14 | 2019-03-15 | 维沃移动通信有限公司 | 一种信息处理方法及终端设备 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020221056A1 (zh) * | 2019-04-30 | 2020-11-05 | 华为技术有限公司 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
CN110442389A (zh) * | 2019-08-07 | 2019-11-12 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN112581557A (zh) * | 2019-09-30 | 2021-03-30 | Oppo广东移动通信有限公司 | 图层绘制方法及电子设备 |
CN111190561A (zh) * | 2019-12-24 | 2020-05-22 | 广州华多网络科技有限公司 | 内容绘制方法、装置、系统及电子设备 |
CN111190561B (zh) * | 2019-12-24 | 2023-09-15 | 广州华多网络科技有限公司 | 内容绘制方法、装置、系统及电子设备 |
CN113129202B (zh) * | 2020-01-10 | 2023-05-09 | 华为技术有限公司 | 数据传输方法、装置及数据处理系统、存储介质 |
CN113129202A (zh) * | 2020-01-10 | 2021-07-16 | 华为技术有限公司 | 数据传输方法、装置及数据处理系统、存储介质 |
CN113138024A (zh) * | 2020-01-19 | 2021-07-20 | 复旦大学 | 一种红外智检系统及其智检方法 |
WO2021169236A1 (zh) * | 2020-02-25 | 2021-09-02 | 华为技术有限公司 | 渲染的方法、装置 |
CN113448653A (zh) * | 2020-03-27 | 2021-09-28 | 北京猎户星空科技有限公司 | 一种业务处理方法、系统、电子设备和计算机可读介质 |
CN113448653B (zh) * | 2020-03-27 | 2024-01-26 | 北京猎户星空科技有限公司 | 一种业务处理方法、系统、电子设备和计算机可读介质 |
CN111818085A (zh) * | 2020-07-24 | 2020-10-23 | 广州彩熠灯光股份有限公司 | 以太网的图形显示系统、处理显示方法、服务端及客户端 |
CN111818085B (zh) * | 2020-07-24 | 2022-10-21 | 广州彩熠灯光股份有限公司 | 以太网的图形显示系统、处理显示方法、服务端及客户端 |
CN112083905A (zh) * | 2020-09-16 | 2020-12-15 | 青岛海信移动通信技术股份有限公司 | 电子设备及其图层绘制方法 |
CN114697731A (zh) * | 2020-12-31 | 2022-07-01 | 华为技术有限公司 | 投屏方法、电子设备及存储介质 |
CN114764358A (zh) * | 2021-01-13 | 2022-07-19 | 华为技术有限公司 | 一种界面显示方法及电子设备 |
WO2023001043A1 (zh) * | 2021-07-23 | 2023-01-26 | 华为技术有限公司 | 一种显示内容方法、电子设备及系统 |
CN114816135A (zh) * | 2021-09-16 | 2022-07-29 | 华为技术有限公司 | 跨设备绘制系统 |
CN114816135B (zh) * | 2021-09-16 | 2023-11-03 | 华为技术有限公司 | 跨设备绘制系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2020221056A1 (zh) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083324A (zh) | 图像绘制的方法、装置、电子设备及计算机存储介质 | |
CN109885367B (zh) | 互动聊天实现方法、装置、终端和存储介质 | |
CN112233211B (zh) | 动画制作的方法、装置、存储介质及计算机设备 | |
CN110533755A (zh) | 一种场景渲染的方法以及相关装置 | |
CN110209460A (zh) | 一种动态壁纸的实现方法、装置、存储介质及终端 | |
CN108057249A (zh) | 一种业务数据处理方法和装置 | |
CN111338646A (zh) | 一种微服务架构的管理方法以及相关装置 | |
CN114816585B (zh) | 一种跨运行环境的远程输入重定向方法 | |
CN110070496A (zh) | 图像特效的生成方法、装置和硬件装置 | |
WO2022048677A1 (zh) | 基于云手机的vr应用设计方法及系统 | |
CN108900407B (zh) | 会话记录的管理方法、装置及存储介质 | |
CN109427100A (zh) | 一种基于虚拟现实的配件组装方法和系统 | |
CN113220118B (zh) | 虚拟界面展示方法、头戴式显示设备和计算机可读介质 | |
US20230334723A1 (en) | Post-processing special effect production system and method, and ar special effect rendering method and apparatus | |
CN108874554A (zh) | 信息通信方法及装置 | |
US8286084B2 (en) | Methods and apparatus for remote interaction using a partitioned display | |
CN113126875A (zh) | 虚拟礼物的交互方法、装置、计算机设备及存储介质 | |
CN114863008B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN114115673B (zh) | 车载屏幕的控制方法 | |
CN113157092B (zh) | 可视化方法、终端设备和存储介质 | |
CN108958479A (zh) | 基于数据手套的通用三维虚拟场景实时交互方法 | |
CN112579037A (zh) | 音频控制方法、装置、存储介质及电子设备 | |
CN113407044A (zh) | 模拟终端手柄输入的方法、装置、设备、存储介质 | |
CN112702611A (zh) | 一种播放方法以及播放系统 | |
Moravapalle et al. | Peek: A mobile-to-mobile remote computing protocol for smartphones and tablets |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190802 |
|
RJ01 | Rejection of invention patent application after publication |