基于wlroots的服务端装饰窗口的阴影功能实现方法与流程

文档序号:34115354发布日期:2023-05-10 23:47阅读:182来源:国知局
基于wlroots的服务端装饰窗口的阴影功能实现方法与流程

本发明涉及wayland阴影功能实现优化,具体涉及基于wlroots的服务端装饰窗口的阴影功能实现方法。


背景技术:

1、wayland是一个开源项目,旨在创建linux下新型的显示服务器架构,wayland的目标是替代x,提供一个简单、高效、轻量的,符合现代桌面要求的显示服务器架构。现代桌面的一个重要特征即窗口的合成。wayland即通过合成器来直接与应用程序和视频硬件通信,并转发事件给它们。这其中,应用程序渲染图形到应用程序的缓冲中,然后合成器即显示服务器合成这些图形并显示在屏幕上(就是应用程序的窗口)。

2、wlroots是基于wayland框架合成器的实现。wlroots提供了许多wayland接口的独立实现,主要来自wayland.xml和各种协议扩展,促进了跨许多合成器的可移植扩展的标准化。

3、wlroots提供了强大的、独立的和可选的工具,这些工具实现了许多合成器共有的组件,例如物理空间中的输出排列。

4、中国发明专利(201510233251.9,一种阴影特效图的生成方法及装置)本发明实施例公开了一种阴影特效图的生成方法及装置,该方法包括:接收用户的阴影特效添加指令,确定目标阴影特效;新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数,与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离;将所述目标图片第一副本各像素的色彩参数,替换为所述目标阴影特效的色彩参数;在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。与现有技术相比,阴影特效更加真实。

5、中国发明专利(202010763065.7,基于局部阴影特效的图像样本生成方法及装置)本发明公开了基于局部阴影特效的图像样本生成方法、装置、计算机设备及存储介质,涉及人工智能技术,包括调用对比度亮度调节算法,将输入图片进行对比度亮度调节,得到对应的暗图片和亮图片;获取输入图片的原图尺寸,根据原图尺寸初始化得到初始模糊正向匀光图片以对初其进行模糊正向匀光得到当前模糊正向匀光图片;将当前模糊正向匀光图片进行高斯模糊,得到高斯模糊后图片;根据输入图片对应的暗图片和亮图片以及高斯模糊后图片进行合成,得到与输入图片对应的图像样本。实现了对输入图片基于局部阴影特效进行图像样本的扩充,降低了获取身份证图片样本的获取难度,而且所扩充的图像样本接近真实场景拍摄的样本,解决了小样本问题。

6、中国发明专利(201110126820.1,一种阴影的动态二维字幕的实现的方法及系统)本发明公开了一种阴影的动态二维字幕的实现的方法及系统,主要涉及广播电视节目制作、播出领域中对字幕特效的制作和处理,所述方法包括:1)采集字幕窗口内像素信息,及阴影参数;2)根据阴影参数,对所涉及阴影区域进行赋值;3)建立播放帧与阴影区域赋值的关联;4)按照帧序,对每帧画面根据所述关联进行渲染。所述系统包括:字幕窗口信息采集单元、阴影参数采集单元、阴影区域生成关联单元、渲染赋值单元,其中,字幕窗口信息采集单元、阴影参数采集单元将参数输入阴影区域生成关联单元,阴影区域生成关联单元输出到渲染赋值单元,进行字幕窗口内的像素渲染,本发明通过原字幕窗口的基本尺寸参数、变形后字幕窗口的基本尺寸,动态获取阴影变形函数参数,从而动态、线性的解决了阴影特效的动态显示的问题,通过光线轨迹,从而提供了更多的阴影光照的显示效果。

7、当前wlroots没有实现服务端装饰窗口的阴影功能,其他主流合成器上有两种办法,一是将图片转成纹理后再修改shader(着色器),单独调后端opengl函数smoothstep或者自己写函数接口来实现渐变效果的。二是将图片转成buffer后,渲染时挂在buffer节点下实现阴影功能。目前wlroots渲染合成流程使用的后端是统一的,如果使用方法1实现阴影功能,单独去改变shader与后端,比较复杂,在窗口的矩形框叠加地方,不好处理,阴影效果不理想,存在覆盖,而且不利于代码统一管理,也不具备代码可扩展性。如果使用方法2,将增加8个buffer类型节点,目前wlroots渲染是基于tree与node来实现的,本来节点已经非常多了,如果又多8个buffer节点,遍历复杂度增加,而且在响应事件处理上难度增加了。如何不增加buffer节点,不修改shader与后端情况下实现阴影功能是面临的重要问题。


技术实现思路

1、为解决已有技术存在的不足,本发明提供了一种基于wlroots的服务端装饰窗口的阴影功能实现方法,包括如下步骤:

2、步骤s1:准备用于实现阴影功能的八张图片,并将这八张图片放在根目录下;

3、步骤s2:将八张图片均转换成shadow_element结构体,并初始化结构体中的相关参数;

4、步骤s3:从图片的buffer中调取每张图片的宽、高、步长及格式数据,并将这些数据分别填充至每张图片的shadow_element结构体中;

5、步骤s4:将八张图片的shadow_element结构体转换成对应的纹理;

6、步骤s5:渲染rect节点,将八张图片的纹理按照顺序与rect节点关联;

7、步骤s6:计算阴影贴在屏幕上的实际位置;

8、步骤s7:裁剪步骤s6中的实际位置,形成裁剪区;

9、步骤s8:将步骤s4中的纹理渲染到裁剪区,形成阴影功能。

10、其中,所述步骤s1中,所准备的八张图片对应所需实现阴影功能的窗口的四条边和四个圆角。

11、其中,所述步骤s2中,通过cairo_image_surface_create_from_png函数将八张图片均转换成shadow_element结构体。

12、其中,所述步骤s3中,分别通过如下函数获取八张图片的宽、高及格式:

13、cairo_image_surface_get_width;

14、cairo_image_surface_get_height;

15、cairo_image_surface_get_format;

16、其中,步长为宽的四倍。

17、其中,所述步骤s4中,通过wlr_texture_from_pixels函数接口将八张图片的shadow_element结构体转换成对应的纹理。

18、其中,所述步骤s5中,通过事先定义好的index参数确定属于扩展隐藏区的rect节点,并确定好rect节点与八张图片在顺序上的对应关系。

19、其中,所述步骤s6中,通过正交矩阵函数计算阴影贴在屏幕上的实际位置。

20、其中,所述步骤s8中,将纹理按照repeat属性渲染到裁剪区,形成阴影功能。

21、本发明提供的基于wlroots的服务端装饰窗口的阴影功能实现方法,充分利用窗口现有的扩展隐藏区域,无需增加buffer与rect节点情况下,无需单独改再shader与后端函数,保证了代码统一性,实现了阴影功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1