CN112347380A - 一种窗口渲染方法及相关设备 - Google Patents
一种窗口渲染方法及相关设备 Download PDFInfo
- Publication number
- CN112347380A CN112347380A CN201910729361.2A CN201910729361A CN112347380A CN 112347380 A CN112347380 A CN 112347380A CN 201910729361 A CN201910729361 A CN 201910729361A CN 112347380 A CN112347380 A CN 112347380A
- Authority
- CN
- China
- Prior art keywords
- window
- sub
- rendering
- screen
- service function
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/954—Navigation, e.g. using categorised browsing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例公开了一种窗口渲染方法及相关设备,包括:首先确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;接着根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;然后按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。采用本发明实施例,可以提高异形窗口的渲染性能,从而提高窗口画面显示的流畅度。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种窗口渲染方法及相关设备。
背景技术
在窗口显示过程中,常用的渲染方式包括屏幕渲染和离屏渲染。其中,屏幕渲染是指浏览器引擎将超文本标记语言(Hyper Text Markup Language,HTML)/层叠样式表(Cascading Style Sheets,CSS)/JavaScript(JS)内容渲染后直接输出到屏幕的方式。离屏渲染是指浏览器引擎将HTML/CSS/JS内容渲染成位图并输出到内存的方式。目前,针对直播窗口的处理普遍使用的是离屏渲染,进行离屏渲染时应用程序单独开辟一块地方绘制位图,而图形处理器(Graphics Processing Unit,GPU)加速合成是中央处理器(CentralProcessing Unit,CPU)将绘制工作交给GPU完成并由GPU呈现给屏幕,因此尽管浏览器内核为应用程序提供无效区域和像素缓冲区,但不支持加速合成,从而导致窗口渲染性能较低。尤其是在窗口播放视频时,帧率较低,若不加特殊处理,用户将明显感觉到高清画面的卡顿现象。
发明内容
本发明提供一种窗口渲染方法及相关设备,可以提高异形窗口的渲染性能,从而提高窗口画面显示的流畅度。
第一方面,本发明实施例提供了一种窗口渲染方法,包括:
确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;
根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;
按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
其中,所述第一子窗口和第二子窗口包括所述多个功能区域中的至少一个功能区域;所述功能类型包括像素混合型,所述像素混合型的业务功能是基于像素混合技术实现的;
所述根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口包括:
若所述功能区域所实现的业务功能中包括所述像素混合型的业务功能,则确定所述功能区域属于所述第一子窗口;否则,确定所述功能区域属于所述第二子窗口。
其中,所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口之后,还包括:
对所述第一子窗口和所述第二子窗口进行同步处理,所述同步处理包括同步位移。
其中,所述对所述第一子窗口和所述第二子窗口进行同步处理包括:
按照预设的时间间隔获取所述第一子窗口和所述第二子窗口的位置信息;
根据所述位置信息,确定所述第一子窗口和所述第二子窗口之间是否间隔其他窗口;
当所述第一子窗口和所述第二子窗口之间间隔其他窗口时,调整所述第一子窗口和/或所述第二子窗口的位置。
其中,所述对所述第一子窗口和所述第二子窗口进行同步处理包括:
控制所述第二子窗口监听所述第一子窗口的位移同步消息、以及控制所述第二子窗口根据所述位移同步消息进行位移;以及
控制所述第一子窗口监听所述第二子窗口的焦点消息、以及控制所述第一子窗口根据所述焦点消息进行位移。
其中,所述目标窗口对应一个主线程和一个子线程;
所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口包括:
按照所述离屏渲染的方式在所述主线程中渲染所述第一子窗口、以及按照所述屏幕渲染的方式在所述子线程中渲染所述第二子窗口。
其中,所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口之后,还包括:
在所述子线程中对所述第一子窗口和所述第二子窗口进行同步处理。
其中,所述第一子窗口为所述第二子窗口的逻辑父窗口;所述第二子窗口为顶层窗口。
第二方面,本发明实施例提供了一种窗口渲染装置,包括:
信息确定模块,用于确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;
窗口分解模块,用于根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;
窗口渲染模块,用于按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
其中,所述第一子窗口和第二子窗口包括所述多个功能区域中的至少一个功能区域;所述功能类型包括像素混合型,所述像素混合型的业务功能是基于像素混合技术实现的;
所述窗口分解模块还用于:
若所述功能区域所实现的业务功能中包括所述像素混合型的业务功能,则确定所述功能区域属于所述第一子窗口;否则,确定所述功能区域属于所述第二子窗口。
其中,所述装置还包括同步处理模块,用于:
对所述第一子窗口和所述第二子窗口进行同步处理,所述同步处理包括同步位移。
其中,所述同步处理模块还用于:
按照预设的时间间隔获取所述第一子窗口和所述第二子窗口的位置信息;
根据所述位置信息,确定所述第一子窗口和所述第二子窗口之间是否间隔其他窗口;
当所述第一子窗口和所述第二子窗口之间间隔其他窗口时,调整所述第一子窗口和/或所述第二子窗口的位置。
其中,所述同步处理模块还用于:
控制所述第二子窗口监听所述第一子窗口的位移同步消息、以及控制所述第二子窗口根据所述位移同步消息进行位移;以及
控制所述第一子窗口监听所述第二子窗口的焦点消息、以及控制所述第一子窗口根据所述焦点消息进行位移。
其中,所述目标窗口对应一个主线程和一个子线程;
所述窗口渲染模块还用于:
按照所述离屏渲染的方式在所述主线程中渲染所述第一子窗口、以及按照所述屏幕渲染的方式在所述子线程中渲染所述第二子窗口。
其中,所述同步处理模块还用于:
在所述子线程中对所述第一子窗口和所述第二子窗口进行所述同步处理。
其中,所述第一子窗口为所述第二子窗口的逻辑父窗口;所述第二子窗口为顶层窗口。
第三方面,本发明实施例提供了一种窗口渲染设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种窗口渲染方法中的步骤。
在一个可能的设计中,本发明提供的实体识别设备可以包含用于执行上述方法中行为相对应的模块。模块可以是软件和/或硬件。
本发明实施例的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。
本发明实施例的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
实施本发明实施例,首先确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;接着根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;然后按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。不仅可以提高窗口画面的流畅度和窗口渲染的性能,还降低了所占用的内容、减轻了CPU的负担。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种窗口渲染方法的流程示意图;
图2是本发明实施例提供的一种层叠窗口堆的示意图;
图3是本发明实施例提供的一种目标窗口的示意图;
图4是本发明实施例提供的另一种窗口渲染方法的流程示意图;
图5是本发明实施例提供的实际应用场景的示意图
图6是本发明实施例提供的一种窗口渲染装置结构示意图;
图7是本发明实施例提供的一种窗口渲染设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种窗口渲染方法的流程示意图,该方法包括但不限于如下步骤:
S101,确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型。
具体实现中,目标窗口可以为可分解成多个子窗口的异形窗口,如“回”字形窗口、“田”字形窗口等。同时,目标窗口也是分层窗口(layer window),它可以包含多个功能区域,每个功能区域用于实现至少一种业务功能。例如,如图2所示,线上课堂窗口包括了教师在线说课的直播区域、以及师生在线交流的聊天区域。其中,直播区域实现的业务功能包括教师在讲课式所需所使用的画笔功能、加载网页(如教师在线搜索并向学生展示的网页)或其他程序窗口(如用于显示课件的PowerPoint窗口)的功能等,聊天区域实现的业务功能为多用户(教师和学生)之间的实时交互。在本发明中将目标窗口所实现的所有业务功能划分为像素混合型业务功能和非像素混合型业务功能。顾名思义,像素混合型业务功能是基于像素混合技术来实现的,例如,画笔功能。其中,常用的像素混合技术包括阿尔法(alpha,α)混合技术,alpha混合技术是指将一个窗口控件(frame)覆盖在另一个frame上,并且上面的frame不会完全遮挡下面的frame,也就是说上面一层的frame中的部分区域是透明,其中,两个frame的像素按照预先设置的α值来进行混合。非像素混合型的业务功能是指无需利用像素混合技术实现的其他业务功能。
S102,根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口。
具体实现中,第一子窗口和第二子窗口分别包括至少一个功能区域。其中,针对每个功能区域,若该功能区域所实现的业务功能中包括像素混合型的业务功能,则确定该功能区域属于第一子窗口,否则,确定该功能区域属于第二子窗口。如图2所示,基于Windows系统的线上课堂窗口包括直播区域和聊天区域,其中,直播区域所实现的画笔功能为像素混合型的业务功能,因此将直播区域划分到第一子窗口。聊天区域所实现的多用户实时交互功能无需利用像素混合技术,属于非像素混合型的业务功能,因此将聊天区域划分到第二子窗口。最终得到由直播区域组成的第一子窗口——直播窗口、以及由聊天区域组成的第二子窗口——聊天窗口。此外,如图2所示,直播窗口和聊天窗口的窗口显示区域均可使用利用Windows系统提供的接口来进行挖空,则挖空区域当前显示的均为电脑的背景桌面。
需要说明的是,从Windows2000开始,Windows操作系统开始采用分层窗口机制。在此机制下,多个窗口可以进行层叠,形成层叠窗口堆,该窗口堆是按照一个假象的轴定位的,该轴垂直于屏幕并向屏幕外延伸,通常将其称为Z轴。层叠窗口堆中的每个窗口以Z轴为参考轴依次层叠,其中,每个窗口具有一个层叠次序(z-order),用于表示该窗口位于层叠窗口堆的第几层、也可以表示窗口显示的先后顺序。如图3所示,该层叠窗口堆包括3个窗口,其中,顶层窗口的z-order为3,第二层窗口延Z轴叠放于顶层窗口的下方,其z-order为2,第三层窗口也是底层窗口,延Z轴叠放于第二层窗口的下方,z-order为1。除此之外,窗口之间还存在父/子关系、兄弟关系等从属关系。其中,子窗口是从父窗口中衍生出的下一级窗口,兄弟窗口是从同一父窗口的同一级目录衍生的两个窗口。
基于上述说明,本发明对第一子窗口和第二子窗口作进一步地描述——1)第二子窗口为不存在父窗口的窗口、通常置于顶层作为顶层窗口;2)第一子窗口为第二子窗口的逻辑父窗口,第二子窗口保存第一子窗口的句柄。
S103,按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
具体实现中,为了实现实时画面显示的流畅性,需要实现像素混合型的业务功能的窗口应使用离屏渲染的方式来进行渲染。而非像素混合型的业务功能只要求画面正常显示即可,对画面显示的实时性的要求相比于像素混合型低,因此只需使用屏幕渲染方式对第二子窗口进行渲染即可。其根本原因在于,在屏幕渲染方式中,GPU的渲染操作是在当前屏幕缓冲区进行的,而离屏渲染方式在当前屏幕缓冲区以外还另开辟的一个缓冲区用于完成窗口的渲染,因此在屏幕刷新率要求较高时,离屏渲染能更好的满足画面流畅度的要求。然而,由此也可以看出相比于屏幕渲染,离屏渲染占用了更多的内存,加重了CPU的处理负担。因此,本发明先将目标窗口分解为了多个子窗口,再根据每个子窗口的实际情况选择适合的渲染方式,从而达到降低所占用的内存、减轻CPU负担的目的。
需要说明的是,在极端情况下,目标窗口的多个功能区域中的每个功能区域均不包含像素混合型业务功能,则可以按照各个功能区域之间的逻辑关系将目标窗口分解为多个逻辑子窗口,并直接使用屏幕渲染的方式渲染每个逻辑子窗口。
在本发明实施例中,首先确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;接着根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;然后按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。可降低窗口渲染所占用的内存、减轻CPU的负担,以便提高窗口画面显示的流畅度和窗口渲染的性能。
请参见图4,图4是本发明实施例提供的另一种窗口渲染方法的流程示意图,该方法包括但不限于如下步骤:
S401,确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型。本步骤与上一实施例中的S101相同,本步骤不再赘述。
S402,根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口。本步骤与上一实施例中的S102相同,本步骤不再赘述。
S403,按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。本步骤与上一实施例中的S103相同,本步骤不再赘述。
S404,对所述第一子窗口和所述第二子窗口进行同步处理。
具体实现中,第一子窗口为第二子窗口的逻辑父窗口,当第一子窗口和第二子窗口任意一个窗口移动,需要对另一子窗口作同步位移处理。一方面,第二子窗口可以监听第一子窗口的位移同步消息,其中,位移同步消息可以但不限于是指第一子窗口在进行向四周移动之后,向第二子窗口广播或发送的位移信息,该位移信息可以包括位移的方向和幅度,第二子窗口则可以根据该位移同步消息作进行同步位移。其中,同步位移还可以包括第一子窗口/第二子窗口隐藏时,同步隐藏第二子窗口/第一子窗口。
另一方面,可以控制第一子窗口监听第二子窗口的焦点消息,并控制第一子窗口根据监听到的焦点消息进行位移。其中,在Windows系统中,焦点决定了由那个窗口/控件/窗口中的哪个输入框来接收键盘输入信息。而在用户使用键盘利用某种输入(如搜狗输入法)进行输入时,相应地将出现输入内容的候选框,该候选框来自输入法对应的应用程序,因此接收键盘输入的窗口需要进行相应地同步位移以使该候选框显示在适合的地方。对应到本发明中,若第二子窗口发生与输入内容候选框对应的同步位移,则第一子窗口也需做与第二子窗口同步的位移。
在将目标窗口分解为第一子窗口和第二子窗口之后,尽管第一子窗口为第二子窗口的逻辑父窗口,但第一子窗口和第二子窗口之间并没有实际的父子关系。因此,操作系统不会对两者进行同步管理,从而经常出现第一子窗口/第二子窗口移动,另第二子窗口/第一子窗口无法随之进行同步移动的问题,导致从用户视角看到的为两个分离的子窗口。而对第一子窗口和第二子窗口进行同步位移处理可以有效地解决这一问题。
可选的,可以对第一子窗口和第二子窗口在其所在的层叠窗口堆中的层叠次序进行同步调整。具体的,可以按照预设的时间间隔获取第一子窗口和第二子窗口的位置信息,其中,预设的时间间隔可以为10微秒、10毫秒等等。该位置信息可以但不限于为z-order,针对一个层叠窗口堆,可以通过GetTopWindow函数和GetNextWindow函数遍历其中的窗口从而得到期望窗口的z-order。接着,根据位置信息,确定第一子窗口和第二子窗口之间是否间隔其他窗口,即第一子窗口和第二子窗口在Z轴上是否紧挨着、是否有其他窗口(如浏览器窗口)夹在它们之间。例如,如图3所示,第一子窗口和第二子窗口的z-order分别为1和3,第二子窗口为顶层窗口,第一子窗口为第三层(底层)窗口,此时第一子窗口和第二子窗口之间间隔了一个其他窗口,该窗口夹在第一子窗口和第二子窗口之间,从而形成“三明治窗口”。此时,夹在第一子窗口和第二子窗口之间的窗口使得第一子窗口和第二子窗口无法有效地合成为目标窗口,即将目标窗口按照本发明提供的方法渲染后无法达到与常规渲染方法相同的显示效果。因此,若第一子窗口和第二子窗口之间间隔了其他窗口,则需调整第一子窗口和第二子窗口的位置,其中,可以同时调整两个窗口的位置,也可以保持其中一个子窗口的位置不变调整另一个子窗口的位置。例如,当第一子窗口和第二子窗口的z-order分别为3和1时,可以将第一子窗口的z-order调整为2,将其从第三层窗口调整为第二层窗口,从而使得第一子窗口和第二子窗口紧挨着。
可选的,目标窗口对应了一个主线程和一个子线程。其中,可以在主线程中进行按照离屏渲染的方式渲染第一子窗口的操作、以及在子线程中进行按照屏幕渲染的方式渲染第二子窗口的操作。同时,第一子窗口和第二子窗口的同步处理操作也在子线程中进行。考虑到若将两个子窗口的创建(渲染)均放在主线程中进行,则处理这两个子窗口的同步问题时容易造成线程堵塞,于是采取了上述将任务分解到子线程的方法。
在本发明实施例中,首先确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;接着根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;然后按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口;最后对第一子窗口和第二子窗口进行同步处理。以图2所示的线上课堂窗口为例,在未分解之前,线上课堂窗口包括直播区域和聊天区域。然后,因为直播区域包括了像素混合型业务功能——画笔功能,从而将其划分到第一子窗口得到直播窗口,聊天区域不包括任何像素混合型业务功能,从而将其划分到第二子窗口得到聊天窗口。接着,如图5所示,针对直播窗口,按照离屏渲染的方式首先将直播窗口渲染成位图并将其输出到内存得到内存位图,接着利用alpha混合技术将内存位图和电脑屏幕进行像素混合得到直播窗口的离屏渲染结果。针对聊天窗口,可以按照屏幕渲染的方式渲染位图并直接将其输出到屏幕以便得到聊天窗口的屏幕渲染结果。最后,对直播窗口和聊天窗口做同步处理,以使得从用户视角看到的为唯一窗口——未分解的线上课堂窗口。
采用本发明实施例,可以防止“三明治窗口”和两个子窗口位移不同步问题的出现,从而在保障目标窗口显示正常的前提下,提高窗口画面显示的流畅度和窗口渲染的性能。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的相关设备。
请参见图6,图6是本发明实施例提供的一种窗口渲染装置的结构示意图,该装置可以包括:
信息确定模块601,用于确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型。
具体实现中,目标窗口可以为可分解成多个子窗口的异形窗口,如“回”字形窗口、“田”字形窗口等。同时,目标窗口也是分层窗口(layer window),它可以包含多个功能区域,每个功能区域用于实现至少一种业务功能。例如,如图2所示,线上课堂窗口包括了教师在线说课的直播区域、以及师生在线交流的聊天区域。其中,直播区域实现的业务功能包括教师在讲课式所需所使用的画笔功能、加载网页(如教师在线搜索并向学生展示的网页)或其他程序窗口(如用于显示课件的PowerPoint窗口)的功能等,聊天区域实现的业务功能为多用户(教师和学生)之间的实时交互。在本发明中将目标窗口所实现的所有业务功能划分为像素混合型业务功能和非像素混合型业务功能。顾名思义,像素混合型业务功能是基于像素混合技术来实现的,例如,画笔功能。其中,常用的像素混合技术包括alpha混合技术,alpha混合技术是指将一个窗口控件(frame)覆盖在另一个frame上,并且上面的frame不会完全遮挡下面的frame,也就是说上面一层的frame中的部分区域是透明,其中,两个frame的像素按照预先设置的α值来进行混合。非像素混合型的业务功能是指无需利用像素混合技术实现的其他业务功能。
窗口分解模块602,用于根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口。
具体实现中,第一子窗口和第二子窗口分别包括至少一个功能区域。其中,针对每个功能区域,若该功能区域所实现的业务功能中包括像素混合型的业务功能,则确定该功能区域属于第一子窗口,否则,确定该功能区域属于第二子窗口。如图2所示,基于Windows系统的线上课堂窗口包括直播区域和聊天区域,其中,直播区域所实现的画笔功能为像素混合型的业务功能,因此将直播区域划分到第一子窗口。聊天区域所实现的多用户实时交互功能无需利用像素混合技术,属于非像素混合型的业务功能,因此将聊天区域划分到第二子窗口。最终得到由直播区域组成的第一子窗口——直播窗口、以及由聊天区域组成的第二子窗口——聊天窗口。此外,如图2所示,直播窗口和聊天窗口的窗口显示区域均可使用利用Windows系统提供的接口来进行挖空,则挖空区域当前显示的均为电脑的背景桌面。
需要说明的是,从Windows2000开始,Windows操作系统开始采用分层窗口机制。在此机制下,多个窗口可以进行层叠,形成层叠窗口堆,该窗口堆是按照一个假象的轴定位的,该轴垂直于屏幕并向屏幕外延伸,通常将其称为Z轴。层叠窗口堆中的每个窗口以Z轴为参考轴依次层叠,其中,每个窗口具有一个层叠次序(z-order),用于表示该窗口位于层叠窗口堆的第几层、也可以表示窗口显示的先后顺序。如图3所示,该层叠窗口堆包括3个窗口,其中,顶层窗口的z-order为3,第二层窗口延Z轴叠放于顶层窗口的下方,其z-order为2,第三层窗口也是底层窗口,延Z轴叠放于第二层窗口的下方,z-order为1。除此之外,窗口之间还存在父/子关系、兄弟关系等从属关系。其中,子窗口是从父窗口中衍生出的下一级窗口,兄弟窗口是从同一父窗口的同一级目录衍生的两个窗口。
基于上述说明,本发明对第一子窗口和第二子窗口作进一步地描述——1)第二子窗口为不存在父窗口的窗口、通常置于顶层作为顶层窗口;2)第一子窗口为第二子窗口的逻辑父窗口,第二子窗口保存第一子窗口的句柄。
窗口渲染模块603,用于按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
具体实现中,为了实现实时画面显示的流畅性,需要实现像素混合型的业务功能的窗口应使用离屏渲染的方式来进行渲染。而非像素混合型的业务功能只要求画面正常显示即可,对画面显示的实时性的要求相比于像素混合型低,因此只需使用屏幕渲染方式对第二子窗口进行渲染即可。其根本原因在于,在屏幕渲染方式中,GPU的渲染操作是在当前屏幕缓冲区进行的,而离屏渲染方式在当前屏幕缓冲区以外还另开辟的一个缓冲区用于完成窗口的渲染,因此在屏幕刷新率要求较高时,离屏渲染能更好的满足画面流畅度的要求。然而,由此也可以看出相比于屏幕渲染,离屏渲染占用了更多的内存,加重了CPU的处理负担。因此,本发明先将目标窗口分解为了多个子窗口,再根据每个子窗口的实际情况选择适合的渲染方式,从而达到降低所占用的内存、减轻CPU负担的目的。
可选的,本发明实施例中的装置还包括同步处理模块,用于对所述第一子窗口和所述第二子窗口进行同步处理。
具体实现中,第一子窗口为第二子窗口的逻辑父窗口,当第一子窗口和第二子窗口任意一个窗口移动,需要对另一子窗口作同步位移处理。一方面,第二子窗口可以监听第一子窗口的位移同步消息,其中,位移同步消息可以但不限于是指第一子窗口在进行向四周移动之后,向第二子窗口广播或发送的位移信息,该位移信息可以包括位移的方向和幅度,第二子窗口则可以根据该位移同步消息作进行同步位移。其中,同步位移还可以包括第一子窗口/第二子窗口隐藏时,同步隐藏第二子窗口/第一子窗口。
另一方面,可以控制第一子窗口监听第二子窗口的焦点消息,并控制第一子窗口根据监听到的焦点消息进行位移。其中,在Windows系统中,焦点决定了由那个窗口/控件/窗口中的哪个输入框来接收键盘输入信息。而在用户使用键盘利用某种输入法(如搜狗输入法)进行输入时,相应地将出现输入内容的候选框,该候选框来自输入法对应的应用程序,因此接收键盘输入的窗口需要进行相应地同步位移以使该候选框显示在适合的地方。对应到本发明中,若第二子窗口发生与输入内容候选框对应的同步位移,则第一子窗口也需做与第二子窗口同步的位移。
在将目标窗口分解为第一子窗口和第二子窗口之后,尽管第一子窗口为第二子窗口的逻辑父窗口,但第一子窗口和第二子窗口之间并没有实际的父子关系。因此,操作系统不会对两者进行同步管理,从而经常出现第一子窗口/第二子窗口移动,另第二子窗口/第一子窗口无法随之进行同步移动的问题,导致从用户视角看到的为两个分离的子窗口。而对第一子窗口和第二子窗口进行同步位移处理可以有效地解决这一问题。
可选的,可以对第一子窗口和第二子窗口在其所在的层叠窗口堆中的层叠次序进行同步调整。具体的,可以按照预设的时间间隔获取第一子窗口和第二子窗口的位置信息,其中,该位置信息可以但不限于为z-order,针对一个层叠窗口堆,可以通过GetTopWindow函数和GetNextWindow函数遍历其中的窗口从而得到期望窗口的z-order。接着,根据位置信息,确定第一子窗口和第二子窗口之间是否间隔其他窗口,即第一子窗口和第二子窗口在Z轴上是否紧挨着、是否有其他窗口(如浏览器窗口)夹在它们之间。例如,如图3所示,第一子窗口和第二子窗口的z-order分别为1和3,第二子窗口为顶层窗口,第一子窗口为第三层(底层)窗口,此时第一子窗口和第二子窗口之间间隔了一个其他窗口,该窗口夹在第一子窗口和第二子窗口之间,从而形成“三明治窗口”。此时,在第一子窗口和第二子窗口之间的其他窗口使得第一子窗口和第二子窗口无法有效地合成为目标窗口,即将目标窗口按照本发明提供的方法渲染后无法达到与常规渲染方法相同的显示效果。因此,若第一子窗口和第二子窗口之间间隔了其他窗口,则需调整第一子窗口和第二子窗口的位置,其中,可以同时调整两个窗口的位置,也可以保持其中一个子窗口的位置不变调整另一个子窗口的位置。例如,当第一子窗口和第二子窗口的z-order分别为3和1时,可以将第一子窗口的z-order调整为2,将其从第三层窗口调整为第二层窗口,从而使得第一子窗口和第二子窗口紧挨着。
可选的,目标窗口对应了一个主线程和一个子线程。其中,窗口渲染模块603还可以在主线程中进行按照离屏渲染的方式渲染第一子窗口的操作、以及在子线程中进行按照屏幕渲染的方式渲染第二子窗口的操作。同时,第一子窗口和第二子窗口的同步处理操作也在子线程中进行。考虑到若将两个子窗口的创建(渲染)均放在主线程中进行,则处理这两个子窗口的同步问题时容易造成线程堵塞,于是采取了上述将任务分解到子线程的方法。
在本发明实施例中,首先确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;接着根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;然后按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口;最后对第一子窗口和第二子窗口进行同步处理。可以减少窗口渲染所占的内存、减轻CPU的处理负担,以及提高窗口画面显示的流畅度和窗口渲染的性能。
请参见图7,图7是本发明实施例提供的一种窗口渲染设备的结构示意图。如图所示,该设备可以包括:至少一个处理器701,至少一个通信接口702,至少一个存储器703和至少一个通信总线704。
其中,处理器701可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线704可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线704用于实现这些组件之间的连接通信。其中,本发明实施例中设备的通信接口702用于与其他节点设备进行信令或数据的通信。存储器703可以包括易失性存储器,例如非挥发性动态随机存取内存(Nonvolatile Random Access Memory,NVRAM)、相变化随机存取内存(PhaseChange RAM,PRAM)、磁阻式随机存取内存(Magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、闪存器件,例如反或闪存(NORflash memory)或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(SolidState Disk,SSD)等。存储器703可选的还可以是至少一个位于远离前述处理器701的存储装置。存储器703中存储一组程序代码,且处理器701执行存储器703中的程序:
确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;
根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;
按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
可选的,所述第一子窗口和第二子窗口包括所述多个功能区域中的至少一个功能区域;所述功能类型包括像素混合型,所述像素混合型的业务功能是基于像素混合技术实现的;
处理器701还用于执行如下操作步骤:
若所述功能区域所实现的业务功能中包括所述像素混合型的业务功能,则确定所述功能区域属于所述第一子窗口;否则,确定所述功能区域属于所述第二子窗口。
可选的,处理器701还用于执行如下操作步骤:
对所述第一子窗口和所述第二子窗口进行同步处理,所述同步处理包括同步位移。
可选的,处理器701还用于执行如下操作步骤:
按照预设的时间间隔获取所述第一子窗口和所述第二子窗口的位置信息;
根据所述位置信息,确定所述第一子窗口和所述第二子窗口之间是否间隔其他窗口;
当所述第一子窗口和所述第二子窗口之间间隔其他窗口时,调整所述第一子窗口和/或所述第二子窗口的位置。
可选的,处理器701还用于执行如下操作步骤:
控制所述第二子窗口监听所述第一子窗口的位移同步消息、以及控制所述第二子窗口根据所述位移同步消息进行位移;以及
控制所述第一子窗口监听所述第二子窗口的焦点消息、以及控制所述第一子窗口根据所述焦点消息进行位移。
可选的,所述目标窗口对应一个主线程和一个子线程;
处理器701还用于执行如下操作步骤:
按照所述离屏渲染的方式在所述主线程中渲染所述第一子窗口、以及按照所述屏幕渲染的方式在所述子线程中渲染所述第二子窗口。
进一步的,处理器还可以与存储器和通信接口相配合,执行上述发明实施例中窗口渲染装置的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种窗口渲染方法,其特征在于,所述方法包括:
确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;
根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;
按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
2.如权利要求1所述的方法,其特征在于,所述第一子窗口和第二子窗口包括所述多个功能区域中的至少一个功能区域;所述功能类型包括像素混合型,所述像素混合型的业务功能是基于像素混合技术实现的;
所述根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口包括:
若所述功能区域所实现的业务功能中包括所述像素混合型的业务功能,则确定所述功能区域属于所述第一子窗口;否则,确定所述功能区域属于所述第二子窗口。
3.如权利要求2所述的方法,其特征在于,所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口之后,还包括:
对所述第一子窗口和所述第二子窗口进行同步处理,所述同步处理包括同步位移。
4.如权利要求3所述的方法,其特征在于,所述对所述第一子窗口和所述第二子窗口进行同步处理包括:
按照预设的时间间隔获取所述第一子窗口和所述第二子窗口的位置信息;
根据所述位置信息,确定所述第一子窗口和所述第二子窗口之间是否间隔其他窗口;
当所述第一子窗口和所述第二子窗口之间间隔其他窗口时,调整所述第一子窗口和/或所述第二子窗口的位置。
5.如权利要求3所述的方法,其特征在于,所述对所述第一子窗口和所述第二子窗口进行同步处理包括:
控制所述第二子窗口监听所述第一子窗口的位移同步消息、以及控制所述第二子窗口根据所述位移同步消息进行位移;以及
控制所述第一子窗口监听所述第二子窗口的焦点消息、以及控制所述第一子窗口根据所述焦点消息进行位移。
6.如权利要求3所述的方法,其特征在于,所述目标窗口对应一个主线程和一个子线程;
所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口包括:
按照所述离屏渲染的方式在所述主线程中渲染所述第一子窗口、以及按照所述屏幕渲染的方式在所述子线程中渲染所述第二子窗口。
7.如权利要求6所述的方法,其特征在于,所述按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口之后,还包括:
在所述子线程中对所述第一子窗口和所述第二子窗口进行同步处理。
8.如权利要求1-7任一项所述的方法,其特征在于,所述第一子窗口为所述第二子窗口的逻辑父窗口;所述第二子窗口为顶层窗口。
9.一种窗口渲染装置,其特征在于,所述装置包括:
信息确定模块,用于确定目标窗口包含的多个功能区域中每个功能区域所实现的业务功能、以及所述业务功能的功能类型;
窗口分解模块,用于根据所述功能类型分解所述目标窗口,得到第一子窗口和第二子窗口;
窗口渲染模块,用于按照离屏渲染的方式渲染所述第一子窗口、以及按照屏幕渲染的方式渲染所述第二子窗口。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910729361.2A CN112347380B (zh) | 2019-08-07 | 2019-08-07 | 一种窗口渲染方法及相关设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910729361.2A CN112347380B (zh) | 2019-08-07 | 2019-08-07 | 一种窗口渲染方法及相关设备 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN112347380A true CN112347380A (zh) | 2021-02-09 |
| CN112347380B CN112347380B (zh) | 2024-12-17 |
Family
ID=74367430
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910729361.2A Active CN112347380B (zh) | 2019-08-07 | 2019-08-07 | 一种窗口渲染方法及相关设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN112347380B (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112947969A (zh) * | 2021-03-10 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种页面离屏渲染方法、装置、设备和可读介质 |
| CN113791857A (zh) * | 2021-09-03 | 2021-12-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中应用窗口背景模糊处理方法及装置 |
| CN113961119A (zh) * | 2021-09-18 | 2022-01-21 | 北京城市网邻信息技术有限公司 | 信息显示方法、装置、电子设备及存储介质 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU2011101579A4 (en) * | 2011-08-31 | 2012-02-02 | Google Llc | Selective rendering of off-screen content |
| CN106406901A (zh) * | 2016-09-28 | 2017-02-15 | 北京奇虎科技有限公司 | 一种窗口移动方法和装置 |
| CN106445286A (zh) * | 2016-09-13 | 2017-02-22 | 北京奇虎科技有限公司 | 基于分屏的终端屏幕的焦点确定方法、装置及终端设备 |
| CN108269222A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 一种窗口渲染方法及终端 |
-
2019
- 2019-08-07 CN CN201910729361.2A patent/CN112347380B/zh active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU2011101579A4 (en) * | 2011-08-31 | 2012-02-02 | Google Llc | Selective rendering of off-screen content |
| CN106445286A (zh) * | 2016-09-13 | 2017-02-22 | 北京奇虎科技有限公司 | 基于分屏的终端屏幕的焦点确定方法、装置及终端设备 |
| CN106406901A (zh) * | 2016-09-28 | 2017-02-15 | 北京奇虎科技有限公司 | 一种窗口移动方法和装置 |
| CN108269222A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 一种窗口渲染方法及终端 |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112947969A (zh) * | 2021-03-10 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种页面离屏渲染方法、装置、设备和可读介质 |
| CN113791857A (zh) * | 2021-09-03 | 2021-12-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中应用窗口背景模糊处理方法及装置 |
| CN113791857B (zh) * | 2021-09-03 | 2024-04-30 | 北京字节跳动网络技术有限公司 | Linux系统中应用窗口背景模糊处理方法及装置 |
| CN113961119A (zh) * | 2021-09-18 | 2022-01-21 | 北京城市网邻信息技术有限公司 | 信息显示方法、装置、电子设备及存储介质 |
| CN113961119B (zh) * | 2021-09-18 | 2022-08-23 | 北京城市网邻信息技术有限公司 | 信息显示方法、装置、电子设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN112347380B (zh) | 2024-12-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10346522B2 (en) | Optimization for rendering web pages | |
| US8775965B1 (en) | Immersive mode for a web browser | |
| CN111796826B (zh) | 一种弹幕的绘制方法、装置、设备和存储介质 | |
| US12124688B2 (en) | Page display switching method, apparatus, storage medium, and electronic device | |
| CN112347380A (zh) | 一种窗口渲染方法及相关设备 | |
| CN106095437A (zh) | 用户界面从右到左rtl的布局方式的实现方法及装置 | |
| CN111611037B (zh) | 用于电子书的视图对象处理方法、电子设备及存储介质 | |
| US6169546B1 (en) | Global viewer scrolling system | |
| US20160378272A1 (en) | Systems and methods for providing multi-focus to applications for collaboration | |
| US20200410032A1 (en) | Method for acquiring webpage frame, server, and storage medium | |
| CN110570501A (zh) | 一种线条动画绘制方法及其设备、存储介质、电子设备 | |
| CN101388979B (zh) | 一种在视频画面上叠加用户界面的方法 | |
| CN115396717A (zh) | 显示设备及显示画质调节方法 | |
| CN108228130B (zh) | 一种嵌入式设备的液晶屏显示方法及装置 | |
| CN111158822A (zh) | 一种显示界面控制方法、装置、存储介质和电子设备 | |
| CN116882370A (zh) | 一种内容处理方法、装置、电子设备及存储介质 | |
| CN112214149A (zh) | 智能交互显示装置及其截屏方法、系统及电子设备 | |
| CN114143477B (zh) | 图像标注方法和装置 | |
| CN111836093A (zh) | 视频播放方法、装置、设备和介质 | |
| CN119917201A (zh) | 显示屏分屏显示方法、装置和存储介质 | |
| CN119520748A (zh) | 一种基于gpu渲染的分布式投屏方法及系统 | |
| CN114697573B (zh) | 字幕生成方法、计算机设备、计算机可读存储介质 | |
| US9948910B2 (en) | Method of and apparatus for simultaneously displaying video input along with supplementary information | |
| CN116204677A (zh) | 一种图表处理方法及装置 | |
| CN119065771B (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 | ||
| TG01 | Patent term adjustment | ||
| TG01 | Patent term adjustment |
Free format text: NEW EXPIRY DATE: 20391011 |