CN115904592A - 虚拟桌面的显示方法和装置 - Google Patents
虚拟桌面的显示方法和装置 Download PDFInfo
- Publication number
- CN115904592A CN115904592A CN202211533793.4A CN202211533793A CN115904592A CN 115904592 A CN115904592 A CN 115904592A CN 202211533793 A CN202211533793 A CN 202211533793A CN 115904592 A CN115904592 A CN 115904592A
- Authority
- CN
- China
- Prior art keywords
- desktop
- wallpaper
- texture
- target
- rendering
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种虚拟桌面的显示方法,所述方法包括:创建视图代理容器实例;将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程;通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中;及通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。基于本申请提供的技术方案,桌面可以支持将游戏、直播等各类动态画面作为壁纸,可玩性好。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种虚拟桌面的显示方法、装置、计算机设备、计算机可读存储介质。
背景技术
随着计算机技术的发展,手机、电脑、平板这些携带屏幕的电子产品成了日常用品。用户可以在屏幕上设置自己喜欢的桌面壁纸,例如设置一张静态图。操作系统一般会提供壁纸服务。但是当前操作系统提供的壁纸服务不支持渲染游戏、直播,可玩性差。
需要说明的是,上述内容并不必然是现有技术,也不用于限制本申请的专利保护范围。
发明内容
本申请实施例的目的是提供一种虚拟桌面的显示方法、装置、计算机设备及计算机可读存储介质,用于解决上述问题。
本申请实施例的第一个方面提供了一种虚拟桌面的显示方法,所述方法包括:
创建视图代理容器实例;
将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程;
通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中;及
通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
可选地,所述方法还包括:
通过所述桌面壁纸服务引擎监听交互事件;
通过所述桌面壁纸服务引擎将所述交互事件的事件信息提供给所述视图代理容器实例;
通过所述视图代理容器实例将所述交互事件的事件信息提供给目标引擎,以使所述目标引擎执行相应的预设逻辑及基于所述目标引擎的绘制层更新画面数据;
通过所述视图代理容器实例,将更新后的画面数据提供给所述桌面壁纸渲染线程;
通过所述桌面壁纸渲染线程渲染所述更新后的画面数据,以更新所述桌面的壁纸。
可选地,所述方法还包括:
通过切换所述目标引擎的绘制层,将其他游戏或直播的画面作为所述桌面的壁纸。
可选地,所述方法还包括:
在资源包加载过程中,提供预备背景图;
根据所述桌面的当前壁纸运行状态以及所述预备背景图,生成目标背景图;
通过所述视图代理容器实例,基于所述目标背景图生成背景纹理;
通过所述视图代理容器实例,将所述背景纹理提供至所述桌面壁纸渲染线程中;及
通过所述桌面壁纸渲染线程渲染所述背景纹理,以将渲染结果作为壁纸显示在所述桌面上。
可选地,所述方法还包括:
在确定目标对象的首帧绘制完成的情况下,切换为由目标引擎的绘制层提供数据。
可选地,所述方法还包括:
将目标引擎绘制的画面数据渲染到目标纹理中,所述目标纹理关联FBO;
将目标视频中的视频画面数据渲染到共享纹理上,所述共享纹理为供多个线程使用的纹理;
对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理;
将所述目标混合纹理中的内容显示到所述桌面上。
可选地,所述对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理,包括:
将所述目标纹理覆盖在所述共享纹理之上,以得到所述目标混合纹理。
本申请实施例的第二个方面提供了一种虚拟桌面的显示装置,所述装置包括:
创建模块,用于创建视图代理容器实例;
绑定模块,用于将所述视图代理容器实例绑定到桌面壁纸服务引擎的桌面壁纸渲染线程;
加载模块,用于通过所述视图代理容器实例将待绘制画面载入到所述桌面壁纸渲染线程中;及
渲染模块,用于通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
本申请实施例的第三个方面提供了一种虚拟桌面的显示方法,所述方法包括:
获取目标应用的画面数据,所述画面数据包括视频画面数据或游戏画面数据;
响应于预设操作,在桌面上显示所述画面数据对应的虚拟画面。
可选地,所述在桌面上显示所述画面数据对应的虚拟画面,包括:第三个方面所述的虚拟桌面的显示方法的步骤。
本申请实施例的第四个方面提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现上述的虚拟桌面的显示方法的步骤。
本申请实施例的第五个方面提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行上述的虚拟桌面的显示方法的步骤。
本申请实施例提供的虚拟桌面的显示方法、装置、计算机设备、计算机可读存储介质,接管桌面壁纸渲染线程,并将视图代理容器实例和桌面壁纸渲染线程进行绑定,使得目标引擎(如游戏引擎)的渲染操作可以在桌面壁纸渲染线程中实现。相当于在桌面壁纸渲染线程中包裹了一个目标引擎的绘制层,目标引擎的绘制层的画面数据可以在桌面壁纸渲染线程中渲染,画面数据的渲染结果作为壁纸显示于桌面。因此,在本申请实施例中,桌面支持将游戏、直播的实时画面作为壁纸,可玩性好。
附图说明
图1示意性示出了根据本申请实施例的录制系统的运行环境图;
图2示意性示出了根据本申请实施例一的虚拟桌面的显示方法的流程图;
图3示意性示出了绘制流程;
图4示意性示出了加载渲染流程;
图5示意性示出了根据本申请实施例一的虚拟桌面的显示方法的新增步骤流程图;
图6示意性示出了交互点击的信息流向图;
图7示意性示出了游戏加载过程中的桌面壁纸;
图8示意性示出了根据本申请实施例一的虚拟桌面的显示方法的新增步骤流程图;
图9示意性示出了根据本申请实施例一的虚拟桌面的显示方法的新增步骤流程图;
图10示意性示出了视频和游戏同时加载为桌面壁纸的操作流程图;
图11示意性示出了根据本申请实施例二的虚拟桌面的显示装置的框图;
图12示意性示出了根据本申请实施例三中的计算机设备的硬件架构示意图;及
图13示意性示出了根据本申请实施例五的虚拟桌面的显示方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
本申请涉及的术语解释:
OpenGL ES(OpenGL for Embedded Systems):是OpenGL三维图形API的子集,针对手机、PDA等嵌入式设备而设计的一套API。OpenGL(Open Gr aphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
Android(安卓)系统,是一种基于Linux内核的自由及开放源代码的操作系统。可用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。
FBO(Frame Buffer Object,帧缓冲区对象),是可以添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象。
纹理(texture),表示图像照片或者说一系列的数据,可以用来添加物体的细节。
API(Application Program Interface,应用程序接口),是一组定义、程序及协议的集合。API的主要功能包括提供通用功能集。通过调用API函数对应用程序进行开发,可以减轻编程任务。API同时也是一种中间件,为各种不同平台提供数据共享。
Surface,是一个raw buffer的句柄(holder),可以通过它在raw buffer上进行绘制。
SurfaceView,封装并管理一个Surface。可以通过SurfaceView使用Surface进行绘制操作。
GLSurfaceView(视图代理容器),继承自SurfaceView(对SurfaceView封装),可以在Android中使用OperGL。
GLThread,是GLSurfaceView自带的一个渲染线程,可以用于执行OperGL绘制工作。
onDrawFrame,提供调用,每调用一次将画面刷新一次,以将当前代表的最新一帧利用OpenGL绘制出来。
WallpaperService(桌面壁纸服务),负责显示动态壁纸。
WallpaperService.Engine(桌面壁纸服务引擎),WallpaperService中的一个内部类,动态壁纸的所有显示过程的绘制都由该类完成。
WallpaperManagerService(壁纸管理服务),用于管理壁纸的运行与切换,并通过WallpaperManager类向外界提供操作壁纸的接口,主要体现Android对壁纸的管理方式。
为方便本领域技术人员理解本申请实施例提供的技术方案,下面相关技术进行说明:
经调研发现Android系统提供Wallpaper Service,暴露给开发者绘制句柄,允许开发者定制桌面绘制内容,实现动态桌面可以采用:Wallpaper Service+MediaPlayer。但Android机型碎片化严重,视频尺寸适配起来成本较高,以及仅视频内容,无法做可交互的内容,可持续较差,可玩性较低,业务形态单一。另外,现有的小游戏渲染内容丰富,比如可以渲染某一个虚拟偶像商品到桌面上等,但是Android桌面不支持渲染游戏。
为此,本申请实施例提供了一种虚拟桌面的显示方案。基于此,桌面(如Android虚拟桌面)可以运行可交互的游戏或直播场景,也可以动态切换不同的游戏或直播间,提高交互性和可玩性。具体见后文。
图1示意性示出了根据本申请实施例的虚拟桌面的显示方法的环境运行图。
移动终端2,可以包括采用Android操作系统的任何类型的计算设备,如移动设备、平板设备、膝上型计算机、虚拟现实设备、游戏设备、机顶盒、车载终端、智能电视。
移动终端2,可以用于运行游戏或直播程序。所述游戏程序用于提供游戏登录、操作、支付等功能。所述游戏程序可以是在线游戏,也可以是在移动终端中的本地离线程序。所述直播程序也可以提供登录、送礼品、发弹幕、商品链接跳转等功能。
在移动终端2中,可以将游戏或直播动态画面配置为桌面壁纸,并可供游戏或直播程序和用户之间的交互。即,游戏或直播程序的动态画面可以实时地以桌面壁纸的形式输出呈现给用户。在一些实施例中,作为桌面壁纸所呈现的内容可以包括游戏或直播登录页面、实时画面、评论和/或类似物。当然,在用户允许的情况下,还可以输出音频。
实施例一
图2示意性示出了根据本申请实施例一的虚拟桌面的显示方法的流程图。
如图2所示,该虚拟桌面的显示方法可以包括步骤S200~S206,其中:
步骤S200,创建视图代理容器实例。
步骤S202,将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程。
步骤S204,通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中。
步骤S206,通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
本申请实施例提供的虚拟桌面的显示方法,接管WallpaperService.Engine的桌面壁纸渲染线程,并将GLSurfaceView实例和桌面壁纸渲染线程进行绑定,从而使得目标引擎(如游戏引擎、直播画面引擎)的渲染操作可以在桌面壁纸渲染线程中实现。相当于在桌面壁纸渲染线程中包裹了一个目标引擎的绘制层,目标引擎的绘制层的画面数据可以在桌面壁纸渲染线程中渲染,画面数据的渲染结果作为壁纸显示于桌面。因此,在本申请实施例中,Android桌面支持将游戏的动态画面作为移动终端2的壁纸,也可以将直播或其他应用的动态画面作为壁纸,可玩性好。
以下结合图2,对步骤S200~S206中各步骤和其他新增步骤进行详细阐述。
需要说明的是,本申请实施例提供的技术方案是在Android操作系统环境下进行的,并且需要依赖Android操作中的部分服务,如系统壁纸服务及其相关服务。
首先,创建wallpaper service实例,并回调创建相应的WallpaperService.Engine和Surface句柄。桌面壁纸服务(wallpaper service)是Android系统提供的系统壁纸服务。然后基于上述WallpaperService.Engine和Surface句柄提供后续游戏或直播桌面的支持。
一个桌面提供一个surface句柄,而且是创建wallpaper service实例的时候就已经走完Surface的回调生命周期,即桌面的GLThread已经创建完成。但是,目标引擎有一些前序的校验逻辑,不在GLThread线程中,后续画面绘制才是在GLThread线程中,中间就出现了断层,无法进行后续画面绑定。为此,有一种解决的思路,即将游戏或直播的画面放在离屏中进行渲染,然后在同步绘制到桌面上。但是由于wallpaper service仅提供了一个在屏的WallpaperService.Engi ne及一个渲染线程,无法给目标引擎提供第二个独立的渲染线程,因此上述方案不可行。为此,本实施例采用如下方案:接管WallpaperService.Engine的桌面壁纸渲染线程,代理目标引擎的渲染线程,将目标引擎的渲染线程的工作转由桌面壁纸渲染线程处理。具体见下文。
步骤S200,创建视图代理容器(GLSurfaceView)实例。
该GLSurfaceView实例指定Surface句柄。该Surface句柄是WallpaperService.Engine提供的。
GLSurfaceView实例可以用于提供代理的游戏/直播画布容器,以及用于交互事件的分发。
步骤S202,将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程。
该GLSurfaceView实例绑定桌面壁纸渲染引擎后,可以将游戏/直播的渲染交给桌面壁纸渲染线程处理。即,通过所述壁纸渲染线程代理了目标引擎的渲染线程的工作。
步骤S204,通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中。
在示例性应用中,桌面壁纸渲染引擎会通过调用onDrawFrame方法,每隔一段时间(如16.7毫秒)向GLSurfaceView实例请求一次画面数据。具体的,GLSurfaceView实例会将系统回调的onDramFrame事件代理分发给目标引擎。因此,目标引擎每隔16.7毫秒需要提供一帧画面的画面数据,以便GLSurface View实例响应桌面壁纸渲染引擎的请求并将上述画面数据提供给桌面壁纸渲染线程。
步骤S206,通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
所述虚拟画面可以是游戏场景画面、直播画面或其他第三方应用的画面。
桌面壁纸渲染线程(WallpaperGLRender)通过onDrawFrame函数进行OpenGL ES指令绘制,将渲染好的画面推送到Swap buffer(屏幕交换缓冲区),以展示到屏幕中。如图3所示,操作流程可以如下:使用编译好的顶点程序→激活纹理单元→绑定纹理id→绑定顶点数据→绘制渲染→推送数据到Swap buffer中。
该虚拟画面作为桌面壁纸,会随着游戏或直播等的推进进行画面的实时更新,如16.7毫秒更新一次。当然,在一些实施例中,为节省耗电,也可以较长时间更新一次。
为了使得本实施例更加容易理解,结合图4,下面提供一个示例性的游戏画面加载渲染流程。
S400,回调创建WallpaperService.Engine和Surface句柄;
S402,创建GLSurfaceView实例;其中,GLSurfaceView实例返回的Surfa ce句柄是WallpaperService.Engine提供的;
S404,绑定GLSurfaceView实例和WallpaperGLRender;
S406,通过onDrawFrame函数每隔16.7毫秒从GLSurfaceView实例中拿一次游戏画面数据并进行渲染;游戏画面数据是由游戏引擎的绘制层(GameGL Render)提供的绘制数据。在加载过程中,可以先显示其他壁纸。若加载异常则退出或弹出异常信息。
在可选的实施例中,还可以提供与用户之间的交互功能。如图5所示,所述方法还包括:
步骤S500,通过所述桌面壁纸服务引擎监听交互事件;
步骤S502,通过所述桌面壁纸服务引擎将所述交互事件的事件信息提供给所述视图代理容器实例;
步骤S504,通过所述视图代理容器实例将所述交互事件的事件信息提供给目标引擎,以使所述目标引擎执行相应的预设逻辑及基于所述目标引擎的绘制层更新画面数据;
步骤S506,通过所述视图代理容器实例,将更新后的画面数据提供给所述桌面壁纸渲染线程;
步骤S508,通过所述桌面壁纸渲染线程渲染所述更新后的画面数据,以更新所述桌面的壁纸。
所述交互事件可以是onTouch(触控)事件。onTouch(触控)事件可以包括以下几种:ACTION_DOWN(按下屏幕)、ACTION_MOVE(移动手势)、ACTION_UP(离开屏幕)、ACTION_CANCEL(取消手势)。也可以是其他触发事件。由于GLSurfaceView实例提供了从交互事件分发的能力。真实的点击来源WallpaperService.Engine的onTouch事件函数回调中,可以将该交互事件分发给GLSurfaceView实例。
如图6所示的游戏桌面交互流程,用户点击屏幕后,系统桌面(WallpaperService.Engine)可以收到该点击事件并通知给游戏代理容器(GLSurfaceView实例)。GLSurfaceView实例拿到该点击事件的坐标信息(相对屏幕的X\Y坐标信息)和事件类型(按下、抬起、滑动等)后,将上述信息组装分发给目标引擎。目标引擎基于上述信息后绘制对应的业务逻辑并生成新的画面数据,并将新的画面数据交给WallpaperGLRender渲染。WallpaperGLRender根据渲染结果更新桌面壁纸,以实现动态交互效果。如图1所示,用户点击“出门探索”,则会显示新的街道等画面。
在可选的实施例中,还可以切换其他游戏或其他直播间用作桌面壁纸,所述方法还包括:
通过切换所述目标引擎的绘制层,将其他游戏或直播的画面作为所述桌面的壁纸,方便高效。
在等待资源包加载的过程中,会由于没有画面而导致桌面处于“断层”黑屏,体验很差。在常规的客户端容器中,由于容器是系统界面activity(活动组件),所以可以添加原生视图来显示加载中,但是桌面中没有activity则无法添加组件。在本实施例中,可以采用OpenGL指令来直接进行绘制渲染加载等待状态(如图7所示)。具体如下。
在可选的实施例中,为避免资源包加载过程中的黑屏,如图8所示,所述方法还包括:步骤S800,在资源包加载过程中,提供预备背景图;步骤S802,根据所述桌面的当前壁纸运行状态以及所述预备背景图,生成目标背景图;步骤S804,通过所述视图代理容器实例,基于所述目标背景图生成背景纹理;步骤S806,通过所述视图代理容器实例,将所述背景纹理提供至所述桌面壁纸渲染线程中;及步骤S808,通过所述桌面壁纸渲染线程渲染所述背景纹理,以将渲染结果作为壁纸显示在所述桌面上。通过步骤S800~S808,在游戏或直播在加载资源包(代码等)的过程中,由WallpaperGLRender渲染等待加载过程,提升用户体验。
进一步的,在展示等待加载过程的情况下,为了画面无缝衔接以提高用户体验,所述方法还包括:
在确定目标对象(游戏或直播)的首帧绘制完成的情况下,切换为由目标引擎的绘制层提供数据。
为进一步提高用户体验,桌面壁纸还可以设置为视频加游戏/直播。具体如下。
在可选的实施例中,如图9所示,所述方法还可以包括:
步骤S900,将目标引擎绘制的画面数据渲染到目标纹理中,所述目标纹理关联FBO。
步骤S902,将目标视频中的视频画面数据渲染到共享纹理上,所述共享纹理为供多个线程使用的纹理。其中视频画面都可以直播过程中的实时画面,也可以是预定画面。
步骤S904,对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理。
步骤S906,将所述目标混合纹理中的内容显示到所述桌面上。
进一步的,为了实现游戏或直播场景悬浮在视频之上的视觉效果和提供交互,步骤S906可以包括:将所述目标纹理覆盖在所述共享纹理之上,以得到所述目标混合纹理。
结合图10,下面提供视频和游戏同时作为桌面壁纸的实现流程,帮助理解上述可选实施例。
步骤S1000,通过视频解码子线程对目标视频进行解码,并生成共享纹理。
视频解码子线程可以根据目标视频的码率计算定时通知WallpaperGLRend er渲染。
所述共享纹理为可以供多个线程使用的纹理。
步骤S1002,拦截游戏绘制,将目标引擎的绘制数据绘制到目标纹理上。
该目标纹理关联(Attach)画面的离屏FBO。
步骤S1004,对共享纹理和目标纹理进行纹理混合。
纹理混合方式可以为:先绘制视频画面数据(共享纹理),再绘制游戏画面数据(目标纹理)。通过上述纹理混合方式,叠加后游戏画面会盖在目标视频的上方。
步骤S1006,将合成后的离屏FBO,绘制到在屏幕上。
实施例二
图11示意性示出了根据本申请实施例二的虚拟桌面的显示装置的框图,该虚拟桌面的显示装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。如图11所示,该虚拟桌面的显示装置1100可以包括创建模块1110、绑定模块1120、加载模块1130、渲染模块1140,其中:
创建模块1110,用于创建视图代理容器实例;
绑定模块1120,用于将所述视图代理容器实例绑定到桌面壁纸服务引擎的桌面壁纸渲染线程;
加载模块1130,用于通过所述视图代理容器实例将待绘制画面载入到所述桌面壁纸渲染线程中;及
渲染模块1140,用于通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
在可选的实施例中,该虚拟桌面的显示装置1100可以包括交互模块(未标识),用于:
通过所述桌面壁纸服务引擎监听交互事件;
通过所述桌面壁纸服务引擎将所述交互事件的事件信息提供给所述视图代理容器实例;
通过所述视图代理容器实例将所述交互事件的事件信息提供给目标引擎,以使所述目标引擎执行相应的预设逻辑及基于所述目标引擎的绘制层更新画面数据;
通过所述视图代理容器实例,将更新后的画面数据提供给所述桌面壁纸渲染线程;
通过所述桌面壁纸渲染线程渲染所述更新后的画面数据,以更新所述桌面的壁纸。
在可选的实施例中,该虚拟桌面的显示装置1100可以包括切换模块(未标识),用于:
通过切换所述目标引擎的绘制层,将其他游戏或直播的画面作为所述桌面的壁纸。
在可选的实施例中,该虚拟桌面的显示装置1100可以包括背景过度模块(未标识),用于:
在资源包加载过程中,提供预备背景图;
根据所述桌面的当前壁纸运行状态以及所述预备背景图,生成目标背景图;
通过所述视图代理容器实例,基于所述目标背景图生成背景纹理;
通过所述视图代理容器实例,将所述背景纹理提供至所述桌面壁纸渲染线程中;及
通过所述桌面壁纸渲染线程渲染所述背景纹理,以将渲染结果作为壁纸显示在所述桌面上。
在可选的实施例中,该虚拟桌面的显示装置1100可以包括切换模块(未标识),用于:
在确定目标对象的首帧绘制完成的情况下,切换为由目标引擎的绘制层提供数据。
在可选的实施例中,该虚拟桌面的显示装置1100可以包括显示模块(未标识),用于:
将目标引擎绘制的画面数据渲染到目标纹理中,所述目标纹理关联FBO;
将目标视频中的视频画面数据渲染到共享纹理上,所述共享纹理为供多个线程使用的纹理;
对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理;
将所述目标混合纹理中的内容显示到所述桌面上。
在可选的实施例中,所述显示模块,还用于:
将所述目标纹理覆盖在所述共享纹理之上,以得到所述目标混合纹理。
实施例三
图12示意性示出了根据本申请实施例三的适于实现虚拟桌面的显示方法的计算机设备10000的硬件架构示意图。所述计算机设备10000可以作为移动终端2或移动终端2的一部分。本实施例中,计算机设备10000是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、膝上笔记本、个人电脑、虚拟设备、机顶盒、电视机、投影仪、车载终端等。如图12所示,所述计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如虚拟桌面的显示方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图12仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的虚拟桌面的显示方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请实施例。
实施例四
本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的虚拟桌面的显示方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中虚拟桌面的显示方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
实施例五
图13示意性示出了根据本申请实施例五的虚拟桌面的显示方法的流程图。
如图13所示,该虚拟桌面的显示方法可以包括步骤S1300~S1302,其中:
步骤S1300,获取目标应用的画面数据,所述画面数据包括视频画面数据或游戏画面数据;
步骤S1302,响应于预设操作,在桌面上显示所述画面数据对应的虚拟画面。
在看视频或玩游戏的过程中,用户可能会觉得某帧或某几帧或实时帧可以作为壁纸。此时,用户可以通过对相应控件的触发方式,将视频或游戏的指定帧或实时帧的画面作为桌面壁纸,从而增加壁纸的可玩性,提高用户体验,也帮助直播、游戏的推广。
需要说明的是,在桌面上显示所述画面数据对应的虚拟画面可以通过实施例一所述的方式实现。
例如,所述步骤S1302可以包括:
响应于预设操作,创建视图代理容器实例;
将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程;
通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中;
通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
进一步,还可以为基于视频直播、游戏等的壁纸提交的交互功能,如链接跳转、点赞等。
具体实现步骤可以包括:
通过所述桌面壁纸服务引擎监听交互事件;
通过所述桌面壁纸服务引擎将所述交互事件的事件信息提供给所述视图代理容器实例;
通过所述视图代理容器实例将所述交互事件的事件信息提供给目标引擎,以使所述目标引擎执行相应的预设逻辑及基于所述目标引擎的绘制层更新画面数据;
通过所述视图代理容器实例,将更新后的画面数据提供给所述桌面壁纸渲染线程;
通过所述桌面壁纸渲染线程渲染所述更新后的画面数据,以更新所述桌面的壁纸。
进一步,还可以为基于视频直播、游戏等的壁纸提供切换功能,如视频直播的壁纸切换为游戏的壁纸。具体实现方式包括:通过切换所述目标引擎的绘制层,将其他游戏或直播的画面作为所述桌面的壁纸。
进一步,还可以提供视频加游戏的壁纸。具体实现方式包括:将目标引擎绘制的画面数据渲染到目标纹理中,所述目标纹理关联FBO;将目标视频中的视频画面数据渲染到共享纹理上,所述共享纹理为供多个线程使用的纹理;对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理;将所述目标混合纹理中的内容显示到所述桌面上。
需要说明的是,本实施例的技术内容和效果,均可以参考实施例一中的内容,在此不赘述。
本实施例的方法可以以代码形式存储在实施例三的计算机设备、实施例四的计算机可读存储介质中。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种虚拟桌面的显示方法,其特征在于,所述方法包括:
创建视图代理容器实例;
将所述视图代理容器实例绑定桌面壁纸服务引擎的桌面壁纸渲染线程;
通过所述视图代理容器实例将画面数据载入到所述桌面壁纸渲染线程中;及
通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
2.根据权利要求1所述的虚拟桌面的显示方法,其特征在于,所述方法还包括:
通过所述桌面壁纸服务引擎监听交互事件;
通过所述桌面壁纸服务引擎将所述交互事件的事件信息提供给所述视图代理容器实例;
通过所述视图代理容器实例将所述交互事件的事件信息提供给目标引擎,以使所述目标引擎执行相应的预设逻辑及基于所述目标引擎的绘制层更新画面数据;
通过所述视图代理容器实例,将更新后的画面数据提供给所述桌面壁纸渲染线程;
通过所述桌面壁纸渲染线程渲染所述更新后的画面数据,以更新所述桌面的壁纸。
3.根据权利要求2所述的虚拟桌面的显示方法,其特征在于,所述方法还包括:
通过切换所述目标引擎的绘制层,将其他游戏或直播的画面作为所述桌面的壁纸。
4.根据权利要求1所述的虚拟桌面的显示方法,其特征在于,所述方法还包括:
在资源包加载过程中,提供预备背景图;
根据所述桌面的当前壁纸运行状态以及所述预备背景图,生成目标背景图;
通过所述视图代理容器实例,基于所述目标背景图生成背景纹理;
通过所述视图代理容器实例,将所述背景纹理提供至所述桌面壁纸渲染线程中;及
通过所述桌面壁纸渲染线程渲染所述背景纹理,以将渲染结果作为壁纸显示在所述桌面上。
5.根据权利要求4所述的虚拟桌面的显示方法,其特征在于,所述方法还包括:
在确定目标对象的首帧绘制完成的情况下,切换为由目标引擎的绘制层提供数据。
6.根据权利要求1至5任一项所述的虚拟桌面的显示方法,其特征在于,所述方法还包括:
将目标引擎绘制的画面数据渲染到目标纹理中,所述目标纹理关联FBO;
将目标视频中的视频画面数据渲染到共享纹理上,所述共享纹理为供多个线程使用的纹理;
对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理;
将所述目标混合纹理中的内容显示到所述桌面上。
7.根据权利要求6所述的虚拟桌面的显示方法,其特征在于,所述对所述目标纹理和所述共享纹理进行纹理混合操作,以得到目标混合纹理,包括:
将所述目标纹理覆盖在所述共享纹理之上,以得到所述目标混合纹理。
8.一种虚拟桌面的显示装置,其特征在于,所述装置包括:
创建模块,用于创建视图代理容器实例;
绑定模块,用于将所述视图代理容器实例绑定到桌面壁纸服务引擎的桌面壁纸渲染线程;
加载模块,用于通过所述视图代理容器实例将待绘制画面载入到所述桌面壁纸渲染线程中;及
渲染模块,用于通过所述桌面壁纸渲染线程渲染所述画面数据,以在桌面上显示虚拟画面。
9.一种虚拟桌面的显示方法,其特征在于,所述方法包括:
获取目标应用的画面数据,所述画面数据包括视频画面数据或游戏画面数据;
响应于预设操作,在桌面上显示所述画面数据对应的虚拟画面。
10.根据权利要求9所述的虚拟桌面的显示方法,其特征在于,所述在桌面上显示所述画面数据对应的虚拟画面,包括:
权利要求1至8中任意一项所述的虚拟桌面的显示方法的步骤。
11.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至8或9至10中任意一项所述的虚拟桌面的显示方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至8或9至10中任意一项所述的虚拟桌面的显示方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211533793.4A CN115904592A (zh) | 2022-11-30 | 2022-11-30 | 虚拟桌面的显示方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211533793.4A CN115904592A (zh) | 2022-11-30 | 2022-11-30 | 虚拟桌面的显示方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904592A true CN115904592A (zh) | 2023-04-04 |
Family
ID=86478508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211533793.4A Pending CN115904592A (zh) | 2022-11-30 | 2022-11-30 | 虚拟桌面的显示方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904592A (zh) |
-
2022
- 2022-11-30 CN CN202211533793.4A patent/CN115904592A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020038441A1 (zh) | 地图渲染方法、装置、计算机设备及存储介质 | |
CN108279966B (zh) | 网页截图方法、装置、终端及存储介质 | |
EP2245598B1 (en) | Multi-buffer support for off-screen surfaces in a graphics processing system | |
WO2019228013A1 (zh) | 在3d模型上展示富文本的方法、装置及设备 | |
CN113286159A (zh) | 应用程序的页面显示方法、装置和设备 | |
EP2997547B1 (en) | Primitive-based composition | |
CN112337091B (zh) | 人机交互方法、装置及电子设备 | |
WO2018120992A1 (zh) | 一种窗口渲染方法及终端 | |
CN110968395B (zh) | 一种在模拟器中处理渲染指令的方法及移动终端 | |
CN116821040B (zh) | 基于gpu直接存储器访问的显示加速方法、装置及介质 | |
WO2023197762A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN112423111A (zh) | 图形引擎和适用于播放器的图形处理方法 | |
CN115546410A (zh) | 窗口展示方法、装置、电子设备及存储介质 | |
CN112799801B (zh) | 一种模拟鼠标指针绘制方法、装置、设备和介质 | |
US8203567B2 (en) | Graphics processing method and apparatus implementing window system | |
CN115904592A (zh) | 虚拟桌面的显示方法和装置 | |
CN114222185B (zh) | 视频播放方法、终端设备及存储介质 | |
CN111243069B (zh) | 一种Unity3D引擎的场景切换方法和系统 | |
CN111949150B (zh) | 控制外设切换方法、装置、存储介质及电子设备 | |
US20240177371A1 (en) | Display method and apparatus for virtual desktop | |
TW200418322A (en) | Processing method and system for real-time video stream | |
CN106445535B (zh) | 一种操作处理方法和装置 | |
CN112667410A (zh) | 跨进程通讯方法、终端及计算机可读存储介质 | |
US11782705B2 (en) | Scene switching method, device and medium | |
CN117708454A (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 |