CN115501588A - 图像渲染方法、装置、存储介质及电子设备 - Google Patents
图像渲染方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115501588A CN115501588A CN202211116428.3A CN202211116428A CN115501588A CN 115501588 A CN115501588 A CN 115501588A CN 202211116428 A CN202211116428 A CN 202211116428A CN 115501588 A CN115501588 A CN 115501588A
- Authority
- CN
- China
- Prior art keywords
- post
- frame buffer
- buffer area
- processing
- processing operation
- 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
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种图像渲染方法、装置、存储介质及电子设备,该方法包括:响应于对游戏场景中目标虚拟相机的后处理请求,确定与该目标虚拟相机对应的后处理数据组列表,该后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、该渲染内容的属性数据、以及渲染器标识;根据该后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区;根据该渲染器标识确定相应后处理操作使用的目标渲染器插件;根据该目标渲染器插件、该渲染内容以及该输入帧缓冲区,在该输出帧缓冲区中生成相应后处理操作对应的渲染图像,从而能在各种游戏引擎中实现后处理功能,且支持后处理功能的热更新。
Description
技术领域
本发明涉及图像渲染领域,尤其涉及一种图像渲染方法、装置、存储介质及电子设备。
背景技术
后处理是全屏图像渲染效果的总称,其可以极大地改善产品的视觉效果,后处理发生在相机绘制场景之后但在场景渲染到屏幕上之前。
目前,大部分游戏引擎都包含后处理系统,但有些游戏引擎,比如Cocos2dx引擎并没有,而随着游戏产品对画面提升的需求越来越高,使各个游戏引擎实现后处理功能变得极为重要。
发明内容
本发明提供一种图像渲染方法、装置、存储介质及电子设备,能在游戏引擎中实现后处理功能。
本申请实施例提供了一种图像渲染方法,包括:
响应于对游戏场景中目标虚拟相机的后处理请求,确定与所述目标虚拟相机对应的后处理数据组列表,所述后处理数据组列表包括至少一个后处理数据组,每个所述后处理数据组包括相应后处理操作的渲染内容、所述渲染内容的属性数据、以及渲染器标识;
根据所述后处理数据组列表确定各个所述后处理操作对应的输入帧缓冲区和输出帧缓冲区;
根据所述渲染器标识确定相应后处理操作使用的目标渲染器插件;
根据所述目标渲染器插件、所述渲染内容以及所述输入帧缓冲区,在所述输出帧缓冲区中生成相应后处理操作对应的渲染图像。
本申请实施例还提供了一种图像渲染装置,包括:
第一确定模块,用于响应于对游戏场景中目标虚拟相机的后处理请求,确定与所述目标虚拟相机对应的后处理数据组列表,所述后处理数据组列表包括至少一个后处理数据组,每个所述后处理数据组包括相应后处理操作的渲染内容、所述渲染内容的属性数据、以及渲染器标识;
第二确定模块,用于根据所述后处理数据组列表确定各个所述后处理操作对应的输入帧缓冲区和输出帧缓冲区;
第三确定模块,用于根据所述渲染器标识确定相应后处理操作使用的目标渲染器插件;
生成模块,用于根据所述目标渲染器插件、所述渲染内容以及所述输入帧缓冲区,在所述输出帧缓冲区中生成相应后处理操作对应的渲染图像。
在一些实施方式中,所述第一确定模块具体用于:
确定与所述目标虚拟相机对应的至少一个后处理数据组、以及每个所述后处理数据组对应的优先级;
根据所述优先级和所有所述后处理数据组,生成后处理数据组列表。
在一些实施方式中,所述第二确定模块具体用于:
遍历所述后处理数据列表中的所述属性数据;
在遍历过程中,根据每次遍历操作得到的所述属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,所述帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
在一些实施方式中,所述第二确定模块具体用于:
若当前遍历操作为首次遍历时,获取所述目标虚拟相机对应的相机帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的所述属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的所述属性数据和所述帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
在一些实施方式中,所述第二确定模块具体用于:
检测已存储的第一字典中,是否存在与当前遍历操作得到的所述属性数据相匹配的预设属性数据,所述第一字典中存储有多个预设属性数据、以及每个所述预设属性数据对应的指针列表,所述指针列表中的每个指针指示所述帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的所述预设属性数据对应的所述指针列表中确定目标指针,并将所述目标指针对应的所述第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据所述属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的所述帧缓冲区更新所述帧缓冲区管理池和所述第一字典。
在一些实施方式中,所述帧缓冲区管理池还包括至少一个已占用的第二帧缓冲区,所述第二确定模块还用于:
响应于对所述第二帧缓冲区的释放请求,释放所述第二帧缓冲区;
根据释放的所述第二帧缓冲区的标识信息,更新已存储的第二字典,所述第二字典中存储有多个预设标识信息、以及所述预设标识信息对应的指针,每个指针指示所述帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的所述第二帧缓冲区的属性数据,更新所述第一字典。
在一些实施方式中,所述生成模块具体用于:
调用所述目标渲染器插件,将所述渲染内容和所述输入帧缓冲区中的存储内容,绘制在所述输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
在一些实施方式中,所述图像渲染装置还包括设置模块,用于:
响应于对所述游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示所述目标虚拟相机对应的后处理操作设置界面,所述后处理操作设置界面上提供多个输入接口,每个所述输入接口对应一个后处理操作;
响应于所述输入接口中的用户输入信息,生成所述目标虚拟相机对应的至少一个后处理数据组。
在一些实施方式中,所述设置模块还用于:
在响应于对所述游戏场景中目标虚拟相机的后处理设置请求之前,运行预设游戏引擎;
通过运行的所述预设游戏引擎,构建所述游戏场景,并在图形用户界面中显示所述游戏场景。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述任一项图像渲染方法。
本申请实施例还提供了一种电子设备,包括耦合的存储器和处理器,所述存储器存储内有计算机程序,所述处理器用于运行所述存储器内的所述计算机程序,以执行上述任一项图像渲染方法。
本申请提供的图像渲染方法、装置、存储介质及电子设备,通过响应于对游戏场景中目标虚拟相机的后处理请求,确定与目标虚拟相机对应的后处理数据组列表,后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、该渲染内容的属性数据、以及渲染器标识,之后,根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区,之后,根据该渲染器标识确定相应后处理操作使用的目标渲染器插件,并根据该目标渲染器插件、该渲染内容以及该输入帧缓冲区,在该输出帧缓冲区中生成相应后处理操作对应的渲染图像,从而能在各种游戏引擎中实现后处理功能,且由于后处理功能是通过渲染器插件来实现,从而每次后处理效果的实现均由脚本负责,进而实现了后处理功能的热更新。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。
图1为本申请实施例提供的图像渲染方法的流程示意图。
图2为本申请实施例提供的图像渲染方法的另一流程示意图。
图3为本申请实施例提供的目标虚拟相机对应的后处理操作设置界面的展示示意图。
图4为本申请实施例提供的电子设备中渲染流程的框架示意图。
图5为本申请实施例提供的图像渲染装置的结构示意图。
图6为本申请实施例提供的电子设备的结构示意图。
图7为本申请实施例提供的电子设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本文中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
本申请实施例提供一种图像渲染方法、装置、存储介质及电子设备。
请参见图1,图1是本申请实施例提供的图像渲染方法的流程示意图,该图像渲染方法应用于服务器或终端设备等电子设备中,该电子设备中可以安装Cocos2dx等游戏引擎,其具体流程可以包括如下步骤S101-S104,其中:
S101.响应于对游戏场景中目标虚拟相机的后处理请求,确定与该目标虚拟相机对应的后处理数据组列表,该后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、该渲染内容的属性数据、以及渲染器标识。
其中,游戏场景可以是通过游戏引擎创建的三维模型,游戏场景中的元素包括虚拟相机,目标虚拟相机是指需要进行后处理的虚拟相机。虚拟相机其实就是模拟人眼看物体的定律,比如远的小,近的大。在有虚拟相机的情况下,游戏场景中显示的物体会受到虚拟相机的位置影响,虚拟相机相当于人眼,当通过虚拟相机看物体时,物体的形状会受到相机的位置、旋转角度的影响。通常,游戏场景中可以设置多个虚拟相机,每个虚拟相机设置有一个标记位(FLAG),不同虚拟相机通过标记位进行区分,而每个需要显示的物体,又拥有一个相机掩膜(mask),以确定物体被哪些相机所“看到”。
对目标虚拟相机进行后处理操作,本质上是对相机绘制的图像做进一步渲染操作,比如抗锯齿(anti aliasing)、景深(depth of field)、颜色分级(color grading)、运动模糊(motion blur)等渲染操作。每个后处理数据组对应一个后处理操作,后处理数据组的数量可以根据实际需求而定,比如当最终的后处理效果需要经过多个后处理操作来实现时,后处理数据组列表中可以包括多个后处理数据组,当最终的后处理效果只需经过一个后处理操作即可实现时,后处理数据组列表中可以只包括一个后处理数据组。
渲染器标识主要用于识别渲染器,其可以表现为ID编号。渲染内容主要包括帧缓冲(frame buffer),每个帧缓冲对应一帧图像,帧缓冲可以包括颜色缓冲、深度缓冲和模版缓冲等内容,也即包括颜色信息、深度信息和模版信息等。每个后处理操作可以看作是对渲染图像的进一步渲染操作,该渲染图像可以是相机自身的绘制图像,也可以是对相机绘制图像进一步渲染后的渲染图像。属性数据主要指示该帧缓冲被写入的帧缓冲区的类别,该属性数据可以包括帧缓冲尺寸、颜色缓冲的数量、深度模板的使用情况、以及模板格式等,通常,后处理操作得到的帧缓冲需要写入对应类别的帧缓冲区。
在一些实施方式中,电子设备中可以内置后处理组件(PostProcessVolume),用户可以通过调用后处理组件来设计对虚拟相机的后处理效果,也即,请参见图2,在上述步骤S101之前,该图像渲染方法还可以包括S1051和S1052,其中:
S1051.响应于对游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示该目标虚拟相机对应的后处理操作设置界面,该后处理操作设置界面上提供多个输入接口,每个输入接口对应一个后处理操作。
其中,后处理操作设置界面可以是提供各种后处理组件的展示界面,每个输入接口对应一种后处理组件,用户可以通过输入接口来选择所需的后处理组件进行添加,并设置相应的后处理效果(后处理数据组)。每个输入接口可以关联一个参数设置页面,用户可以通过该输入接口进入对应的参数设置页面进行参数设置,以得到相应的输入信息。
比如,请参见图3,图3示出了目标虚拟相机对应的一个后处理操作设置界面,后处理操作设置界面上可以提供用于设置抗锯齿效果的输入接口、用于设置自动曝光效果的输入接口,用于设置运动模糊效果的输入接口以及用于设置景深效果的输入接口,等等,可以选中所需的输入接口,以进入对应的参数设置页面进行信息输入。同一输入接口的不同输入信息可以实现同一类后处理操作的不同处理效果,不同输入接口中的输入信息,可以实现不同类型的后处理操作。
在一些实施方式中,在设置后处理效果之前,需要先构建游戏场景,也即,在上述步骤“响应于对该游戏场景中目标虚拟相机的后处理设置请求”之前,该图像渲染方法还包括:
运行预设游戏引擎;
通过运行的该预设游戏引擎,构建该游戏场景,并在图形用户界面中显示该游戏场景。
其中,预设游戏引擎可以是Cocos2dx引擎,构建游戏场景主要指绘制并运行游戏场景对应的三维模型、以及三维模型中的元素,比如虚拟相机。当游戏场景显示在图形用户界面上后,用户可以选取一个虚拟相机作为目标虚拟相机,并通过图形用户界面上的指定功能按键,触发生成对该目标虚拟相机的后处理设置请求,比如通过点击等触摸方式选中该指定功能按键时,会触发生成该请求。
需要说明的是,在构建游戏场景时,每个虚拟相机会对应设置一个帧缓冲区(可以称为相机帧缓冲区),电子设备中的显示屏也对应设置一个帧缓冲区(可以称为离屏帧缓冲区),这些帧缓冲区是提前封装在游戏引擎中的,虚拟相机和帧缓冲区之间、以及显示屏和帧缓冲区之间的映射关系需要提前设定好,从而后续在执行渲染操作流程时,能基于映射关系,使每个虚拟相机自己的绘制图像写入自己的帧缓冲区内,使最终显示在显示屏上的渲染图像则写入离屏帧缓冲区内。
例如,请参见图4,图4示出了电子设备中渲染流程的框架示意图,电子设备可以内置游戏引擎、渲染器模组和后处理模组,游戏引擎可以对帧缓冲区进行封装。当运行游戏引擎后,需要设置屏幕分辨率,并从帧缓冲区中选择一个设置为离屏帧缓冲区,之后,通过主线程绘制游戏场景,并初始化(clear)游戏场景和剩余的帧缓冲区,之后,运行游戏场景,并从剩余的帧缓冲区中,为每个虚拟相机设置对应的帧缓冲区(相机帧缓冲区),并初始化场景背景,之后,通过渲染器模组对游戏场景进行渲染操作,以在图形用户界面中显示游戏场景,其中,渲染器模组可以调用本地渲染器或者渲染器插件进行渲染操作。之后,通过后处理模组在游戏场景中进行后处理操作。最后,当完成所有后处理操作时,可以将最终的渲染图像(游戏画面)写入离屏帧缓冲区中,之后从离屏帧缓冲区中获取该渲染图像显示在显示屏中,以呈现给用户。
S1052.响应于该输入接口中的用户输入信息,生成该目标虚拟相机对应的至少一个后处理数据组。
其中,可以基于所有输入接口中获取的用户输入信息,来生成此次后处理操作的后处理数据组。由于不同的后处理数据组通常具有不同的处理顺序,故当后处理数据组为多个时,需要先对其进行排序,也即,上述步骤“确定与该目标虚拟相机对应的后处理数据组列表”具体可以包括:
确定与该目标虚拟相机对应的至少一个后处理数据组、以及每个后处理数据组对应的优先级;
根据该优先级和所有后处理数据组,生成后处理数据组列表。
其中,每个后处理数据组的优先级,也即相应后处理组件的优先级,通常,每个后处理组件的优先级是提前设定好的。当用户为目标虚拟相机选取了一个后处理组件,并进行了相应后处理数据组的设置时,可以将该后处理组件的优先级和后处理数据组进行绑定,之后,基于绑定关系,可以按照优先级从高到低的顺序对后处理数据组进行排序,得到该列表。
S102.根据该后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区。
其中,输入帧缓冲区和输出帧缓冲区都是游戏引擎中已封装的帧缓冲区中的一个,其可以是一些默认设置的帧缓冲区,比如虚拟相机对应的相机帧缓冲区、显示屏对应的离屏帧缓冲区,也可以是其它帧缓冲区。不同的后处理操作,通常需通过不同的帧缓冲区进行后处理效果的图像渲染。
在一些实施方式中,为避免为每个后处理操作都设置一个专用的帧缓冲区,从而造成帧缓冲区的浪费和大量的内存消耗,可以通过管理池的方式对封装的帧缓冲区进行管理,从而可以基于少量的帧缓冲区实现各种后处理操作,充分提高了帧缓冲区的利用率,避免了内存的过度消耗。
例如,请继续参见图2,上述步骤S102具体可以包括:
S1021.遍历该后处理数据列表中的该属性数据;
S1022.在遍历过程中,根据每次遍历操作得到的该属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,该帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
其中,可以设置一个上下文结构context来记录并传递每个后处理操作的输入帧缓冲区和输出帧缓冲区,该上下文结构中的源(source)用于记录输入帧缓冲区,目标(destination)用于记录输出帧缓冲区。除了默认的帧缓冲区(比如相机帧缓冲区和离屏帧缓冲区)之外,游戏引擎中封装的其它未被占用的帧缓冲区,均可以由帧缓冲区管理池进行管理。
当存在多个后处理操作时,需要逐个从后处理数据列表中获取一个后处理数据组执行相应的后处理操作,每个后处理数据组的列表排列顺序即相应后处理操作的执行顺序。而由于每次后处理操作都是对渲染图像的进一步渲染操作,故需要确定需要进一步渲染的渲染图像,而该渲染图像通常是输入帧缓冲区中存储的内容,同时,需要确定进一步渲染后,渲染结果需要写入哪个帧缓冲区(也即输出帧缓冲区)。
在一些实施方式中,上述步骤“根据每次遍历操作得到的该属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区”,具体包括:
若当前遍历操作为首次遍历时,获取该目标虚拟相机对应的预设帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的该属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的该属性数据和该帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
其中,输入帧缓冲区中的内容,通常作为对应后处理操作的输入内容,而输出帧缓冲区通常作为对应后处理操作完成后,渲染结果的存储区。具体的,如果当前是第一个后处理操作,则将上下文结构的source设置为目标虚拟相机的相机帧缓冲区的指针,说明最开始的输入内容(源头图像)是从相机帧缓冲区中获取的内容;如果当前是最后一个后处理操作,则将上下文结构的destination设置为离屏帧缓冲区的指针,说明此次渲染结果需写入离屏帧缓冲区;其他情况下,则将source设置为destination,表明当前后处理操作的输入内容是上一后处理操作的渲染结果(也即上一后处理操作的输出),且将destination设置为null,表明此次渲染结果需写入帧缓冲区管理池中的帧缓冲区上。
在一些实施方式中,上述步骤“根据当前遍历操作得到的该属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区”,具体可以包括:
检测已存储的第一字典中,是否存在与当前遍历操作得到的该属性数据相匹配的预设属性数据,该第一字典中存储有多个预设属性数据、以及每个预设属性数据对应的指针列表,该指针列表中的每个指针指示该帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的该预设属性数据对应的该指针列表中确定目标指针,并将该目标指针对应的该第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据该属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的该帧缓冲区更新该帧缓冲区管理池和该第一字典。
其中,帧缓冲区管理池中未占用的帧缓冲区的管理,可以通过第一字典来完成,该第一字典是不断更新维护的。可以将预设属性数据作为键,将指针列表作为值,构建由键-值组成的第一字典。该预设属性数据可以是根据游戏引擎中封装的所有帧缓冲区的情况提前创建的,每个预设属性数据代表一种类型的帧缓冲区,每种类型可以对应多个或一个未占用的帧缓冲区,从中任意选取一个作为当前后处理操作对应的输出帧缓冲区即可。而若帧缓冲管理池中不存在相匹配的未占用的帧缓冲区,则可以根据该属性数据新建一个帧缓冲区作为输出帧缓冲区,并将新建的帧缓冲区作为第一帧缓冲区加入帧缓冲区管理池中,且将新建的帧缓冲区和对应属性数据在第一字典中关联存储,以便对帧缓冲管理池和第一字典进行更新。
此外,帧缓冲区管理池除了会对未占用的帧缓冲区进行管理,还可以对已占用的帧缓冲区进行管理,也即,该帧缓冲区管理池还可以包括至少一个已占用的第二帧缓冲区,此时,图像渲染方法还包括:
响应于对该第二帧缓冲区的释放请求,释放该第二帧缓冲区;
根据释放的该第二帧缓冲区的标识信息,更新已存储的第二字典,该第二字典中存储有多个预设标识信息、以及该预设标识信息对应的指针,每个指针指示该帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的该第二帧缓冲区的属性数据,更新该第一字典。
其中,释放第二帧缓冲区可以包括清除第二帧缓冲区中写入的内容。标识信息可以是ID编码,游戏引擎中的所有帧缓冲区均具有自己的ID编码。可以标识信息作为键、以指针为值,构建由键-值组成的第二字典,通过第二字典来管理帧缓冲管理池中已占用的帧缓冲区。一旦帧缓冲管理池中某个第二帧缓冲区被释放,则需要将其从第二字典中移除,并将其加入第一字典中。
S103.根据该渲染器标识确定相应后处理操作使用的目标渲染器插件。
在一些实施方式中,电子设备中可以安装本地渲染器,也可以安装多种渲染器插件,比如光晕特效渲染器(sunshafts effect renderer)插件、发光特效渲染器(bloomeffect renderer)插件等等。每个渲染器插件可以设置一个唯一的渲染器标识,通过该渲染器标识,从多种渲染器插件中确定目标渲染器插件。该渲染器插件和游戏引擎具有不同的实现端,比如游戏引擎可以在C++端实现,渲染器插件可以在lua端实现,也即上述图4中渲染器模组的render函数和start函数的实现在lua端,其中start函数主要用于执行渲染前的初始化操作,render函数主要用于执行渲染操作。
S104.根据该目标渲染器插件、该渲染内容以及该输入帧缓冲区,在该输出帧缓冲区中生成相应后处理操作对应的渲染图像。
其中,一旦所有后处理操作均完成,也即当前处理操作的渲染图像写入了离屏帧缓冲区时,可以从离屏帧缓冲区中将其获取并显示在图形用户界面中。在每次执行后处理操作时,一旦设定好上下文结构,就可以调用渲染器标识对应的渲染器插件进行工作了,其涉及对游戏引擎(C++端)中的上下文结构、以及帧缓冲区管理池的访问,其中,被调用的渲染器插件可以通过访问设定好的上下文结构,进一步访问游戏引擎中相应后处理操作对应的输入帧缓冲区(可以看作访问帧缓冲区管理池),并将输入帧缓冲区中存储的内容作为此次需要后处理操作的对象,同时,通过访问设定好的上下文结构,进一步访问相应后处理操作对应的输出帧缓冲区(可以看作访问帧缓冲区管理池),并在输出帧缓冲区中对对象进行进一步渲染,也即,上述步骤S104具体可以包括:调用该目标渲染器插件,将该渲染内容和该输入帧缓冲区中的存储内容,绘制在该输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
需要说明的是,要实现渲染器插件对上下文结构和帧缓冲区管理池的访问,需要在lua端绑定(游戏引擎)C++端中的上下文结构和帧缓冲管理池;要实现基于渲染器标识调用渲染器插件,需要在lua端设置与渲染器标识同名的渲染器插件。当电子设备中的渲染器模组执行render函数时,其会调用渲染器插件来实现。通过这种绑定方式进行后处理渲染操作时,每次后处理效果的实现均由脚本负责,从制作完成到呈现给用户,无需花费漫长的时间,实现了热更新。
需要指出的是,在多个后处理操作的执行过程中,当执行任一个后处理操作时,上一个后处理操作的输出帧缓冲区中的内容作为当前处理操作的输入内容后,可以将该输出帧缓冲区进行释放,并更新第一字典和第二字典。而一旦输出帧缓冲区中写入了内容,也即单个后处理操作完成,则说明该输出帧缓冲区已被占用,需要更新第一字典和第二字典。
此外,上述步骤S101-S104只是针对单个目标虚拟相机的后处理操作,若需要进行后处理操作的虚拟相机为多个,则可以按顺序依次执行每个虚拟相机的后处理操作。通常,执行顺序是根据虚拟相机所处的游戏层级来确定,比如天空盒(skybox)对应的虚拟相机,其游戏层级是较低的,用户界面UI对应的虚拟相机,其游戏层级是较高的,可以按照游戏层级从低到高,依次对虚拟相机排序,并按照该排序顺序依次执行其对应的后处理操作。
由上述可知,本实施例提供的图像渲染方法,通过响应于对游戏场景中目标虚拟相机的后处理请求,确定与该目标虚拟相机对应的后处理数据组列表,该后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、该渲染内容的属性数据、以及渲染器标识;根据该后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区;根据该渲染器标识确定相应后处理操作使用的目标渲染器插件;根据该目标渲染器插件、该渲染内容以及该输入帧缓冲区,在该输出帧缓冲区中生成相应后处理操作对应的渲染图像,从而能在各种游戏引擎中实现后处理功能,且由于后处理功能是通过渲染器插件来实现,从而每次后处理效果的实现均由脚本负责,进而实现了后处理功能的热更新。
基于上述实施例所描述的方法,本实施例将从图像渲染装置的角度进一步进行描述,该图像渲染装置具体可以作为独立的实体来实现,其可以应用于服务器或终端等电子设备中,该终端可以包括手机、平板电脑、个人PC等,该服务器可以是能提供图像渲染服务的服务器。
请参阅图5,图5具体描述了本申请实施例提供的图像渲染装置,该图像渲染装置可以包括:第一确定模块10、第二确定模块20、第三确定模块30和生成模块40,其中:
(1)第一确定模块10
第一确定模块10,用于响应于对游戏场景中目标虚拟相机的后处理请求,确定与目标虚拟相机对应的后处理数据组列表,后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、渲染内容的属性数据、以及渲染器标识。
在一些实施方式中,第一确定模块10具体用于:
确定与目标虚拟相机对应的至少一个后处理数据组、以及每个后处理数据组对应的优先级;
根据优先级和所有后处理数据组,生成后处理数据组列表。
在一些实施方式中,图像渲染装置还包括设置模块,用于:
响应于对游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示目标虚拟相机对应的后处理操作设置界面,后处理操作设置界面上提供多个输入接口,每个输入接口对应一个后处理操作;
响应于输入接口中的用户输入信息,生成目标虚拟相机对应的至少一个后处理数据组。
在一些实施方式中,设置模块还用于:
在响应于对游戏场景中目标虚拟相机的后处理设置请求之前,运行预设游戏引擎;
通过运行的预设游戏引擎,构建游戏场景,并在图形用户界面中显示游戏场景。
(2)第二确定模块20
第二确定模块20,用于根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区。
在一些实施方式中,第二确定模块20具体用于:
遍历后处理数据列表中的所述属性数据;
在遍历过程中,根据每次遍历操作得到的属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
在一些实施方式中,第二确定模块20具体用于:
若当前遍历操作为首次遍历时,获取目标虚拟相机对应的相机帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的属性数据和帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
在一些实施方式中,第二确定模块20具体用于:
检测已存储的第一字典中,是否存在与当前遍历操作得到的属性数据相匹配的预设属性数据,第一字典中存储有多个预设属性数据、以及每个预设属性数据对应的指针列表,指针列表中的每个指针指示帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的预设属性数据对应的指针列表中确定目标指针,并将目标指针对应的第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的帧缓冲区更新帧缓冲区管理池和第一字典。
在一些实施方式中,帧缓冲区管理池还包括至少一个已占用的第二帧缓冲区,第二确定模块20还用于:
响应于对第二帧缓冲区的释放请求,释放第二帧缓冲区;
根据释放的第二帧缓冲区的标识信息,更新已存储的第二字典,第二字典中存储有多个预设标识信息、以及预设标识信息对应的指针,每个指针指示帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的第二帧缓冲区的属性数据,更新第一字典。
(3)第三确定模块30
第三确定模块30,用于根据渲染器标识确定相应后处理操作使用的目标渲染器插件。
(4)生成模块40
生成模块40,用于根据目标渲染器插件、渲染内容以及输入帧缓冲区,在输出帧缓冲区中生成相应后处理操作对应的渲染图像。
在一些实施方式中,生成模块40具体用于:
调用目标渲染器插件,将渲染内容和输入帧缓冲区中的存储内容,绘制在输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
另外,本申请实施例还提供一种电子设备,该电子设备可以是智能手机、平板电脑等设备。如图6所示,电子设备200包括处理器201、存储器202。其中,处理器201与存储器202电性连接。
处理器201是电子设备200的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或加载存储在存储器202内的应用程序,以及调用存储在存储器202内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
在本实施例中,电子设备200中的处理器201会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器202中,并由处理器201来运行存储在存储器202中的应用程序,从而实现各种功能。
图7示出了本申请实施例提供的电子设备的另一结构示意图(具体结构框图),该电子设备可以用于实施上述实施例中提供的图像渲染方法。该电子设备可以包括智能手机或服务器。
该电子设备可以包括一个或者一个以上处理核心的处理器301、一个或一个以上计算机可读存储介质的存储器302、射频(Radio Frequency,RF)电路303、电源304、输入单元305、以及显示单元306等部件。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器301是该电子设备的控制中心。其中,处理器利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器302内的软件程序和/或模块,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器可包括一个或多个处理核心;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解地是,上述调制解调处理器也可以不集成到处理器中。
存储器302可用于存储软件程序(计算机程序)以及模块,处理器301通过运行存储在存储器302的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器302可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器302还可以包括存储器控制器,以提供处理器301对存储器302的访问。
RF电路303可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器301处理;另外,将涉及上行的数据发送给基站。通常,RF电路303包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路303还可以通过无线通信与网络和其他设备通信。该无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
电子设备还包括给各个部件供电的电源304(比如电池),优选的,电源304可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源304还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元305,该输入单元305可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体地实施例中,输入单元305可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器301,并能接收处理器301发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元305还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
该电子设备还可包括显示单元306,该显示单元306可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元306包括多个硬件显示处理单元、视频帧处理模块、显示屏等。其中,多个硬件显示处理单元、视频帧处理模块可集成在处理芯片中。其中,显示屏可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid CrystalDisplay)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器301以确定触摸事件的类型,随后处理器301根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器301会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能,如下:
响应于对游戏场景中目标虚拟相机的后处理请求,确定与目标虚拟相机对应的后处理数据组列表,后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、渲染内容的属性数据、以及渲染器标识;
根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区;
根据渲染器标识确定相应后处理操作使用的目标渲染器插件;
根据目标渲染器插件、渲染内容以及输入帧缓冲区,在输出帧缓冲区中生成相应后处理操作对应的渲染图像。
在一些实施方式中,确定与目标虚拟相机对应的后处理数据组列表,包括:
确定与目标虚拟相机对应的至少一个后处理数据组、以及每个后处理数据组对应的优先级;
根据优先级和所有后处理数据组,生成后处理数据组列表。
在一些实施方式中,根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
遍历后处理数据列表中的属性数据;
在遍历过程中,根据每次遍历操作得到的属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
在一些实施方式中,根据每次遍历操作得到的属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
若当前遍历操作为首次遍历时,获取目标虚拟相机对应的相机帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的属性数据和帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
在一些实施方式中,根据当前遍历操作得到的属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区,包括:
检测已存储的第一字典中,是否存在与当前遍历操作得到的属性数据相匹配的预设属性数据,第一字典中存储有多个预设属性数据、以及每个预设属性数据对应的指针列表,指针列表中的每个指针指示帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的预设属性数据对应的所述指针列表中确定目标指针,并将目标指针对应的第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的帧缓冲区更新帧缓冲区管理池和第一字典。
在一些实施方式中,帧缓冲区管理池还包括至少一个已占用的第二帧缓冲区,图像渲染方法还包括:
响应于对第二帧缓冲区的释放请求,释放第二帧缓冲区;
根据释放的第二帧缓冲区的标识信息,更新已存储的第二字典,第二字典中存储有多个预设标识信息、以及预设标识信息对应的指针,每个指针指示帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的第二帧缓冲区的属性数据,更新第一字典。
在一些实施方式中,根据目标渲染器插件、渲染内容以及输入帧缓冲区,在输出帧缓冲区中生成相应后处理操作对应的渲染图像,包括:
调用目标渲染器插件,将渲染内容和输入帧缓冲区中的存储内容,绘制在输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
在一些实施方式中,在响应于对游戏场景中目标虚拟相机的后处理请求之前,该图像渲染方法还包括:
响应于对游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示目标虚拟相机对应的后处理操作设置界面,后处理操作设置界面上提供多个输入接口,每个输入接口对应一个后处理操作;
响应于输入接口中的用户输入信息,生成目标虚拟相机对应的至少一个后处理数据组。
在一些实施方式中,在响应于对游戏场景中目标虚拟相机的后处理设置请求之前,该图像渲染方法还包括:
运行预设游戏引擎;
通过运行的预设游戏引擎,构建游戏场景,并在图形用户界面中显示游戏场景。
该电子设备可以实现本申请实施例所提供的图像渲染方法任一实施例中的步骤,因此,可以实现本申请实施例所提供的任一图像渲染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令(计算机程序)来完成,或通过指令(计算机程序)控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的图像渲染方法中任一实施例的步骤。例如,该计算机程序可以执行如下步骤:
响应于对游戏场景中目标虚拟相机的后处理请求,确定与目标虚拟相机对应的后处理数据组列表,后处理数据组列表包括至少一个后处理数据组,每个后处理数据组包括相应后处理操作的渲染内容、渲染内容的属性数据、以及渲染器标识;
根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区;
根据渲染器标识确定相应后处理操作使用的目标渲染器插件;
根据目标渲染器插件、渲染内容以及输入帧缓冲区,在输出帧缓冲区中生成相应后处理操作对应的渲染图像。
在一些实施方式中,确定与目标虚拟相机对应的后处理数据组列表,包括:
确定与目标虚拟相机对应的至少一个后处理数据组、以及每个后处理数据组对应的优先级;
根据优先级和所有后处理数据组,生成后处理数据组列表。
在一些实施方式中,根据后处理数据组列表确定各个后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
遍历后处理数据列表中的属性数据;
在遍历过程中,根据每次遍历操作得到的属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
在一些实施方式中,根据每次遍历操作得到的属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
若当前遍历操作为首次遍历时,获取目标虚拟相机对应的相机帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的属性数据和帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
在一些实施方式中,根据当前遍历操作得到的属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区,包括:
检测已存储的第一字典中,是否存在与当前遍历操作得到的属性数据相匹配的预设属性数据,第一字典中存储有多个预设属性数据、以及每个预设属性数据对应的指针列表,指针列表中的每个指针指示帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的预设属性数据对应的指针列表中确定目标指针,并将目标指针对应的第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的帧缓冲区更新帧缓冲区管理池和第一字典。
在一些实施方式中,帧缓冲区管理池还包括至少一个已占用的第二帧缓冲区,所述图像渲染方法还包括:
响应于对第二帧缓冲区的释放请求,释放第二帧缓冲区;
根据释放的第二帧缓冲区的标识信息,更新已存储的第二字典,第二字典中存储有多个预设标识信息、以及预设标识信息对应的指针,每个指针指示帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的第二帧缓冲区的属性数据,更新第一字典。
在一些实施方式中,根据目标渲染器插件、渲染内容以及输入帧缓冲区,在输出帧缓冲区中生成相应后处理操作对应的渲染图像,包括:
调用目标渲染器插件,将渲染内容和输入帧缓冲区中的存储内容,绘制在输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
在一些实施方式中,在响应于对游戏场景中目标虚拟相机的后处理请求之前,该图像渲染方法还包括:
响应于对游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示目标虚拟相机对应的后处理操作设置界面,后处理操作设置界面上提供多个输入接口,每个输入接口对应一个后处理操作;
响应于输入接口中的用户输入信息,生成目标虚拟相机对应的至少一个后处理数据组。
在一些实施方式中,在响应于对游戏场景中目标虚拟相机的后处理设置请求之前,该图像渲染方法还包括:
运行预设游戏引擎;
通过运行的预设游戏引擎,构建游戏场景,并在图形用户界面中显示游戏场景。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一图像渲染方法实施例中的步骤,因此,可以实现本申请实施例所提供的任一图像渲染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种图像渲染方法、装置、电子设备以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种图像渲染方法,其特征在于,所述方法包括:
响应于对游戏场景中目标虚拟相机的后处理请求,确定与所述目标虚拟相机对应的后处理数据组列表,所述后处理数据组列表包括至少一个后处理数据组,每个所述后处理数据组包括相应后处理操作的渲染内容、所述渲染内容的属性数据、以及渲染器标识;
根据所述后处理数据组列表确定各个所述后处理操作对应的输入帧缓冲区和输出帧缓冲区;
根据所述渲染器标识确定相应后处理操作使用的目标渲染器插件;
根据所述目标渲染器插件、所述渲染内容以及所述输入帧缓冲区,在所述输出帧缓冲区中生成相应后处理操作对应的渲染图像。
2.根据权利要求1所述的图像渲染方法,其特征在于,所述确定与所述目标虚拟相机对应的后处理数据组列表,包括:
确定与所述目标虚拟相机对应的至少一个后处理数据组、以及每个所述后处理数据组对应的优先级;
根据所述优先级和所有所述后处理数据组,生成后处理数据组列表。
3.根据权利要求1所述的图像渲染方法,其特征在于,所述根据所述后处理数据组列表确定各个所述后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
遍历所述后处理数据列表中的所述属性数据;
在遍历过程中,根据每次遍历操作得到的所述属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,所述帧缓冲区管理池包括至少一个未占用的第一帧缓冲区。
4.根据权利要求3所述的图像渲染方法,其特征在于,所述根据每次遍历操作得到的所述属性数据、遍历顺序和已存储的帧缓冲区管理池,确定相应后处理操作对应的输入帧缓冲区和输出帧缓冲区,包括:
若当前遍历操作为首次遍历时,获取所述目标虚拟相机对应的相机帧缓冲区,作为当前后处理操作对应的输入帧缓冲区,并根据当前遍历操作得到的所述属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为中间遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并根据当前遍历操作得到的所述属性数据和所述帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区;
若当前遍历操作为末次遍历时,将上一后处理操作对应的输出帧缓冲区作为当前后处理操作的输入帧缓冲区,并将离屏帧缓冲区作为当前后处理操作对应的输出帧缓冲区。
5.根据权利要求4所述的图像渲染方法,其特征在于,所述根据当前遍历操作得到的所述属性数据和已存储的帧缓冲区管理池,确定当前后处理操作对应的输出帧缓冲区,包括:
检测已存储的第一字典中,是否存在与当前遍历操作得到的所述属性数据相匹配的预设属性数据,所述第一字典中存储有多个预设属性数据、以及每个所述预设属性数据对应的指针列表,所述指针列表中的每个指针指示所述帧缓冲区管理池中的一个第一帧缓冲区;
若存在,则从相匹配的所述预设属性数据对应的所述指针列表中确定目标指针,并将所述目标指针对应的所述第一帧缓冲区作为当前后处理操作对应的输出帧缓冲区;
若不存在,则根据所述属性数据创建一个帧缓冲区,作为当前后处理操作对应的输出帧缓冲区,并根据创建的所述帧缓冲区更新所述帧缓冲区管理池和所述第一字典。
6.根据权利要求3所述的图像渲染方法,其特征在于,所述帧缓冲区管理池还包括至少一个已占用的第二帧缓冲区,所述方法还包括:
响应于对所述第二帧缓冲区的释放请求,释放所述第二帧缓冲区;
根据释放的所述第二帧缓冲区的标识信息,更新已存储的第二字典,所述第二字典中存储有多个预设标识信息、以及所述预设标识信息对应的指针,每个指针指示所述帧缓冲区管理池中的一个第二帧缓冲区;
根据释放的所述第二帧缓冲区的属性数据,更新所述第一字典。
7.根据权利要求1所述的图像渲染方法,其特征在于,所述根据所述目标渲染器插件、所述渲染内容以及所述输入帧缓冲区,在所述输出帧缓冲区中生成相应后处理操作对应的渲染图像,包括:
调用所述目标渲染器插件,将所述渲染内容和所述输入帧缓冲区中的存储内容,绘制在所述输出帧缓冲区中,以生成相应后处理操作对应的渲染图像。
8.根据权利要求1所述的图像渲染方法,其特征在于,在响应于对游戏场景中目标虚拟相机的后处理请求之前,还包括:
响应于对所述游戏场景中目标虚拟相机的后处理设置请求,在图形用户界面中显示所述目标虚拟相机对应的后处理操作设置界面,所述后处理操作设置界面上提供多个输入接口,每个所述输入接口对应一个后处理操作;
响应于所述输入接口中的用户输入信息,生成所述目标虚拟相机对应的至少一个后处理数据组。
9.根据权利要求8所述的图像渲染方法,其特征在于,在响应于对所述游戏场景中目标虚拟相机的后处理设置请求之前,还包括:
运行预设游戏引擎;
通过运行的所述预设游戏引擎,构建所述游戏场景,并在图形用户界面中显示所述游戏场景。
10.一种图像渲染装置,其特征在于,包括:
第一确定模块,用于响应于对游戏场景中目标虚拟相机的后处理请求,确定与所述目标虚拟相机对应的后处理数据组列表,所述后处理数据组列表包括至少一个后处理数据组,每个所述后处理数据组包括相应后处理操作的渲染内容、所述渲染内容的属性数据、以及渲染器标识;
第二确定模块,用于根据所述后处理数据组列表确定各个所述后处理操作对应的输入帧缓冲区和输出帧缓冲区;
第三确定模块,用于根据所述渲染器标识确定相应后处理操作使用的目标渲染器插件;
生成模块,用于根据所述目标渲染器插件、所述渲染内容以及所述输入帧缓冲区,在所述输出帧缓冲区中生成相应后处理操作对应的渲染图像。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载以执行权利要求1至9中任一项所述的图像渲染方法。
12.一种电子设备,其特征在于,包括耦合的存储器和处理器,所述存储器存储内有计算机程序,所述处理器用于运行所述存储器内的所述计算机程序,以执行权利要求1至9中任一项所述的图像渲染方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211116428.3A CN115501588A (zh) | 2022-09-14 | 2022-09-14 | 图像渲染方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211116428.3A CN115501588A (zh) | 2022-09-14 | 2022-09-14 | 图像渲染方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115501588A true CN115501588A (zh) | 2022-12-23 |
Family
ID=84504489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211116428.3A Pending CN115501588A (zh) | 2022-09-14 | 2022-09-14 | 图像渲染方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115501588A (zh) |
-
2022
- 2022-09-14 CN CN202211116428.3A patent/CN115501588A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853979B2 (en) | Electronic device and method for displaying screen thereof | |
US10725649B2 (en) | Graphic code display method and apparatus | |
CN107038112B (zh) | 应用界面的调试方法及装置 | |
US20180288739A1 (en) | Electronic device and method of providing notification by electronic device | |
EP3287895B1 (en) | Electronic device for composing graphic data and method thereof | |
EP3712742A1 (en) | Electronic device and method for configuring display thereof | |
US9805488B2 (en) | Method and apparatus for processing image | |
CN112257135B (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
CN105409160B (zh) | 远程控制电子设备的系统及其操作方法 | |
US20160004425A1 (en) | Method of displaying graphic user interface and electronic device implementing same | |
US10235945B2 (en) | Apparatus and method for controlling display in electronic device having processors | |
CN108496198B (zh) | 一种图像处理方法及设备 | |
CN114779987B (zh) | 显示内容的方法、装置、终端及存储介质 | |
US20220058772A1 (en) | Image Processing Method and Device | |
US20190213241A1 (en) | Web page display method and apparatus, mobile terminal, and storage medium | |
EP2983074A1 (en) | Method and apparatus for displaying a screen in electronic devices | |
CN109584341A (zh) | 在画板上绘图的方法及装置 | |
CN112347545A (zh) | 一种建筑模型处理方法、装置、计算机设备及存储介质 | |
CN106598523A (zh) | 图片加载方法、装置及电子设备 | |
CN105847446B (zh) | 一种网络数据的获取方法、装置和系统 | |
CN110471700B (zh) | 图形处理方法、装置、存储介质及电子设备 | |
CN113038273B (zh) | 视频帧处理方法、装置、存储介质及电子设备 | |
CN115501588A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
CN114510417A (zh) | 一种图像渲染效果测试方法、装置、电子设备和存储介质 | |
CN112148409A (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 |