CN109542574B - 一种基于OpenGL的弹窗背景虚化方法和装置 - Google Patents
一种基于OpenGL的弹窗背景虚化方法和装置 Download PDFInfo
- Publication number
- CN109542574B CN109542574B CN201811436806.XA CN201811436806A CN109542574B CN 109542574 B CN109542574 B CN 109542574B CN 201811436806 A CN201811436806 A CN 201811436806A CN 109542574 B CN109542574 B CN 109542574B
- Authority
- CN
- China
- Prior art keywords
- image
- transformation
- target
- frame buffer
- blurring
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请实施例公开了一种基于OpenGL的弹窗背景虚化方法及装置,在接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的显示在屏幕的目标图像,对目标图像进行虚化算法处理,得到虚化图像,虚化图像用于绘制在目标弹窗的显示期间的虚化背景图像。本申请实施例中,目标图像是在接收到显示目标弹窗的指令时获取的,只要对目标图像进行虚化,即可得到虚化图像,从而绘制在目标弹窗的显示期间的背景图像,因此,无需在目标弹窗的显示期间再去获取场景图像,也无需在弹窗显示期间生成新的虚化图像以绘制虚化背景,减少了场景虚化的计算量,提高了虚化效率,提高整体性能。
Description
技术领域
本发明涉及信息处理技术领域,特别是涉及一种基于OpenGL的弹窗背景虚化方法和装置。
背景技术
在用户使用终端的过程中,可能存在这样的现象:用户在应用程序界面中点击弹窗显示控件,生成弹窗显示指令,则相应的可以在界面上显示弹窗,该弹窗并未覆盖整个界面,在弹窗未覆盖的地方显示的是虚化场景。
虚化场景的形成,可以获取当前场景下的每个子节点,对每个子节点进行虚化,从而得到当前的虚化场景。然而,这种方式中,需要获取子节点的类型,例如图片、粒子、骨骼动画、帧动画、3D模型等类型,再对每个子节点进行单独的虚化处理,虚化的效率较低。
基于此,还可以通过图形处理器获取当前场景下的节点数据,根据节点数据生成场景图像,对场景图像进行虚化,得到当前场景对应的虚化图像,根据虚化图像绘制当前场景对应的虚化场景。也就是说,该方法中,可以不对场景中的各个节点进行处理,而只要对形成的场景图像进行虚化,从对节点的处理,简化成为对图像的处理,减少了程序的复杂度。
然而,在实际操作中,为了使画面更加流畅,通常在短时间内会切换多个场景,也就是说,图像处理器需要在弹窗显示期间实时生成需要显示的场景,而虚化场景中的虚化图像是对场景图像进行虚化得到的,因此,图像处理器需要实时对场景图像进行虚化和渲染,从而生成多个场景。举例来说,在1秒内有60帧场景图像的显示,则图像处理器需要对这60帧场景图像均进行虚化和渲染,以实现60帧虚化场景的显示。
因此,这种虚化场景的生成过程需要较大的计算量,场景虚化效率低,系统整体性能降低。
发明内容
为解决上述技术问题,本申请实施例提供一种基于OpenGL的弹窗背景虚化方法及装置,可以提高场景的虚化效率,提高系统整体性能。
本申请实施例提供了一种基于OpenGL的弹窗背景虚化方法,所述方法包括:
接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像;对所述目标图像进行虚化算法处理,得到虚化图像,所述虚化图像用于绘制在所述目标弹窗的显示期间的背景图像;对所述虚化图像进行渲染,实现弹窗背景虚化。
可选的,接收到显示目标弹窗的指令时,所述目标图像的获取,包括如下步骤:
获取与所述帧缓冲对象绑定的第一帧缓冲区的图像数据;
创建新的帧缓冲区作为第二帧缓冲区,并将所述第二帧缓冲区与所述帧缓冲对象进行绑定;
在所述第二帧缓冲区对所述图像数据进行几何变换处理,得到几何变换图像,并将所述几何变换图像作为目标图像。
可选的,获取所述第一帧缓冲区的图像数据,以及与所述目标图像对应的模型视图矩阵、投影变换矩阵,并以所述模型视图矩阵和所述投影变换矩阵作为几何变换参数,对所述图像数据进行模型视图变换和投影变换,并将模型视图变换和投影变换后的图像作为目标图像。
可选的,按照预设要求,对经过所述模型视图变换和投影变换后的图像数据进行视口变换,并将视口变换后的图像作为目标图像。
可选的,创建模板测试缓冲区和/或创建深度缓冲区;
对经过所述模型视图变换及投影变换后的图像数据,或,经过所述模型视图变换、投影变换和视口变换后的图像数据,进行模板测试和/或深度测试,得到测试图像;
将所述测试图像作为目标图像。
可选的,所述虚化算法为模糊算法。
可选的,所述模糊算法包括平均模糊算法或高斯模糊算法。
可选的,所述方法还包括,在接收到关闭目标弹窗的指令时,获取保存的所述第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在所述第一帧缓冲区的图像数据进行渲染,以还原弹窗显示之前的场景图像。
本申请实施例还提供了一种基于OpenGL的弹窗背景虚化装置,包括:
图像获取单元,用于接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像;
图像虚化单元,用于对所述目标图像进行虚化算法处理,得到虚化图像,所述虚化图像用于绘制在所述目标弹窗的显示期间的背景图像;
渲染单元,用于对所述虚化图像进行渲染,实现弹窗背景虚化。
可选的,所述图像获取单元包括:
数据获取单元,用于获取与所述帧缓冲对象绑定的第一帧缓冲区的图像数据;
帧缓冲区创建单元,用于创建新的帧缓冲区作为第二帧缓冲区,并将所述第二帧缓冲区与所述帧缓冲对象进行绑定;
数据处理单元,用于在所述第二帧缓冲区对所述图像数据进行几何变换处理,得到几何变换图像;
目标图像确定单元,用于将所述几何变换图像作为目标图像。
可选的,所述目标图像确定单元,包括:
第一变换单元,用于获取所述第一帧缓冲区的图像数据,以及与所述目标图像对应的模型视图矩阵、投影变换矩阵,并以所述模型视图矩阵和所述投影变换矩阵作为几何变换参数,对所述图像数据进行模型视图变换和投影变换;
第一变换图像确定单元,用于将模型视图变换和投影变换后的图像作为目标图像。
可选的,所述第一变换图像确定单元,包括:
第二变换单元,用于按照预设要求,对经过所述模型视图变换和投影变换后的图像数据进行视口变换;
第二变换图像确定单元,用于将视口变换后的图像作为目标图像。
可选的,所述第二变换图像确定单元包括:
创建单元,用于创建模板测试缓冲区和/或创建深度缓冲区;
第一测试单元,用于对经过所述模型视图变换及投影变换后的图像数据,或,经过所述模型视图变换、投影变换和视口变换后的图像数据,进行模板测试和/或深度测试,得到测试图像;
测试图像确定单元,用于将所述测试图像作为目标图像。
可选的,所述虚化算法为模糊算法。
可选的,所述模糊算法包括平均模糊算法或高斯模糊算法。
可选的,所述装置还包括:
还原单元,用于在接收到关闭目标弹窗的指令时,获取保存的所述第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在所述第一帧缓冲区的图像数据进行渲染,以还原弹窗显示之前的场景图像。
本申请实施例提供了一种基于OpenGL的弹窗背景虚化方法及装置,在接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的显示在屏幕的目标图像,对目标图像进行虚化算法处理,得到虚化图像,虚化图像用于绘制在目标弹窗的显示期间的虚化背景图像。本申请实施例中,目标图像是在接收到显示目标弹窗的指令时获取的,只要对目标图像进行虚化,即可得到虚化图像,从而绘制在目标弹窗的显示期间的背景图像,因此,无需在目标弹窗的显示期间再去获取场景图像,也无需在弹窗显示期间生成新的虚化图像以绘制虚化背景,相对于现有技术中,在目标弹窗显示期间,实时对当前场景对应的场景图像进行虚化,进而作为目标弹窗的背景来说,减少了场景虚化的计算量,提高了虚化效率,提高整体性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种场景渲染的管线流程图;
图2为本申请实施例提供的一种基于OpenGL的弹窗背景虚化方法的流程图;
图3为本申请实施例提供的一种基于OpenGL的弹窗背景虚化装置的结构框图。
具体实施方式
发明人经过研究发现,在用户使用终端的过程中,有时会需要显示虚化场景,例如用户在应用程序界面中点击弹窗显示控件,从而生成弹窗显示指令,则可以相应的在界面上显示弹窗,若弹窗并未覆盖整个界面,则弹窗未覆盖的地方可以显示虚化场景,以区分背景和弹窗。
为了形成虚化场景,现有技术中,可以通过图像处理器获取当前场景下的节点数据,根据节点数据生成场景图像,对场景图像进行虚化,从而得到当前场景对应的虚化图像,根据虚化图像绘制当前场景对应的虚化场景。这种方法中,只要对场景图像进行虚化,而不必对场景中的节点进行处理,从而可以减少程序的复杂度。
具体的,可以在cocos2dx引擎的基础上,进行场景图像的渲染和虚化。
对场景图像的渲染和虚化,可以参考图1所示为OpenGL进行场景渲染的管线流程图。首先获取顶点数据,顶点着色器可以设置顶点位置的像素值,图元装配可以建立顶点之间的连接关系,还原出网格结构,再对具有连接结构的顶点进行光栅化,得到各个顶点在屏幕空间的位置信息,即对应的像素点。片元着色器可以根据各个顶点的数据进行裁剪、深度测试、模板测试等,并根据对象的材质等,确定各个像素点的像素值。片段操作器可以对确定好的像素值进行检验等操作,将通过检验的像素值写入帧缓冲区中,这里的像素值可以作为帧缓冲对象。
在将图像数据写入帧缓冲区中后,通过glReadPixels方法读取帧缓冲区的场景图像的像素值,根据获取的像素值渲染生成场景图像,并对场景图像进行虚化得到虚化图像,根据虚化图像绘制形成虚化场景。对场景图像进行虚化的方式可以是片元着色器对场景图像中的每个像素点进行虚化,例如可以将一个目标像素点以及周围的像素点进行加权平均,得到加权像素值,将加权像素值作为目标像素点的虚化像素值,根据多个虚化像素值可以生成虚化图像。
但是,实际操作中,为了使画面更加流畅,通常需要在短时间内切换多个场景,也就是说,图像处理器需要在弹窗显示期间实时生成需要显示的场景,因此需要实时对场景图像的虚化和渲染,从而生成多个场景。举例来说,在1秒内有60帧场景的显示,则图像处理器需要对这60帧场景对应的场景图像均进行虚化和渲染,以实现60帧虚化场景的显示。但是实际上,如果屏幕中已经有弹窗在显示,虚化场景是完全没有变化的,现有技术中的方案,相当于对相同的场景图像执行60次虚化,这需要非常大的计算量,而且对相同的场景图像重复60次虚化是完全没有必要的。
基于此,本申请实施例提供了一种基于OpenGL的弹窗背景虚化方法及装置,在接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的显示在屏幕的目标图像,对目标图像进行虚化算法处理,得到虚化图像,虚化图像用于绘制在目标弹窗的显示期间的虚化背景图像。本申请实施例中,目标图像是在接收到显示目标弹窗的指令时获取的,只要对目标图像进行虚化,即可得到虚化图像,从而绘制在目标弹窗的显示期间的背景图像,因此,无需在目标弹窗的显示期间再去获取场景图像,也无需在弹窗显示期间生成新的虚化图像以绘制虚化背景,相对于现有技术中,在目标弹窗显示期间,实时对当前场景对应的场景图像进行虚化,进而作为目标弹窗的背景来说,减少了场景虚化的计算量,提高了虚化效率,提高整体性能。
下面结合附图,通过实施例来详细说明本申请实施例提供的基于OpenGL的弹窗背景虚化方法及装置的具体实现方式。
参考图2所示为本申请实施例提供的一种基于OpenGL的弹窗背景虚化方法的流程图,该方法可以包括以下步骤。
S101,接收显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像。
显示目标弹窗的指令是用户在触发弹窗显示控件时生成的,弹窗显示控件显示在屏幕中。在接收显示目标弹窗的指令之前,显示在屏幕上的图像中可以包括多个节点,节点的类型可以是图片、例子、骨骼动画、帧动画、3D模型等。场景中的节点可以具有节点数据,用于表征节点的属性等。
目标图像可以是接收显示目标弹窗的指令时,与当前帧缓冲对象对应的在屏幕中显示的当前场景对应的图像。
获取目标图像可以具体为,获取屏幕上显示的当前场景对应的图像。在当前帧缓冲对象与第一帧缓冲区绑定时,可以获取第一帧缓冲区的数据,这里的帧缓冲区的数据可以是帧缓冲对象对应的图像的各个像素点的像素值。这样,可以直接利用已经处理过的像素值,减少图像虚化的步骤。
获取目标图像也可以具体为,获取屏幕上显示的当前场景对应的图像的图像数据,根据图像数据生成目标图像。这里的图像数据可以是场景图像中的节点的属性数据,例如节点中的顶点数据、顶点之间的连接关系、深度值、材质等。在当前帧缓冲对象与第一帧缓冲区绑定时,可以从第一帧缓冲区中获取图像数据。这样,可以对图像数据重新处理,以得到更加满足实际需要的虚化图像。
在获取到目标图像的图像数据后,可以参考通过OpenGL进行图像渲染的流程,根据图像数据生成目标图像。具体的,可以创建新的帧缓冲区作为第二帧缓冲区,并将第二帧缓冲区与帧缓冲对象绑定,在第二帧缓冲区对获取的第一帧缓冲区的图像数据进行几何变换,得到几何变换图像,并将几何变换图像作为目标图像。
具体来说,可以获取第一帧缓冲区的图像数据,以及与目标图像对应的模型视图矩阵、投影变换矩阵,以模型视图矩阵和投影变换矩阵作为几何变换参数,对图像数据进行模型视图变换和投影变换,实现对图像数据的几何变换,得到几何变换图像,从而将几何变换图像作为目标图像。
在具体操作时,在对图像数据进行模型视图变换和投影变换后,还可以根据实际情况,预设对视口的要求,从而按照预设要求,对经过模型视图变换和投影变换后的图像数据进行视口变换,并将视口变换后的图像作为目标图像,这样,可以得到更符合要求的目标图像,视口的大小可以根据实际情况而定。
在具体实施时,还可以对经过模型视图变换及投影变换的图像数据进行模板测试和/或深度测试,得到测试图像,将测试图像作为目标图像;在具体实施时,还可以对经过模型视图变换、投影变换以及视口变换的图像数据进行模板测试和/或深度测试,以得到测试图像,将测试图像作为目标图像。
当然,为了数据的使用便利性,还可以对获取的帧缓冲对象绑定的第一帧缓冲区的图像数据、模型视图矩阵以及投影变换矩阵进行保存,保存的位置可以是第二帧缓冲区,也可以是其他存储位置。
S102,对目标图像进行虚化算法处理,得到虚化图像。
具体的,可以通过图形处理器对目标图像进行虚化,也可以通过中央处理器对目标图像进行虚化。
对目标图像进行虚化算法处理可以有多种方式,这里的虚化算法可以是模糊算法。具体的,在本申请实施例中,可以对场景中的目标像素点的像素值与目标像素点周围的其他像素点的像素值进行加权平均,得到目标像素点的虚化像素值。其中,各个像素点的像素值的权重可以相等,即模糊算法可以是平均模糊算法;也可以考虑其他像素点与目标像素点的位置,根据高斯分布确定,即模糊算法可以是高斯模糊算法。当然,虚拟算法处理还可以根据其他算法,在此不做限定。
通过虚化算法处理,可以得到虚化像素值,根据虚化像素值可以生成虚化图像。虚化图像可以用于绘制在目标弹窗的显示期间的背景图像。
作为一种可能的虚化像素值的获取方式,可以先确定目标像素点周围的其他像素点,其中目标像素点周围的其他像素点可以是与目标像素点的距离小于预设距离的像素点,例如可以是与目标像素点的距离小于2的像素点,再对目像素点的像素值和周围的其他像素点的像素值进行加权平均,得到目标像素点的虚化像素值。当然,目标像素点周围的其他像素点也可以由其他方式确定,在此不做限定。
作为另一种可能的虚化像素值的获取方式,可以对场景中目标像素点的像素值和与目标像素点在第一方向上的距离小于或等于第一预设距离的像素点的像素值进行加权平均,得到目标像素点的加权像素值,再对目标像素点的加权像素值和与目标像素点在第二方向上的距离小于或等于第二预设距离的像素点的加权像素值进行加权平均,得到目标像素点的虚化像素值。
其中,第一方向可以是水平方向,相应的第二方向可以是竖直方向,或者第一方向可以是竖直方向,相应的第二方向可以是水平方向。第一预设距离和第二预设距离可以相等,也可以不相等,在此不做限定。
举例来说,可以对场景中目标像素点的像素值和与目标像素点在水平方向上的距离小于或等于2的像素点的像素值,即左侧的两个像素点的像素值和右侧的两个像素点的像素值,进行加权平均,得到目标像素点的加权像素值,再对目标像素点的加权像素值和与目标像素值在竖直方向上的距离小于或等于2的像素点的加权像素值,即上方两个像素点的加权像素值和下方两个像素点的加权像素值,进行加权平均,得到目标像素点的虚化像素值。
S103,对虚化图像进行渲染。
对虚化图像进行渲染,可以实现虚化图像的显示。具体的,可以将虚化图像作为一个节点,根据虚化图像的像素值等数据,对虚化图像进行渲染。
虚化图像可以存储在第二帧缓冲区中,作为帧缓冲对象对应的目标图像的虚化图像,渲染形成的虚化场景,也可以存储在第二帧缓冲区中。这样,可以读取第二帧缓冲区中的虚化场景,在目标弹窗的显示期间循环播放这一个虚化场景,构成多帧场景。
在本申请实施例中,若接收到关闭目标弹窗的指令时,可以获取保存的第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在第一帧缓冲区中的图像数据进行渲染,形成未经虚化的目标图像,在屏幕上显示目标图像,以还原弹窗显示之前的场景图像。
本申请实施例提供了一种基于OpenGL的弹窗背景虚化方法,在接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的显示在屏幕的目标图像,对目标图像进行虚化算法处理,得到虚化图像,虚化图像用于绘制在目标弹窗的显示期间的虚化背景图像。本申请实施例中,目标图像是在接收到显示目标弹窗的指令时获取的,只要对目标图像进行虚化,即可得到虚化图像,从而绘制在目标弹窗的显示期间的背景图像,因此,无需在目标弹窗的显示期间再去获取场景图像,也无需在弹窗显示期间生成新的虚化图像以绘制虚化背景,相对于现有技术中,在目标弹窗显示期间,实时对当前场景对应的场景图像进行虚化,进而作为目标弹窗的背景来说,减少了场景虚化的计算量,提高了虚化效率,提高整体性能。
基于以上基于OpenGL的弹窗背景虚化方法,本申请实施例还提供了一种基于OpenGL的弹窗背景虚化装置,参考图3所示,为本申请实施例提供的一种基于OpenGL的弹窗背景虚化装置的结构框图,该装置包括:
图像获取单元110,用于接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像;
图像虚化单元120,用于对所述目标图像进行虚化算法处理,得到虚化图像,所述虚化图像用于绘制在所述目标弹窗的显示期间的背景图像;
渲染单元130,用于对所述虚化图像进行渲染,实现弹窗背景虚化。
可选的,所述图像获取单元包括:
数据获取单元,用于获取与所述帧缓冲对象绑定的第一帧缓冲区的图像数据;
帧缓冲区创建单元,用于创建新的帧缓冲区作为第二帧缓冲区,并将所述第二帧缓冲区与所述帧缓冲对象进行绑定;
数据处理单元,用于在所述第二帧缓冲区对所述图像数据进行几何变换处理,得到几何变换图像;
目标图像确定单元,用于将所述几何变换图像作为目标图像。
可选的,所述目标图像确定单元,包括:
第一变换单元,用于获取所述第一帧缓冲区的图像数据,以及与所述目标图像对应的模型视图矩阵、投影变换矩阵,并以所述模型视图矩阵和所述投影变换矩阵作为几何变换参数,对所述图像数据进行模型视图变换和投影变换;
第一变换图像确定单元,用于将模型视图变换和投影变换后的图像作为目标图像。
可选的,所述第一变换图像确定单元,包括:
第二变换单元,用于按照预设要求,对经过所述模型视图变换和投影变换后的图像数据进行视口变换;
第二变换图像确定单元,用于将视口变换后的图像作为目标图像。
可选的,所述第二变换图像确定单元包括:
创建单元,用于创建模板测试缓冲区和/或创建深度缓冲区;
第一测试单元,用于对经过所述模型视图变换及投影变换后的图像数据,或,经过所述模型视图变换、投影变换和视口变换后的图像数据,进行模板测试和/或深度测试,得到测试图像;
测试图像确定单元,用于将所述测试图像作为目标图像。
可选的,所述虚化算法为模糊算法。
可选的,所述模糊算法包括平均模糊算法或高斯模糊算法。
可选的,所述装置还包括:
还原单元,用于在接收到关闭目标弹窗的指令时,获取保存的所述第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在所述第一帧缓冲区的图像数据进行渲染,以还原弹窗显示之前的场景图像。
本申请实施例提供了一种基于OpenGL的弹窗背景虚化装置,在接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的显示在屏幕的目标图像,对目标图像进行虚化算法处理,得到虚化图像,虚化图像用于绘制在目标弹窗的显示期间的虚化背景图像。本申请实施例中,目标图像是在接收到显示目标弹窗的指令时获取的,只要对目标图像进行虚化,即可得到虚化图像,从而绘制在目标弹窗的显示期间的背景图像,因此,无需在目标弹窗的显示期间再去获取场景图像,也无需在弹窗显示期间生成新的虚化图像以绘制虚化背景,相对于现有技术中,在目标弹窗显示期间,实时对当前场景对应的场景图像进行虚化,进而作为目标弹窗的背景来说,减少了场景虚化的计算量,提高了虚化效率,提高整体性能。
本申请实施例中提到的“第一……”、“第一……”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例和设备实施例而言,由于其基本相似于系统实施例,所以描述得比较简单,相关之处参见系统实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的优选实施方式,并非用于限定本申请的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (14)
1.一种基于OpenGL的弹窗背景虚化方法,其特征在于,包括以下步骤:
接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像;
对所述目标图像进行虚化算法处理,得到虚化图像,所述虚化图像用于绘制在所述目标弹窗的显示期间的背景图像;
对所述虚化图像进行渲染,实现弹窗背景虚化;
其中,接收到显示目标弹窗的指令时,所述目标图像的获取,包括如下步骤:
获取与所述帧缓冲对象绑定的第一帧缓冲区的图像数据;
创建新的帧缓冲区作为第二帧缓冲区,并将所述第二帧缓冲区与所述帧缓冲对象进行绑定;
在所述第二帧缓冲区对所述图像数据进行几何变换处理,得到几何变换图像,并将所述几何变换图像作为目标图像。
2.根据权利要求1所述的方法,其特征在于,获取所述第一帧缓冲区的图像数据,以及与所述目标图像对应的模型视图矩阵、投影变换矩阵,并以所述模型视图矩阵和所述投影变换矩阵作为几何变换参数,对所述图像数据进行模型视图变换和投影变换,并将模型视图变换和投影变换后的图像作为目标图像。
3.根据权利要求2所述的方法,其特征在于,按照预设要求,对经过所述模型视图变换和投影变换后的图像数据进行视口变换,并将视口变换后的图像作为目标图像。
4.根据权利要求3所述的方法,其特征在于,创建模板测试缓冲区和/或创建深度缓冲区;
对经过所述模型视图变换及投影变换后的图像数据,或,经过所述模型视图变换、投影变换和视口变换后的图像数据,进行模板测试和/或深度测试,得到测试图像;
将所述测试图像作为目标图像。
5.根据权利要求1所述的方法,其特征在于,所述虚化算法为模糊算法。
6.根据权利要求5所述的方法,其特征在于,所述模糊算法包括平均模糊算法或高斯模糊算法。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括,在接收到关闭目标弹窗的指令时,获取保存的所述第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在所述第一帧缓冲区的图像数据进行渲染,以还原弹窗显示之前的场景图像。
8.一种基于OpenGL的弹窗背景虚化装置,其特征在于,包括:
图像获取单元,用于接收到显示目标弹窗的指令时,获取与当前帧缓冲对象对应的并显示在屏幕的目标图像;
图像虚化单元,用于对所述目标图像进行虚化算法处理,得到虚化图像,所述虚化图像用于绘制在所述目标弹窗的显示期间的背景图像;
渲染单元,用于对所述虚化图像进行渲染,实现弹窗背景虚化;
其中,所述图像获取单元包括:
数据获取单元,用于获取与所述帧缓冲对象绑定的第一帧缓冲区的图像数据;
帧缓冲区创建单元,用于创建新的帧缓冲区作为第二帧缓冲区,并将所述第二帧缓冲区与所述帧缓冲对象进行绑定;
数据处理单元,用于在所述第二帧缓冲区对所述图像数据进行几何变换处理,得到几何变换图像;
目标图像确定单元,用于将所述几何变换图像作为目标图像。
9.根据权利要求8所述的装置,其特征在于,所述目标图像确定单元,包括:
第一变换单元,用于获取所述第一帧缓冲区的图像数据,以及与所述目标图像对应的模型视图矩阵、投影变换矩阵,并以所述模型视图矩阵和所述投影变换矩阵作为几何变换参数,对所述图像数据进行模型视图变换和投影变换;
第一变换图像确定单元,用于将模型视图变换和投影变换后的图像作为目标图像。
10.根据权利要求9所述的装置,其特征在于,所述第一变换图像确定单元,包括:
第二变换单元,用于按照预设要求,对经过所述模型视图变换和投影变换后的图像数据进行视口变换;
第二变换图像确定单元,用于将视口变换后的图像作为目标图像。
11.根据权利要求10所述的装置,其特征在于,所述第二变换图像确定单元包括:
创建单元,用于创建模板测试缓冲区和/或创建深度缓冲区;
第一测试单元,用于对经过所述模型视图变换及投影变换后的图像数据,或,经过所述模型视图变换、投影变换和视口变换后的图像数据,进行模板测试和/或深度测试,得到测试图像;
测试图像确定单元,用于将所述测试图像作为目标图像。
12.根据权利要求8所述的装置,其特征在于,所述虚化算法为模糊算法。
13.根据权利要求12所述的装置,其特征在于,所述模糊算法包括平均模糊算法或高斯模糊算法。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
还原单元,用于在接收到关闭目标弹窗的指令时,获取保存的所述第一帧缓冲区的图像数据以及模型视图矩阵、投影变换矩阵,基于帧缓冲对象,对保存在所述第一帧缓冲区的图像数据进行渲染,以还原弹窗显示之前的场景图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811436806.XA CN109542574B (zh) | 2018-11-28 | 2018-11-28 | 一种基于OpenGL的弹窗背景虚化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811436806.XA CN109542574B (zh) | 2018-11-28 | 2018-11-28 | 一种基于OpenGL的弹窗背景虚化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542574A CN109542574A (zh) | 2019-03-29 |
CN109542574B true CN109542574B (zh) | 2022-04-05 |
Family
ID=65852368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811436806.XA Active CN109542574B (zh) | 2018-11-28 | 2018-11-28 | 一种基于OpenGL的弹窗背景虚化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542574B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334027B (zh) * | 2019-07-04 | 2024-04-12 | 深圳市腾讯网域计算机网络有限公司 | 游戏画面测试方法和装置 |
CN113129417A (zh) | 2019-12-27 | 2021-07-16 | 华为技术有限公司 | 一种全景应用中图像渲染的方法及终端设备 |
CN116664375B (zh) * | 2022-10-17 | 2024-04-12 | 荣耀终端有限公司 | 图像预测方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108648257A (zh) * | 2018-04-09 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 全景画面的获取方法、装置、存储介质及电子装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7343566B1 (en) * | 2002-07-10 | 2008-03-11 | Apple Inc. | Method and apparatus for displaying a window for a user interface |
US20070132965A1 (en) * | 2005-12-12 | 2007-06-14 | Niranjan Damera-Venkata | System and method for displaying an image |
CN104834429A (zh) * | 2014-02-10 | 2015-08-12 | 联想(北京)有限公司 | 一种界面显示方法及电子设备 |
CN104615764B (zh) * | 2015-02-13 | 2019-05-03 | 北京搜狗科技发展有限公司 | 一种显示方法及电子设备 |
CN107168616B (zh) * | 2017-06-08 | 2020-02-21 | 网易(杭州)网络有限公司 | 游戏交互界面显示方法、装置、电子设备及存储介质 |
-
2018
- 2018-11-28 CN CN201811436806.XA patent/CN109542574B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108648257A (zh) * | 2018-04-09 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 全景画面的获取方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109542574A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8035641B1 (en) | Fast depth of field simulation | |
US8952962B2 (en) | Graphics processing method and apparatus using post fragment shader | |
US9202258B2 (en) | Video retargeting using content-dependent scaling vectors | |
CN109542574B (zh) | 一种基于OpenGL的弹窗背景虚化方法和装置 | |
KR101267120B1 (ko) | 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑 | |
US9704229B2 (en) | Post-render motion blur | |
US20070120858A1 (en) | Generation of motion blur | |
Bertalmio et al. | Real-time, accurate depth of field using anisotropic diffusion and programmable graphics cards | |
US8040352B2 (en) | Adaptive image interpolation for volume rendering | |
CN112652046B (zh) | 游戏画面的生成方法、装置、设备及存储介质 | |
US8854392B2 (en) | Circular scratch shader | |
US10776996B2 (en) | Method and apparatus for processing image | |
CN111968214A (zh) | 一种体积云渲染方法、装置、电子设备及存储介质 | |
US20060181534A1 (en) | Generation of motion blur | |
KR20160068204A (ko) | 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체 | |
CN111882498A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN109729285B (zh) | 熔线格特效生成方法、装置、电子设备及存储介质 | |
US7880743B2 (en) | Systems and methods for elliptical filtering | |
WO2023184139A1 (en) | Methods and systems for rendering three-dimensional scenes | |
WO2022135050A1 (zh) | 渲染方法、设备以及系统 | |
EP4145396A1 (en) | Method for adapting the rendering of a scene | |
US9269183B1 (en) | Combined clipless time and lens bounds for improved sample test efficiency in image rendering | |
US8010330B1 (en) | Extracting temporally coherent surfaces from particle systems | |
KR20240068288A (ko) | 적응적 슈퍼 샘플링 방법 및 적응적 슈퍼 샘플링 장치 | |
CN117278800A (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 |