CN115861513B - 数据渲染方法、装置、计算机及可读存储介质 - Google Patents
数据渲染方法、装置、计算机及可读存储介质 Download PDFInfo
- Publication number
- CN115861513B CN115861513B CN202310111991.XA CN202310111991A CN115861513B CN 115861513 B CN115861513 B CN 115861513B CN 202310111991 A CN202310111991 A CN 202310111991A CN 115861513 B CN115861513 B CN 115861513B
- Authority
- CN
- China
- Prior art keywords
- component
- rendering
- interaction
- data
- root
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种数据渲染方法、装置、计算机及可读存储介质,该方法包括:在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;第二频率数据的更新频率大于第一频率数据的更新频率;第二频率数据是指在每一个渲染帧中均进行更新的数据;在渲染线程中,将第一频率数据及第二频率数据,组合生成第一渲染资源,将第一渲染资源传输至图形处理器;通过图形处理器,将第一渲染资源转换成目标显示界面所对应的第二渲染资源,在目标显示界面中渲染第二渲染资源。采用本申请,可以提高数据渲染效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据渲染方法、装置、计算机及可读存储介质。
背景技术
目前,在对游戏进行渲染时,一般是通过在前端处理线程中全量遍历组件树,计算组件的位置和尺寸等,再对组件树进行逻辑更新和重新绘制,进行渲染数据和资源的准备,进而在渲染线程中基于渲染数据和资源进行渲染。通过该方式,需要在每一帧中,对所有的组件进行位置计算、逻辑更新及重新绘制,计算量巨大,导致数据渲染所需处理的数据量较大,进而使得数据渲染效率较低。
发明内容
本申请实施例提供了一种数据渲染方法、装置、计算机及可读存储介质,可以提高数据渲染效率。
本申请实施例一方面提供了一种数据渲染方法,该方法包括:
在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据;
在渲染线程中,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;
通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源。
本申请实施例一方面提供了一种数据渲染装置,该装置包括:
数据读取模块,用于在前端处理线程中,读取第一频率数据;
数据整合模块,用于整合交互组件所对应的组件交互信息,得到第二频率数据;第二频率数据的更新频率大于第一频率数据的更新频率;第二频率数据是指在每一个渲染帧中均进行更新的数据;
资源生成模块,用于在渲染线程中,将第一频率数据及第二频率数据,组合生成第一渲染资源;
资源传输模块,用于将第一渲染资源传输至图形处理器;
资源转换模块,用于通过图形处理器,将第一渲染资源转换成目标显示界面所对应的第二渲染资源;
资源渲染模块,用于在目标显示界面中渲染第二渲染资源。
其中,第一频率数据包括容器组件索引、根组件索引、组件索引树及渲染指令;交互组件包括交互根容器组件及交互根组件;
该装置还包括:
组件获取模块,用于获取目标应用中的交互根容器组件及交互根组件;
索引分配模块,用于为交互根容器组件分配容器组件索引,为交互根组件分配根组件索引;
索引构建模块,用于基于交互根容器组件及交互根组件之间的组件架构,将交互根容器组件的容器组件索引及交互根组件的根组件索引,构建为组件索引树;
指令生成模块,用于根据组件索引树生成渲染指令。
其中,该索引分配模块,包括:
第一检测单元,用于获取交互根容器组件所对应的容器索引缓存及容器索引缓存的第一首位索引,基于第一首位索引确定容器索引缓存中的容器空闲位置;
第一分配单元,用于基于容器空闲位置为交互根容器组件分配容器组件索引;
第二检测单元,用于获取交互根组件所对应的组件索引缓存及组件索引缓存的第二首位索引,基于第二首位索引确定组件索引缓存中的组件空闲位置;
第二分配单元,用于基于组件空闲位置为交互根组件分配根组件索引。
其中,该装置还包括:
第一更新模块,用于基于容器空闲位置,从容器索引缓存中查找容器更新位置,将容器更新位置赋值给第一首位索引;
第二更新模块,用于基于组件空闲位置,从组件索引缓存中查找组件更新位置,将组件更新位置赋值给第二首位索引。
其中,交互根组件的数量为N,交互根容器组件包括N个交互根组件;N为正整数;
该索引构建模块,包括:
虚拟关联单元,用于为交互根容器组件关联中间虚拟组件,将N个交互根组件通过中间虚拟组件关联至交互根容器组件,生成组件架构树;每个交互根组件关联一个中间虚拟组件;
索引关联单元,用于将交互根容器组件的容器组件索引关联至组件架构树中的交互根容器组件,将N个交互根组件分别对应的根组件索引分别关联至组件架构树中所对应的交互根组件,得到组件索引树;
该装置还包括:
数据删除模块,用于当检测到针对第一交互根组件的删除操作时,删除组件索引树中的第一交互根组件,删除与第一交互根组件所关联的第一中间虚拟组件相关的数据;N个交互根组件包括第一交互根组件。
其中,该指令生成模块,包括:
指令获取单元,用于获取初始渲染指令;
属性获取单元,用于根据组件索引树采集交互组件的组件渲染数据,获取初始渲染指令的视图属性信息;
指令更新单元,用于若视图属性信息为公共属性信息,则基于交互组件的组件渲染数据更新初始渲染指令,生成渲染指令;渲染指令不包括视图属性信息;
该指令更新单元,还用于若视图属性信息为专属属性信息,则基于交互组件的组件渲染数据及视图属性信息更新初始渲染指令,生成渲染指令;渲染指令包括视图属性信息。
其中,该数据整合模块,包括:
数组构建单元,用于构建初始交互数据数组,从第一频率数据中获取组件索引树;组件索引树用于管理交互组件的组件索引;
位置确定单元,用于从组件索引树中获取交互组件的组件索引,基于交互组件的组件索引确定交互组件在初始交互数据数组中的组件数据位置;
信息存储单元,用于将交互组件的组件交互信息添加至初始交互数据数组中的组件数据位置处,得到交互数据数组;
该装置还包括:
数据获取模块,用于在渲染线程中,基于交互组件的组件索引,读取交互数据数组。
其中,交互组件包括交互根容器组件及交互根组件;初始交互数据数组是指交互根容器组件所对应的数组;该装置还包括:
信息融合模块,用于获取交互根组件的第一交互信息,以及交互根组件所包括的交互叶子组件的第二交互信息,将第二交互信息与第一交互信息进行整合处理,得到交互根组件的组件交互信息。
其中,该数据整合模块,包括:
数据缓存单元,用于针对第i个渲染帧,整合交互组件所对应的组件交互信息i,得到第二频率数据i,将第二频率数据i添加至数据缓存数组中;i为正整数;
间隔确定单元,用于基于数据缓存数组中所包括的第二频率数据,确定线程帧间隔;线程帧间隔用于表示前端处理线程所处理的第二频率数据的渲染帧,与渲染线程所处理的第二频率数据的渲染帧之间的帧数;
该数据缓存单元,还用于若线程帧间隔小于帧间隔阈值,则针对第(i+1)个渲染帧,整合交互组件所对应的组件交互信息(i+1),得到第二频率数据(i+1),将第二频率数据(i+1)添加至数据缓存数组中;
线程等待单元,用于若线程帧间隔大于或等于帧间隔阈值,则暂停前端处理线程,在线程帧间隔小于帧间隔阈值时,重启前端处理线程。
其中,该间隔确定单元,包括:
第一确定子单元,用于获取数据缓存数组中所包括的第二频率数据的第一数据数量,将第一数据数量确定为线程帧间隔;
该装置还包括:
渲染删除模块,用于基于渲染线程,删除第一渲染资源在数据缓存数组中所对应的第二频率数据。
其中,该间隔确定单元,包括:
第二确定子单元,用于获取数据缓存数组中,未携带渲染标识的第二频率数据的第二数据数量,将第二数据数量确定为线程帧间隔;
该装置还包括:
渲染标记模块,用于基于渲染线程,为第一渲染资源在数据缓存数组中所对应的第二频率数据添加渲染标识;
数组管理模块,用于若数据缓存数组中所包括的第二频率数据的总数据数量,大于或等于数组管理阈值,则删除数据缓存数组中携带渲染标识的第二频率数据。
其中,第一频率数据包括M个渲染指令;M为正整数;
该资源生成模块,包括:
指令整合单元,用于查找M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流;
着色生成单元,用于确定数据流所对应的交互根容器组件,基于交互根容器组件所包括的交互根组件在第二频率数据中的组件交互信息,生成数据流对应的着色资源;
资源生成单元,用于对数据流、数据流所对应的视图属性信息,以及数据流所对应的着色资源进行整合,生成第一渲染资源。
其中,该指令整合单元,包括:
指令排序子单元,用于基于M个渲染指令分别对应的渲染层级,对M个渲染指令进行排序,得到渲染指令队列;渲染指令队列包括d个指令子队列,每个指令子队列中所包括的渲染指令的渲染层级相同;d为小于或等于M的正整数;
队列管理子单元,用于查找M个渲染指令分别关联的视图属性信息,对d个指令子队列分别进行整合处理,得到数据流;数据流中所包括的渲染指令对应同一个渲染层级。
其中,交互组件包括交互根组件;第二渲染资源包括实际位置信息;
该资源转换模块,包括:
信息获取单元,用于通过图形处理器,从着色资源中获取交互根组件所对应的组件交互信息;
顶点确定单元,用于基于数据流及数据流所对应的视图属性信息,确定交互根组件所指示的应用对象的顶点基础位置信息;
信息映射单元,用于基于视图属性信息将交互根组件所对应的组件交互信息映射至目标显示界面,生成交互根组件所指示的应用对象的对象位置信息;
位置确定单元,用于基于视图属性信息、顶点基础位置信息及对象位置信息,确定应用对象的实际位置信息。
其中,该位置确定单元,包括:
位置调整子单元,用于基于视图属性信息及对象位置信息,对顶点基础位置信息中的第一维度位置信息进行位置调整,得到第一维度调整信息;
深度构建子单元,用于获取目标显示界面的第一深度边界及第二深度边界,获取深度构建位置;
信息平移子单元,用于基于深度构建位置对组件交互信息进行平移处理,得到应用对象的初始深度信息;
深度调整子单元,用于基于初始深度信息、第一深度边界及第二深度边界,对顶点基础位置信息中的深度位置信息进行位置调整,得到第二维度调整信息;
位置确定子单元,用于将第一维度调整信息及第二维度调整信息,确定为应用对象的实际位置信息。
其中,第二渲染资源包括h个渲染对象分别对应的渲染指令,任意一个渲染对象为交互对象或非交互对象,一个交互对象对应一个交互组件;h为正整数;
该资源渲染模块,包括:
参数更新单元,用于若第k个渲染对象为非交互对象,则将深度状态更新为深度关闭状态,将深度检测参数更新为全检测;
第一渲染单元,用于基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象;k为小于或等于h的正整数;
该参数更新单元,还用于若第k个渲染对象为交互对象,则将深度状态更新为深度启动状态,将深度检测参数更新为临近检测,基于深度状态读取深度缓存;
第二渲染单元,用于基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象,将第k个渲染对象所对应的渲染层级添加至深度缓存。
其中,该第一渲染单元,具体用于:
若第一个渲染对象至第(k-1)个渲染对象中存在交互对象,且第(k+1)个渲染对象至第h个渲染对象中存在交互对象,则读取深度缓存,基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象;
若第一个渲染对象至第(k-1)个渲染对象中不存在交互对象,或者第(k+1)个渲染对象至第h个渲染对象中不存在交互对象,则基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象。
其中,第二渲染资源包括h个渲染对象分别对应的渲染指令;该资源渲染模块,包括:
指令筛选单元,用于获取h个渲染指令分别对应的透明度及透明截止阈值,获取h个渲染指令中透明度不满足透明截止阈值的待渲染指令;
第三渲染单元,用于基于待渲染指令,在目标显示界面中渲染待渲染指令所对应的渲染对象。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本申请实施例一方面中的数据渲染方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例一方面中的数据渲染方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例一方面中的各种可选方式中提供的方法。换句话说,该计算机指令被处理器执行时实现本申请实施例一方面中的各种可选方式中提供的方法。
实施本申请实施例,将具有如下有益效果:
在本申请实施例中,在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据。通过该方式,对应用中所产生的数据进行高低频解耦,第一频率数据(即低频数据)可以进行存储,在渲染时只需要直接读取,第二频率数据(即高频数据)由于每一帧都会发生变化,因此,在渲染时进行数据(即组件交互信息)整合,使得两者的处理过程解耦,减少数据渲染所需处理的数据量,进而提高数据渲染效率。进一步,在渲染线程中,基于所述第一频率数据获取所述第二频率数据,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源。也就是说,对获取到的数据是在图形处理器中进行处理的,借助于图形处理器的特性,可以实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力,其中,主线程可以认为是由中央处理器(central processing unit,CPU)所实现的,通过图形处理器分担CPU的工作,可以提高整个应用的运行效率及性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据渲染的网络交互架构图;
图2是本申请实施例提供的一种数据渲染场景示意图;
图3是本申请实施例提供的一种应用组件架构示意图;
图4是本申请实施例提供的一种可能的游戏界面示意图;
图5是本申请实施例提供的一种数据渲染的方法流程图;
图6是本申请实施例提供的一种数组示意图;
图7是本申请实施例提供的一种资源生成示意图;
图8是本申请实施例提供的一种位置调整示意图;
图9是本申请实施例提供的一种深度检测配置场景示意图;
图10是本申请实施例提供的一种数据渲染的方法的具体流程示意图;
图11是本申请实施例提供的一种索引分配场景示意图;
图12a是指本申请实施例提供的一种组件架构示意图;
图12b是指本申请实施例提供的另一种组件架构示意图;
图13是本申请实施例提供的一种第一频率数据示意图;
图14是本申请实施例提供的一种数据转换示意图;
图15是本申请实施例提供的一种数据渲染装置示意图;
图16是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
其中,若在本申请中需要收集对象(如用户等)数据,则在收集前、收集中,显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集XXXX数据,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。而且,对于获取到的用户数据,会在合理合法的场景或用途等上进行使用。可选的,在一些需要使用用户数据但未得到用户授权的场景中,还可以向用户请求授权,在授权通过时,再使用用户数据。
在本申请实施例中,请参见图1,图1是本申请实施例提供的一种数据渲染的网络交互架构图,如图1所示,任意两个计算机设备之间可以直接进行数据交互,也可以通过服务器101进行数据交互等,该计算机设备的数量为一个或多个,多个是指至少两个,如图1中所示,计算机设备102a、计算机设备102b或计算机设备102c等,其中,任意一个计算机设备是指可以运行应用程序的设备,该应用程序可以是游戏或地图类应用等,或者可以说是包括前端渲染及后台处理的应用程序,且该应用程序中存在在应用程序中显示的实体及交互组件等。其中,任意一个计算机设备可以通过本申请中的数据渲染方法,在前端处理线程中采集数据,在渲染线程中对数据进行组合,得到可以由图形处理器进行处理的数据,再通过图形处理器,对渲染线程中得到的数据进行转换渲染,从而实现对应用程序的渲染。
具体的,请参见图2,图2是本申请实施例提供的一种数据渲染场景示意图。如图2所示,计算机设备可以在前端处理线程2a中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据,其中,第二频率数据的更新频率大于第一频率数据的更新频率,第二频率数据是指在每一个渲染帧中均进行更新的数据,即可以认为是逐帧更新的数据,第一频率数据是指在发生变化时才需要进行更新的数据,即可以认为是无需逐帧更新的数据,因此,在进行数据渲染时,可以直接读取第一频率数据,而第二频率数据需要采集整合,进而可以获取到目标应用中交互组件的所有数据。通过对第一频率数据与第二频率数据进行解耦处理,可以极大程度地缓存交互组件的相关数据,不需要每一帧(即每一个渲染帧)更新第一频率数据,节省了大量的计算,从而提高数据渲染效率。进一步,可以在渲染线程2b中,基于第一频率数据获取第二频率数据,也就是,可以基于存储的第一频率数据,从前端处理线程2a所整理的数据中读取第二频率数据,将第一频率数据与第二频率数据,组合生成第一渲染资源,将第一渲染资源传输至图形处理器(graphics processingunit,GPU)2c。通过图形处理器2c,将第一渲染资源转换成目标显示界面所对应的第二渲染资源,在目标显示界面中渲染第二渲染资源。通过图形处理器对获取到的数据进行处理,借助于图形处理器的特性,实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力,在一定程度上提高了渲染性能。
其中,交互组件可以包括交互根容器组件及交互根组件等,还可以包括画布组件等,具体可以参见图3,图3是本申请实施例提供的一种应用组件架构示意图。如图3所示,本申请可以应用于任意一个目标应用中,该目标应用存在交互组件,该目标应用可以是游戏或地图类应用等,或者可以说是包括前端渲染及后台处理的应用程序。其中,该交互组件(Swidget)是指目标应用中所包括的各种类型的组件的一种统称,是用户界面(UserInterface,UI)的最小组织单元,具备逻辑、交互和显示等数据,可以用于描述一个UI的几何、交互和渲染信息等,多个SWidget可以形成树形结构,构成整个UI体系。其中,一个目标应用可以包括一个或至少两个画布组件(SWindow),其中,画布组件是图形架构(Slate)中的一个交互组件,用于组织属于该画布组件的各个交互组件进行显示,也就是用于描述该目标应用中的应用窗口,可以认为是一种特殊的失效根组件;其中,图形架构(Slate)是指图形用户界面(GraphicalUser Interface,GUI)架构,负责目标应用中的用户界面相关的交互处理、逻辑更新和渲染显示等工作;其中,用户界面是指用于为用户提供展示和操作的界面。
其中,一个画布组件可以包括f个交互根容器组件(MapUIRootContainer),f为正整数,交互根容器组件是一种特殊的失效根组件(SInvalidationRootWidget),具备失效根组件的特性,可以负责所包括的交互组件的缓存管理和失效操作等,如交互根组件及交互叶子组件等,还可以用于提供对第二频率数据的处理工作。其中,一个交互根容器组件可以包括N个交互根组件,N为正整数;一个交互根组件可以包括一个或至少两个交互叶子组件。该交互根组件(MapUIRoot)是指针对一个交互对象(MapUI)的组件树的头部节点,属于交互根容器组件;MapUI是一种特殊的UI,用于展示和操作应用对象(MapEntity),用于跟随应用对象,对应用对象进行展示和操作;非交互对象是指除交互对象之外的对象;应用对象是指一种地图显示对象,是指具有位置信息的客观实体,如目标应用为地图类应用,该应用对象可以包括城市、道路、交通工具或建筑等,如目标应用为游戏,该应用对象也可以称为游戏对象,可以包括城市、山川、玩家角色、非玩家角色(non-player character,NPC)或建筑等。举例来说,参见图4,图4是本申请实施例提供的一种可能的游戏界面示意图,如图4所示,该游戏界面401中存在应用对象4a、应用对象4b、应用对象4c、应用对象4d、…及应用对象4f等,每个应用对象存在一个跟随的MapUI,MapUI用于对跟随的应用对象进行指示说明,还可以用于提供一些针对所跟随的应用对象的操作。其中,交互叶子组件(MapUILeaf)是指针对一个交互对象的组件树中,除了交互根组件之外的其他交互组件。举例来说,如图3中,交互组件包括画布组件、交互根容器组件、交互根组件及交互叶子组件等,以交互根容器组件301为例,该交互根容器组件301包括N个交互根组件,如交互根组件3021、交互根组件3022及交互根组件3023等;每个交互根组件包括一个或至少两个交互叶子组件,如交互根组件3023包括交互叶子组件3031等。
其中,图3可以用于表示目标应用中所包括的各个交互组件之间的组件架构。
可以理解的是,本申请实施例中的计算机设备包括但不限于终端设备或服务器。换句话说,计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的系统。其中,以上所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/VirtualReality,AR/VR)设备、头盔显示器、智能电视、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobile internet device,MID),或者火车、轮船、飞行等场景下的终端设备等。如图1中所示,终端设备可以是一种笔记本电脑(如计算机设备102b所示)、手机(如计算机设备102c所示)或车载设备(如计算机设备102a所示)等,图1仅例举出部分的设备,可选的,该计算机设备102a是指位于交通工具103中的设备,该计算机设备102a可以用于运行目标应用,与其他计算机设备之间进行数据交互。其中,以上所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、车路协同、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可选的,本申请实施例中所涉及的数据可以存储在计算机设备中,或者可以基于云存储技术或区块链网络对该数据进行存储,在此不做限制。
进一步地,请参见图5,图5是本申请实施例提供的一种数据渲染的方法流程图。如图5所示,该数据渲染过程包括如下步骤:
步骤S501,在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据。
在本申请实施例中,本申请中针对数据渲染的过程可以认为分为三部分,分别为前端处理线程、渲染线程及图形处理器处理等,具体的,计算机设备可以在前端处理线程中,读取缓存的第一频率数据,该第一频率数据可以包括容器组件索引、根组件索引、组件索引树及渲染指令等,其中,容器组件索引是指交互根容器组件的索引,根组件索引是指交互根组件,组件索引树是指由容器组件索引及根组件索引等组成的树形结构,渲染指令(FSlateRenderBatch)是指由图形架构所产出的用于对交互组件进行渲染的中间结构,用于维护用于进行数据渲染的数据。其中,可以认为第一频率数据是指无需逐帧更新的数据,可以认为包括缓存数据(如容器组件索引、根组件索引及组件索引树等)和渲染数据(如渲染指令等),该缓存数据可以认为是元数据(MapUIMetaData),是指用于辅助第二频率数据的元数据信息等。第一频率数据可以认为是已经缓存的数据,在进行数据渲染时,计算机设备可以直接读取第一频率数据。也就是说,第一频率数据不会逐帧更新,也就是不会在每一个渲染帧进行更新,如目标应用中的交互组件的组件索引等。
其中,前端处理线程用于处理目标应用的逻辑,例如,目标应用中的应用对象的移动或旋转等变化、网络收发及针对交互组件的数据采集等。渲染线程用于获取前端处理线程中所采集的数据(如第一频率数据及第二频率数据等),并将获取到的数据转换成可以由图形处理器进行处理的数据,即第一渲染资源。图形处理器用于将第一渲染资源映射到目标显示界面中,得到第二渲染资源,并在目标显示界面中对第二渲染资源进行渲染。
其中,第二频率数据可以包括交互数据数组。其中,第二频率数据是指在每一个渲染帧中发生变化的数据,如目标应用中的各个应用对象等的位置、尺寸及渲染层级等,第二频率数据的更新频率大于第一频率数据的更新频率。具体的,计算机设备可以构建初始交互数据数组,从第一频率数据中获取组件索引树;组件索引树用于管理交互组件的组件索引,包括交互根容器组件的容器组件索引及交互根组件的根组件索引等;从组件索引树中获取交互组件的组件索引,基于交互组件的组件索引确定交互组件在初始交互数据数组中的组件数据位置;将交互组件的组件交互信息添加至初始交互数据数组中的组件数据位置处,得到交互数据数组。具体的,该交互组件包括交互根容器组件及交互根组件等,计算机设备可以构建初始交互数据数组,从第一频率数据中获取组件索引树;从组件索引树中获取交互根容器组件的容器组件索引,将该容器组件索引关联至该初始交互数据数组;从组件索引树中获取交互根组件的根组件索引,基于根组件索引确定交互根组件在初始交互数据数组中的组件数据位置;将交互根组件的组件交互信息添加至初始交互数据数组中的组件数据位置处,得到交互数据数组。也就是说,交互数据数组用于管理目标应用中的交互组件的组件交互信息。
也就是说,交互组件包括交互根容器组件及交互根组件;初始交互数据数组是指交互根容器组件所对应的数组,用于管理属于该交互根容器组件的交互根组件的组件交互信息。可选的,在获取交互根组件的组件交互信息时,可以获取交互根组件的第一交互信息,以及交互根组件所包括的交互叶子组件的第二交互信息,将第二交互信息与第一交互信息进行整合处理,得到交互根组件的组件交互信息。其中,该第一交互信息可以包括但不限于交互根组件所对应的位置(position)、尺寸(size)及渲染层级(layer)等;第二交互信息可以包括但不限于交互叶子组件所对应的位置、尺寸及渲染层级等。当然可选的,由于交互根组件对应于一个MapUI,用于描述该MapUI,该交互根组件可能会与该交互根组件所包括的交互叶子组件共享数据,此时,可以直接将交互根组件的第一交互信息,确定为该交互根组件的组件交互信息。也就是说,任意一个交互组件的组件交互信息可以包括但不限于该交互组件的位置、尺寸及渲染层级等,即包括该交互组件所有需要逐帧更新的数据。
其中,以上是以一个交互根容器组件及该交互根容器组件所包括的交互根组件为例,在存在多个交互根容器组件,每个交互根容器组件包括多个交互根组件时,可以参见上述交互数据数组的生成方式。例如,一个画布组件可以包括f个交互根容器组件,计算机设备可以从组件索引树中获取f个交互根容器组件分别对应的容器组件索引,基于f个交互根容器组件分别对应的容器组件索引,构建f个交互根容器组件分别对应的初始交互数据数组。针对第a个交互根容器组件,获取第a个交互根容器组件所包括的N个交互根组件,从组件索引树中获取N个交互根组件分别对应的根组件索引,基于N个交互根组件分别对应的根组件索引,确定N个交互根组件分别在第a个交互根容器组件所对应的初始交互数据数组中的组件数据位置,将N个交互根组件的组件交互信息,分别添加至该N个交互根组件在第a个交互根容器组件所对应的初始交互数据数组中的组件数据位置处,得到第a个交互根容器组件所对应的交互数据数组,a为小于或等于f的正整数。同理,可以得到f个交互根容器组件分别对应的交互数据数组。
举例来说,参见图6,图6是本申请实施例提供的一种数组示意图。如图6所示,实线用于表示各个交互组件之间的包含关系,或者说是总体局部关系;虚线用于表示交互组件与其对应的高频数据(即组件交互信息)的对应关系。以一个交互根容器组件601为例,该交互根容器组件601包括N个交互根组件,如交互根组件6021、交互根组件6022及交互根组件6023等,每个交互根组件包括一个或至少两个交互叶子组件,如交互根组件6023包括交互叶子组件6031等。通过以上交互数据数组的生成过程,可以生成该交互根容器组件601所对应的交互数据数组604,该交互数据数组604包括该交互根容器组件601所包括的各个交互根组件的组件交互信息,如交互根组件6021所对应的组件交互信息6051、交互根组件6022所对应的组件交互信息6052及交互根组件6023所对应的组件交互信息6053等。其中,可以将上述交互数据数组记作MapUIDataArray,将该交互数据数组中所包括的组件交互信息记作MapUIData。可选的,以组件交互信息6053为例,计算机设备可以获取交互根组件6023的第一交互信息,获取交互根组件6023所包括的交互叶子组件(如交互叶子组件6031等)的第二交互信息,将该第一交互信息与第二交互信息进行整合处理,得到交互根组件6023所对应的组件交互信息。
可选的,在第一频率数据中包括组件索引树时,计算机设备可以直接从计算机设备中获取交互根容器组件的容器组件索引,以及交互根组件的根组件索引。或者,在第一频率数据中包括组件索引树,或者不包括组件索引树时,计算机设备可以获取容器索引缓存,基于目标应用的组件关系架构,查找交互根容器组件的容器组件索引;基于目标应用的组件关系架构,从该容器组件索引所指示的组件索引缓存中,查找交互根容器组件所包括的交互根组件的根组件索引。
总的来说,计算机设备可以在前端处理线程中,如游戏中的游戏线程(GameThread)或地图类应用中的前端数据管理线程等,采集目标应用中的MapUI所关联的交互根组件的组件交互信息,得到第二频率数据。或者,计算机设备可以在前端处理线程中,采集发生变化的MapUI所关联的交互根组件的组件交互信息,根据采集到的交互根组件的组件交互信息,得到第二频率数据;而未发生变化的MapUI所关联的交互根组件的组件交互信息作为第一频率数据进行缓存,也就是说,计算机设备在前端处理线程中,读取第一频率数据,该第一频率数据还可以包括未发生变化的MapUI所关联的交互根组件的组件交互信息等。
可选的,计算机设备可以将第二频率数据添加至数据缓存数组中,也就是说,可以将交互数据数组(MapUIDataArray)添加至数据缓存数组中。
步骤S502,在渲染线程中,将第一频率数据及第二频率数据,组合生成第一渲染资源,将第一渲染资源传输至图形处理器。
在本申请实施例中,计算机设备可以在渲染线程中,基于第一频率数据获取第二频率数据,具体的,可以基于第一频率数据中的容器组件索引及根组件索引等,将第一频率数据与第二频率数据之间关联起来,也就是确定目标应用中的各个交互组件所对应的组件交互信息。例如,该第二频率数据包括交互数据数组,计算机设备可以在渲染线程中,基于第一频率数据获取第二频率数据,具体可以是基于交互组件的组件索引,读取该交互数据数组。
可选的,第一频率数据可以包括M个渲染指令;M为正整数。其中,每个渲染指令是指用于对该渲染指令所指示的交互组件进行渲染的数据,也就是根据交互组件的组件图元信息(DrawElement)封装得到的,该组件图元信息是指由对应的交互组件的静态数据抽象得到的,交互组件的静态数据可以包括该交互组件所关联的顶点信息,即用于表示该交互组件所关联的顶点,该顶点信息可以包括但不限于初始顶点位置(InitPosition)及顶点索引等。计算机设备可以查找M个渲染指令分别关联的视图属性信息(uniforms),对具有相同视图属性信息的渲染指令进行整合处理,得到数据流(Streams)。也就是说,一个渲染指令可以用于指示一个顶点,或者多个顶点,即以顶点为单位。其中,可以参见图7,图7是本申请实施例提供的一种资源生成示意图。如图7所示,该视图属性信息是指用于对MapUI进行渲染等的数据,可以认为是用于对MapUI进行渲染的参数,也就是用于将交互组件的相关数据映射至目标显示界面的参数,包括但不限于视口视图矩阵(ViewProjection)、视口视图矩阵的逆(ViewProjectionInverse)、世界摄像机视图矩阵(GameCameraViewProjection)及窗口对比信息(MapUIViewRadio)等。
进一步,可以确定数据流所对应的交互根容器组件,也就是可以获取该数据流所对应的交互组件所属的交互根容器组件,基于交互根容器组件所包括的交互根组件在第二频率数据中的组件交互信息,生成数据流对应的着色资源(Shader Resources)。对数据流、数据流所对应的视图属性信息,以及数据流所对应的着色资源进行整合,生成第一渲染资源。其中,该第一渲染资源所包括的参数可以参见表1所示:
表1
参数名称 | 参数说明 |
视口视图矩阵 | 用户界面(UI)视口的视图(ViewProjection,VP)矩阵,用于将目标应用中的世界坐标转换至目标显示界面所对应的显示坐标系上 |
视口视图矩阵的逆 | UI视口的VP矩阵的逆 |
世界摄像机视图矩阵 | 世界摄像机的VP矩阵,用于将目标应用中的相机所采集的画面映射至目标显示界面,包括但不限于相机投影模式(如透视模式及正交模式等) |
窗口对比信息 | 目标应用的世界渲染占用的视口范围和其所属的画布组件的范围对比 |
初始顶点位置 | 用于表示对应的顶点在目标应用中的位置,即,用于数据渲染的顶点相对于目标应用的画布(也就是画布组件所对应的界面)的位置 |
根组件索引 | 对应于交互根组件的索引,可以用于表示所对应的组件交互信息在着色资源中的序号 |
顶点索引(Vertex Index) | 顶点序号,用于表示顶点 |
组件交互信息 | 用于表示对应的交互组件的相关数据 |
如表1所示,表1用于描述第一渲染资源所包括的各个参数,即视图属性信息、数据流及着色资源等所包括的参数。
其中,在查找M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流时,可以查找M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流,也就是每个数据流中所包括的渲染指令的视图属性信息相同,而渲染层级可能不同,通过这一方式,可以无需考虑各个渲染指令所指示的渲染层级,即无需维护MapUI的渲染层级,由于MapUI需要高频地调整渲染层级,以实现位于相近位置处的各个MapUI之间的前后显示效果,可以直接基于视图属性信息对渲染指令进行合并处理,减少对渲染指令进行处理所需的时间,同时满足MapUI高频调整渲染层级的需求,提高第一频率数据的缓存寿命。可选的,也可以基于M个渲染指令分别对应的渲染层级(layer),对M个渲染指令进行排序,得到渲染指令队列;渲染指令队列包括d个指令子队列,每个指令子队列中所包括的渲染指令的渲染层级相同;d为小于或等于M的正整数;查找M个渲染指令分别关联的视图属性信息,对d个指令子队列分别进行整合处理,得到数据流;每个数据流中所包括的渲染指令对应同一个渲染层级。其中,每个交互根容器组件所包括的交互根组件的类别相同,一般情况下,同类别的交互根组件所产出的渲染指令的视图属性信息相同。
也就是说,第一渲染资源中存在一个或多个“视图属性信息—数据流—着色资源”所组成的参数集合,多个是指至少两个,其中,每个参数集合中的数据流、视图属性信息及着色资源是相关联的,可以共同作用,对该参数集合所对应的顶点进行渲染。其中,本申请中所提及的交互组件可以认为是一种统称,也就是说,本申请中的画布组件、交互根容器组件、交互根组件或交互叶子组件等均可以认为是一种交互组件,各个交互组件之间的关系是基于该各个交互组件的组件架构所确定的,例如,作为交互根容器组件的交互组件包括作为交互根组件的交互组件,作为交互根组件的交互组件包括作为交互叶子组件的交互组件等。
步骤S503,通过图形处理器,将第一渲染资源转换成目标显示界面所对应的第二渲染资源,在目标显示界面中渲染第二渲染资源。
在本申请实施例中,交互组件包括交互根组件;第二渲染资源可以包括但不限于实际位置信息。具体的,计算机设备可以通过图形处理器,从着色资源中获取交互根组件所对应的组件交互信息,可以记作公式①:
如公式①所示,float4用于表示数据类型,当然该数据类型可以基于组件交互信息进行变化,可以基于根组件索引MapUIID,从着色资源中获取交互根组件所对应的组件交互信息,此处,refData用于表示从着色资源中获取到的组件交互信息。
进一步,可以基于数据流及数据流所对应的视图属性信息,确定交互根组件所指示的应用对象的顶点基础位置信息,该顶点基础位置信息是指将交互根组件所指示的应用对象(MapEntity)所包括的顶点在目标显示界面中所对应的初始位置,该顶点基础位置信息的生成过程可以参见公式②所示:
如公式②所示,basePos是指顶点基础位置信息,mul是指乘法计算,InitPosition是指初始顶点位置,可以获取视图属性信息中的视口视图矩阵,基于该视口视图矩阵对初始顶点位置进行转换处理,得到顶点基础位置信息。通过公式②,可以得到任意一个目标应用中任意一个顶点的顶点基础位置信息,即,基于一个顶点所在的参数集合中的视图属性信息,对该顶点的初始顶点位置进行转换处理,得到该顶点的顶点基础位置信息。也就是说,可以根据一个参数集合中的视图属性信息及数据流,确定该参数集合所对应的各个顶点的顶点基础位置信息。
进一步,可以基于视图属性信息将交互根组件所对应的组件交互信息映射至目标显示界面,生成交互根组件所指示的应用对象的对象位置信息,其中,该对象位置信息可以参见公式③所示:
如公式③所示,refPos是指对象位置信息,用于表示交互根组件所指示的应用对象的位置,即在目标显示界面所对应的显示坐标系上的位置,可选的,可以基于视图属性信息中的世界摄像机视图矩阵,将组件交互信息映射至目标显示界面,得到交互根组件所指示的应用对象的对象位置信息。其中,refData.xyz用于表示应用对象在目标应用的画布中的位置,也就是画布坐标系中的位置,可选的,若该目标应用为二维空间,则该应用对象在目标应用的画布中的位置可以记作refData.xy,若该目标应用为四维空间,则该应用对象在目标应用的画布中的位置(即世界坐标)可以记作refData.xyzt等,在此不再进行赘述。
进一步,可以基于视图属性信息、顶点基础位置信息及对象位置信息,确定应用对象的实际位置信息。具体的,可以基于视图属性信息及对象位置信息,对顶点基础位置信息中的第一维度位置信息进行位置调整,得到第一维度调整信息,该第一维度调整信息是指将顶点由画布映射到目标显示界面上的位置信息,同理,可以得到任意一个顶点的第一维度调整信息。例如参见图8,图8是本申请实施例提供的一种位置调整示意图,如图8所示,可以基于视图属性信息及对象位置信息,对顶点801的顶点基础位置信息(即在画布坐标系802中的位置)中的第一维度位置信息进行位置调整,得到第一维度调整信息,该第一维度调整信息是指将顶点801由画布映射到目标显示界面803上的位置信息804。其中,该第一维度调整信息的一种可选的生成过程可以参见公式④所示:
如公式④所示,.xy用于表示对应的位置信息在第一维度下的位置,.z用于表示对应的位置信息在第二维度下的位置,.w包括对应的位置信息中的层级信息。basePos'.xy用于表示第一维度调整信息。可选的,计算机设备可以获取顶点基础位置信息basePos中的第一维度位置信息basePos.xy,基于视图属性信息中的窗口对比信息对对象位置信息进行转换,得到第一调整参数,基于第一调整参数与顶点基础位置信息的层级信息basePos.w,确定第二调整参数;基于第二调整参数对第一维度位置信息进行位置调整,得到第一维度调整信息。
进一步,可以获取目标显示界面的第一深度边界(UsedZNear)及第二深度边界(UsedZFar),该第一深度边界用于表示目标应用的画布坐标系中的最小深度(NearDepthValue),第二深度边界用于表示目标应用的画布坐标系中的最大深度(FarDepthValue)。进一步获取深度构建位置,该深度构建位置用于表示组件交互信息中层级信息所在的位置,例如,组件交互信息中的层级信息在该组件交互信息中的第16位,则该深度构建位置为16。进一步,可以基于深度构建位置对组件交互信息进行平移处理,得到应用对象的初始深度信息,该初始深度信息可以参见公式⑤所示:
如公式⑤所示,InZOrderValue用于表示初始深度信息,可以从组件交互信息中获取层级关联数据refData.w,对该层级关联数据进行平移处理“>>”,进而得到应用对象的初始深度信息。
再进一步,可以基于初始深度信息、第一深度边界及第二深度边界,对顶点基础位置信息中的深度位置信息进行位置调整,得到第二维度调整信息。该第二维度调整信息的一种可选的生成方式可以参见公式⑥所示:
如公式⑥所示,basePos'.z用于表示第二维度调整信息,clamp用于将第一个参数的值映射至第二个参数与第三个参数所组成的范围内。将第一维度调整信息及第二维度调整信息,确定为应用对象的实际位置信息。也就是说,应用对象包括一个或多个顶点,可以根据跟随该应用对象的交互根组件的组件交互信息、各个顶点所关联的视图属性信息及数据流,确定各个顶点对应的第一维度调整信息及第二维度信息,将各个顶点对应的第一维度调整信息及第二维度调整信息,组合得到应用对象的实际位置信息。同理,可以得到目标应用中任意一个应用对象的实际位置信息。
其中,计算机设备还可以基于第一渲染资源,确定目标应用中的应用对象的实际尺寸信息及渲染层级等,也就是第二渲染资源还可以包括实际尺寸信息及渲染层级等。
可选的,第二渲染资源包括h个渲染对象分别对应的渲染指令,任意一个渲染对象为交互对象或非交互对象,一个交互对象对应一个交互组件,具体是对应一个交互根组件;h为正整数。具体的,若第k个渲染对象为非交互对象(NonMapUI),则将深度状态(DS State)更新为深度关闭状态,将深度检测参数更新为全检测(Always),基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象;k为小于或等于h的正整数。若第k个渲染对象为交互对象,则将深度状态更新为深度启动状态,将深度检测参数更新为临近检测(NearOrEqual),基于深度状态读取深度缓存(DepthBuffer),基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象,将第k个渲染对象所对应的渲染层级添加至深度缓存。其中,可以基于深度缓存及深度检测参数,确定第k个渲染对象与其他已经渲染的渲染对象的渲染层级,确定第k个渲染对象与其他渲染对象之间的前后显示关系,基于第k个渲染对象所对应的渲染指令及在第二渲染资源中相关的数据,确定第k个渲染对象的对象显示效果,基于第k个渲染对象所对应的前后显示关系及对象显示效果,渲染第k个渲染对象。
其中,在基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象时,若第一个渲染对象至第(k-1)个渲染对象中存在交互对象,且第(k+1)个渲染对象至第h个渲染对象中存在交互对象,则读取深度缓存,基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象。若第一个渲染对象至第(k-1)个渲染对象中不存在交互对象,或者第(k+1)个渲染对象至第h个渲染对象中不存在交互对象,则基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象。
举例来说,参见图9,图9是本申请实施例提供的一种深度检测配置场景示意图。如图9所示,以渲染对象901至渲染对象905为例,在开始渲染时,可以清空深度缓存(DepthBuffer),切入对渲染对象901所包括的渲染指令,该渲染对象901为非交互对象,将深度状态更新为深度关闭状态,将深度检测参数更新为全检测,在此基础上,对该渲染对象901所对应的各个渲染指令进行渲染。切入对渲染对象902所包括的渲染指令,该渲染对象902为交互对象,将深度状态更新为深度启动状态,将深度检测参数更新为临近检测,在此基础上,对渲染对象902所包括的渲染指令进行渲染,其中,在渲染过程中,可以读取深度缓存,并将渲染对象902所对应的渲染层级添加至深度缓存中。在切入对渲染对象903所包括的渲染指令时,该渲染对象903为非交互对象,将深度状态更新为深度关闭状态,将深度检测参数更新为全检测,在此基础上,对该渲染对象903所对应的各个渲染指令进行渲染,其中,在渲染过程中,会读取深度缓存。在切入对渲染对象904所包括的渲染指令,该渲染对象904为交互对象,将深度状态更新为深度启动状态,将深度检测参数更新为临近检测,在此基础上,对渲染对象904所包括的渲染指令进行渲染,其中,在渲染过程中,可以读取深度缓存,并将渲染对象904所对应的渲染层级添加至深度缓存中。在切入对渲染对象905所包括的渲染指令,该渲染对象905为非交互对象,将深度状态更新为深度关闭状态,将深度检测参数更新为全检测,在此基础上,对该渲染对象905所对应的各个渲染指令进行渲染,其中,在渲染过程中,不关注深度缓存等。
可选的,第二渲染资源包括h个渲染对象分别对应的渲染指令;在目标显示界面中渲染第二渲染资源时,可以获取h个渲染指令分别对应的透明度及透明截止阈值(AlphaClip),获取h个渲染指令中透明度不满足透明截止阈值的待渲染指令;基于待渲染指令,在目标显示界面中渲染待渲染指令所对应的渲染对象。可选的,在基于待渲染指令,在目标显示界面中渲染待渲染指令所对应的渲染对象时,该过程可以参见上述针对第k个渲染对象的渲染方式,如图9所示。
在本申请实施例中,在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据。通过该方式,对目标应用中所产生的数据进行高低频解耦,第一频率数据(即低频数据)可以进行存储,在渲染时只需要直接读取,第二频率数据(即高频数据)由于每一帧都会发生变化,因此,在渲染时进行数据(即组件交互信息)整合,使得两者的处理过程解耦,减少数据渲染所需处理的数据量,进而提高数据渲染效率。进一步,在渲染线程中,基于所述第一频率数据获取所述第二频率数据,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源。也就是说,对获取到的数据是在图形处理器中进行处理的,借助于图形处理器的特性,可以实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力,其中,主线程可以认为是由中央处理器(central processing unit,CPU)所实现的,通过图形处理器分担CPU的工作,可以提高整个应用的运行效率及性能。
进一步地,请参见图10,图10是本申请实施例提供的一种数据渲染的方法的具体流程示意图。如图10所示,该数据渲染过程包括如下步骤:
步骤S1001,构建第一频率数据,对第一频率数据进行缓存。
在本申请实施例中,计算机设备可以采集目标应用中的第一频率数据,对第一频率数据进行缓存。其中,该第一频率数据包括容器组件索引、根组件索引、组件索引树及渲染指令;交互组件包括交互根容器组件及交互根组件等。
具体的,计算机设备可以获取目标应用中的交互根容器组件及交互根组件,为交互根容器组件分配容器组件索引,为交互根组件分配根组件索引。基于交互根容器组件及交互根组件之间的组件架构,如图3所示,将交互根容器组件的容器组件索引及交互根组件的根组件索引,构建为组件索引树。根据组件索引树生成渲染指令。
其中,在为交互根容器组件分配容器组件索引,为交互根组件分配根组件索引时,可以获取交互根容器组件所对应的容器索引缓存及容器索引缓存的第一首位索引,基于第一首位索引确定容器索引缓存中的容器空闲位置;基于容器空闲位置为交互根容器组件分配容器组件索引。获取交互根组件所对应的组件索引缓存及组件索引缓存的第二首位索引,基于第二首位索引确定组件索引缓存中的组件空闲位置;基于组件空闲位置为交互根组件分配根组件索引。
举例来说,参见图11,图11是本申请实施例提供的一种索引分配场景示意图。如图11所示,计算机设备可以获取交互根容器组件所对应的容器索引缓存1101及容器索引缓存1101的第一首位索引,该容器索引缓存1101是指用于管理交互根容器组件的容器组件索引。基于第一首位索引确定容器索引缓存1101中的容器空闲位置,基于容器索引缓存1101中的容器空闲位置,为交互根容器组件分配容器组件索引,将该容器组件索引添加至容器索引缓存1101中的容器空闲位置。可选的,可以获取该容器索引缓存1101中的容器空闲位置处的第一位置缓存,即该容器空闲位置处所存储的数据;获取容器空闲位置所对应的第二位置缓存,该第二位置缓存是指容器空闲位置在容器索引缓存1101中的序号。进一步,可以基于容器空闲位置,从容器索引缓存中查找容器更新位置,将容器更新位置赋值给第一首位索引,也就是将第一首位索引的值更新为容器更新位置,例如,该容器更新位置为5,则该过程可以表示为“第一首位索引=5”,该容器更新位置是指容器索引缓存中的当前的空闲位置,也就是说,第一首位索引用于指示容器索引缓存中的首个空闲位置。也就是说,容器索引缓存1101中存在第一类型数据及第二类型数据,第一类型数据是指已经分配的容器组件索引,第二类型数据用于指示该第二类型数据所在的位置未被分配。可选的,第二类型数据是指在容器索引缓存1101中位于该第二类型数据所在位置之后的空闲位置,例如,容器索引缓存1101中的槽位A中的数据为“-4”(为第二类型数据),“-4”表示位于容器索引缓存1101中的槽位A之后的首个空闲位置为序号是“4”的槽位。可选的,可以获取存储的数据指示第二位置缓存的待更新位置,将容器索引缓存1101的待更新位置处的数据更新为第一位置缓存,使得原来指向本次分配容器组件索引的容器空闲位置的槽位,指向本次分配容器组件索引的容器空闲位置所指示的空闲位置,例如,槽位A指向槽位B,槽位B指向槽位C,当将槽位B分配给交互根容器组件时,可以基于上述方式,将槽位A指向槽位C,实现对容器索引缓存1101中的空闲位置的顺位串联,从而提高对容器索引缓存1101的更新效率。
其中,该容器索引缓存1101中的每个槽位可以关联一个组件索引缓存,如组件索引缓存110a及组件索引缓存110b等,该组件索引缓存用于管理关联的容器索引缓存1101中的槽位所指示的交互根容器组件下的交互根组件的根组件索引,例如,假定组件索引缓存110a关联容器索引缓存1101中的第三个槽位(即序号为2的槽位),则该组件索引缓存110a用于管理,容器索引缓存1101中的第三个槽位所指示的交互根容器组件下的交互根组件的根组件索引。当然可选的,可以直接为容器索引缓存1101中的每个槽位关联一个组件索引缓存,可以提高索引分配的效率;或者,可以在将容器索引缓存1101的一个槽位分配给交互根容器组件后,为该槽位创建一个关联的组件索引缓存,该方式可以减少维护的无效组件索引缓存的数量,节省资源。
可选的,在容器组件索引存在关联的组件索引缓存时,可以直接获取该组件索引缓存;在容器组件索引不存在关联的组件索引缓存时,可以为该容器组件索引创建一个关联的组件索引缓存。例如,假定获取到组件索引缓存110a,可以获取该组件索引缓存110a的第二首位索引,基于第二首位索引确定组件索引缓存110a中的组件空闲位置,例如,第二首位索引为-1,则该组件空闲位置是指组件索引缓存110a中序号为1的槽位(或者可以说是第二个槽位),基于该组件空闲位置为交互根组件分配根组件索引,具体的该根组件索引的分配方式可以参见上述容器组件索引的分配方式,进一步对组件索引缓存110a的更新方式,可以参见上述对容器索引缓存的更新方式。如图11中,将组件索引缓存110a中序号为1的槽位分配给交互根组件。进一步,可以基于组件空闲位置,从组件索引缓存中查找组件更新位置,将组件更新位置赋值给第二首位索引,也就是将第二首位索引的值更新为组件更新位置,如图11中,可以将组件索引缓存110a中序号为1的槽位中的数据“-4”,赋值给第二首位索引,即,此时的第二首位索引为“-4”。
可选的,计算机设备响应针对待删除交互根组件的删除操作,可以删除待删除交互根组件的相关数据,获取待删除交互根组件的待删除根组件索引,从该待删除交互根组件所对应的组件索引缓存中,删除该待删除根组件索引,获取组件索引缓存中存储数据为默认空闲数据的第一槽位,将该待删除根组件索引在组件索引缓存中的索引存储位置,转换为第一空闲值,将该第一空闲值赋值给第一槽位,使得第一槽位可以指向该索引存储位置;进一步,可以将该索引存储位置的数据更新为默认空闲数据,使得在对根组件索引进行删除时,可以实现对组件索引缓存的空闲位置的管理,提高对组件索引缓存的管理效率。可选的,在对交互根容器组件进行删除时,可以参见上述对交互根组件的删除过程,进一步,还可以清空删除的交互根容器组件所关联的组件索引缓存。
通过以上过程,可以实现对目标应用中的任意一个交互根容器组件或交互根组件的索引分配,或者对任意一个交互根容器组件或交互根组件的索引删除等,在此不再进行赘述。
其中,以一个交互根容器组件为例,交互根组件的数量为N,交互根容器组件包括N个交互根组件;N为正整数。在基于交互根容器组件及交互根组件之间的组件架构,将交互根容器组件的容器组件索引及交互根组件的根组件索引,构建为组件索引树时,可以参见图12a,图12a是指本申请实施例提供的一种组件架构示意图,可以基于交互根容器组件的容器组件索引构建节点1201,基于该交互根容器组件所包括的交互根组件的根组件索引构建节点1201的叶子节点,生成组件索引树。也就是说,在该方式下,交互根容器组件与位于该交互根容器组件下的交互根组件直接相连。计算机设备响应针对第二交互根组件1202的添加操作,可以将该第二交互根组件1202关联至该第二交互根组件1202所属的交互根容器组件对应的节点1201。可选的,在存在多个交互根容器组件时,该组件架构可以参见图3所示。
或者,可以参见图12b,图12b是指本申请实施例提供的另一种组件架构示意图,可以基于交互根容器组件的容器组件索引构建节点1203,为该节点1203构建p个中间节点(即对应于中间虚拟组件),p为正整数,基于该交互根容器组件所包括的交互根组件的根组件索引构建中间节点的叶子节点,生成组件索引树。或者,可以为交互根容器组件关联中间虚拟组件,将N个交互根组件通过中间虚拟组件关联至交互根容器组件,生成组件架构树;每个交互根组件关联一个中间虚拟组件。将交互根容器组件的容器组件索引关联至组件架构树中的交互根容器组件,将N个交互根组件分别对应的根组件索引分别关联至组件架构树中所对应的交互根组件,得到组件索引树。也就是说,在该方式下,交互根组件通过中间虚拟组件关联至所属的交互根容器组件。其中,由于中间虚拟组件并不存在,是虚拟构建出的,也就是中间节点(InterNode)很轻量,可以体现进行缓存和预先创建,该中间节点的数量为p,p可以认为是根据预设节点数量范围得到的,该预设节点数量范围是指预设的交互根组件的数量范围,中间节点不受由交互根组件生成的节点影响,使得在对交互根组件进行删除或增加时,可以直接对该交互根组件所对应的节点进行管理,而不会对其他节点造成影响,提高对组件的管理效率。例如,响应针对交互根组件1204的添加操作,查找组件索引树中空闲的中间节点,如中间节点1205,基于交互根组件1204的根组件索引构建中间节点1205的叶子节点。
可选的,当检测到针对第一交互根组件的删除操作时,删除组件索引树中的第一交互根组件,删除与第一交互根组件所关联的第一中间虚拟组件相关的数据,可以保留该第一中间虚拟组件;N个交互根组件包括第一交互根组件,即,第一交互根组件可以是组件索引树中的任意一个交互根组件,而通过这一方式,使得可以预先部署中间虚拟组件或者说是中间节点,使得在对交互根组件进行删除或增加时,都只会与某一个中间虚拟组件之间产生关联,而不会影响组件索引树中其他节点,从而提高对组件索引树的维护效率。
其中,在根据组件索引树生成渲染指令时,可以获取初始渲染指令;根据组件索引树采集交互组件的组件渲染数据,获取初始渲染指令的视图属性信息。若视图属性信息为公共属性信息,则基于交互组件的组件渲染数据更新初始渲染指令,生成渲染指令;渲染指令不包括视图属性信息。其中,公共属性信息是指全局数据,可以由所有其他数据调用的视图属性信息。若视图属性信息为专属属性信息,则基于交互组件的组件渲染数据及视图属性信息更新初始渲染指令,生成渲染指令;渲染指令包括视图属性信息。
可选的,可以参见图13,图13是本申请实施例提供的一种第一频率数据示意图,如图13所示,实线用于表示交互组件之间的总体局部关系,虚线用于表示交互组件所其对应的缓存数据之间的关联关系。其中,计算机设备可以缓存目标应用的绘制缓存(FSlateDrawBuffer),该绘制缓存包括目标应用所包括的画布组件的图元信息,也就是用于指示该目标应用所包括的画布组件。获取目标应用中的画布组件(SWindow)所对应的画布元素列表(FSlateWindowElementList),该画布元素列表包括该画布组件内所有的图元信息。可选的,可以获取交互根容器组件所包括的元素信息,根据元素信息生成缓存元素数据(FSLateCachedElementData),该元素信息包括但不限于该交互根容器组件的容器组件索引,还元素信息还可以用于表示交互根容器组件所包括的交互根组件等。
进一步,可以获取交互根组件所对应的组件缓存列表,该组件缓存列表可以包括但不限于顶点缓存、根组件索引(属于组件索引缓存)、组件图元信息及渲染指令等。具体的,可以获取交互根组件所包括的顶点的顶点信息,根据交互根组件所包括的顶点的顶点信息,生成顶点缓存(Vertex Buffer),该顶点缓存中可以包括顶点的顶点索引,还可以包括该顶点缓存所属的交互根组件的根组件索引等。具体可以参见图5中的步骤S502中的相关描述。可选的,计算机设备可以从交互根组件中抽象出组件图元信息,将组件图元信息包装成渲染指令。
步骤S1002,在前端处理线程中,读取第一频率数据,在第i个渲染帧中,整合交互组件所对应的组件交互信息,得到第二频率数据i,i++。
在本申请实施例中,计算机设备可以针对第i个渲染帧,整合交互组件所对应的组件交互信息i,得到第二频率数据i,可以参见图5中的步骤S501的相关描述。进一步,可以将第二频率数据i添加至数据缓存数组中;i为正整数,此时,该数据缓存数组中包括一个或多个第二频率数据。可选的,基于数据缓存数组中所包括的第二频率数据,确定线程帧间隔;线程帧间隔用于表示前端处理线程所处理的第二频率数据的渲染帧,与渲染线程所处理的第二频率数据的渲染帧之间的帧数,也就是,用于表示前端处理线程与渲染线程之间处理进度的差距。若线程帧间隔小于帧间隔阈值,则针对第(i+1)个渲染帧,整合交互组件所对应的组件交互信息(i+1),得到第二频率数据(i+1),将第二频率数据(i+1)添加至数据缓存数组中,也就是针对i进行自增处理(即i++),处理下一个渲染帧。
其中,若线程帧间隔大于或等于帧间隔阈值,则暂停前端处理线程,在线程帧间隔小于帧间隔阈值时,重启前端处理线程。
其中,在基于数据缓存数组中所包括的第二频率数据,确定线程帧间隔时,一种线程帧间隔确定方式①下,可以获取数据缓存数组中所包括的第二频率数据的第一数据数量,将第一数据数量确定为线程帧间隔,在该方式下,可以认为数据缓存数组中的第二频率数据在使用后会被删除。一种线程帧间隔确定方式②下,获取数据缓存数组中,未携带渲染标识的第二频率数据的第二数据数量,将第二数据数量确定为线程帧间隔,在该方式下,可以认为数据缓存数组中的第二频率数据在使用后不会被立即删除。
其中,前端处理线程与渲染线程之间可以认为是分别运行的,也就是不会完全关联,可以通过前端处理线程执行步骤S1002,在线程帧间隔小于帧间隔阈值时,再次执行步骤S1002;在线程帧间隔大于或等于帧间隔阈值时,暂停前端处理线程,在线程帧间隔小于帧间隔阈值时,重启前端处理线程,执行步骤S1002。
步骤S1003,在渲染线程中,基于第一频率数据获取第二频率数据j,将第一频率数据及第二频率数据j,组合生成第一渲染资源j,将第一渲染资源j传输至图形处理器。
在本申请实施例中,可以参见图5中的步骤S502的相关描述。进一步可选的,在上述线程帧间隔确定方式①下,可以基于渲染线程,删除第一渲染资源在数据缓存数组中所对应的第二频率数据,也就是删除数据缓存数组中的第二频率数据j。或者,在上述线程帧间隔确定方式②下,可以基于渲染线程,为第一渲染资源在数据缓存数组中所对应的第二频率数据添加渲染标识,也就是,为数据缓存数组中的第二频率数据j添加渲染标识;可选的,若数据缓存数组中所包括的第二频率数据的总数据数量,大于或等于数组管理阈值,则删除数据缓存数组中携带渲染标识的第二频率数据。
通过上述数据缓存数组备份多个渲染帧的第二频率数据,使得前端处理线程与渲染线程使用数据时,渲染线程可以基于数据缓存数组进行第二频率数据的获取,解决前端处理线程与渲染线程的同步问题,提高渲染效率。
步骤S1004,通过图形处理器,将第一渲染资源j转换成目标显示界面所对应的第二渲染资源j,在目标显示界面中渲染第二渲染资源j,j++。
在本申请实施例中,可以参见图5中的步骤S503的相关描述,在此不再进行赘述。
步骤S1005,检测第一频率数据的更新状态。
在本申请实施例中,计算机设备可以检测第一频率数据的更新状态,若该更新状态用于指示第一频率数据发生更新,则执行步骤S1001,对第一频率数据进行更新缓存;若该更新状态用于指示第一频率数据未发生更新,则执行步骤S1002。
可选的,在对第一频率数据进行更新缓存时,计算机设备可以获取第一频率数据中发生更新的失效数据,可以获取该失效数据的失效原因,基于该失效原因确定失效处理方式,基于该失效处理方式对失效数据进行失效处理,从而使得对第一频率数据的更新更为轻量,进而在一定程度上提高数据渲染的效率,提高数据管理效率。
可选的,可以参见图14,图14是本申请实施例提供的一种数据转换示意图。如图14所示,计算机设备可以基于组件索引树确定交互根容器组件的容器组件索引,以及交互根组件的根组件索引。进一步,可以将交互根容器组件的容器组件索引以及交互根组件的根组件索引,与第二频率数据进行组合,得到渲染指令及当前数据流,也就是对第一频率数据与第二频率数据进行组合生成的中间数据,直至得到第一渲染资源,该第一渲染资源可以由GPU进行处理。其中,渲染指令中可以包括该渲染指令所属的交互根容器组件的容器组件索引等。
其中,本申请中的目标应用可以是任意一个存在显示的实体及交互组件等的应用程序,如游戏或地图类应用等,如该目标应用为游戏时,该前端处理线程可以记作游戏线程,如该目标应用为其他如地图类应用等的应用程序时,该前端处理线程可以记作前端数据管理线程等。其中,该前端处理线程用于对目标应用中的前端数据进行采集整理及存储管理等。
进一步地,请参见图15,图15是本申请实施例提供的一种数据渲染装置示意图。该数据渲染装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该数据渲染装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图15所示,该数据渲染装置1500可以用于图5所对应实施例中的计算机设备,具体的,该装置可以包括:数据读取模块11、数据整合模块12、资源生成模块14、资源传输模块15、资源转换模块16及资源渲染模块17。
数据读取模块11,用于在前端处理线程中,读取第一频率数据;
数据整合模块12,用于整合交互组件所对应的组件交互信息,得到第二频率数据;第二频率数据的更新频率大于第一频率数据的更新频率;第二频率数据是指在每一个渲染帧中均进行更新的数据;
资源生成模块14,用于将第一频率数据及第二频率数据,组合生成第一渲染资源;
资源传输模块15,用于将第一渲染资源传输至图形处理器;
资源转换模块16,用于通过图形处理器,将第一渲染资源转换成目标显示界面所对应的第二渲染资源;
资源渲染模块17,用于在目标显示界面中渲染第二渲染资源。
其中,第一频率数据包括容器组件索引、根组件索引、组件索引树及渲染指令;交互组件包括交互根容器组件及交互根组件;
该装置1500还包括:
组件获取模块18,用于获取目标应用中的交互根容器组件及交互根组件;
索引分配模块19,用于为交互根容器组件分配容器组件索引,为交互根组件分配根组件索引;
索引构建模块20,用于基于交互根容器组件及交互根组件之间的组件架构,将交互根容器组件的容器组件索引及交互根组件的根组件索引,构建为组件索引树;
指令生成模块21,用于根据组件索引树生成渲染指令。
其中,该索引分配模块19,包括:
第一检测单元191,用于获取交互根容器组件所对应的容器索引缓存及容器索引缓存的第一首位索引,基于第一首位索引确定容器索引缓存中的容器空闲位置;
第一分配单元192,用于基于容器空闲位置为交互根容器组件分配容器组件索引;
第二检测单元193,用于获取交互根组件所对应的组件索引缓存及组件索引缓存的第二首位索引,基于第二首位索引确定组件索引缓存中的组件空闲位置;
第二分配单元194,用于基于组件空闲位置为交互根组件分配根组件索引。
其中,该装置1400还包括:
第一更新模块22,用于基于容器空闲位置,从容器索引缓存中查找容器更新位置,将容器更新位置赋值给第一首位索引;
第二更新模块23,用于基于组件空闲位置,从组件索引缓存中查找组件更新位置,将组件更新位置赋值给第二首位索引。
其中,交互根组件的数量为N,交互根容器组件包括N个交互根组件;N为正整数;
该索引构建模块20,包括:
虚拟关联单元201,用于为交互根容器组件关联中间虚拟组件,将N个交互根组件通过中间虚拟组件关联至交互根容器组件,生成组件架构树;每个交互根组件关联一个中间虚拟组件;
索引关联单元202,用于将交互根容器组件的容器组件索引关联至组件架构树中的交互根容器组件,将N个交互根组件分别对应的根组件索引分别关联至组件架构树中所对应的交互根组件,得到组件索引树;
该装置1500还包括:
数据删除模块24,用于当检测到针对第一交互根组件的删除操作时,删除组件索引树中的第一交互根组件,删除与第一交互根组件所关联的第一中间虚拟组件相关的数据;N个交互根组件包括第一交互根组件。
其中,该指令生成模块21,包括:
指令获取单元211,用于获取初始渲染指令;
属性获取单元212,用于根据组件索引树采集交互组件的组件渲染数据,获取初始渲染指令的视图属性信息;
指令更新单元213,用于若视图属性信息为公共属性信息,则基于交互组件的组件渲染数据更新初始渲染指令,生成渲染指令;渲染指令不包括视图属性信息;
该指令更新单元213,还用于若视图属性信息为专属属性信息,则基于交互组件的组件渲染数据及视图属性信息更新初始渲染指令,生成渲染指令;渲染指令包括视图属性信息。
其中,第二频率数据包括交互数据数组;该数据整合模块12,包括:
数组构建单元121,用于构建初始交互数据数组,从第一频率数据中获取组件索引树;组件索引树用于管理交互组件的组件索引;
位置确定单元122,用于从组件索引树中获取交互组件的组件索引,基于交互组件的组件索引确定交互组件在初始交互数据数组中的组件数据位置;
信息存储单元123,用于将交互组件的组件交互信息添加至初始交互数据数组中的组件数据位置处,得到交互数据数组;
该装置还包括:
数据获取模块13,用于在渲染线程中,基于交互组件的组件索引,读取交互数据数组。
其中,交互组件包括交互根容器组件及交互根组件;初始交互数据数组是指交互根容器组件所对应的数组;该装置1500还包括:
信息融合模块25,用于获取交互根组件的第一交互信息,以及交互根组件所包括的交互叶子组件的第二交互信息,将第二交互信息与第一交互信息进行整合处理,得到交互根组件的组件交互信息。
其中,该数据整合模块12,包括:
数据缓存单元124,用于针对第i个渲染帧,整合交互组件所对应的组件交互信息i,得到第二频率数据i,将第二频率数据i添加至数据缓存数组中;i为正整数;
间隔确定单元125,用于基于数据缓存数组中所包括的第二频率数据,确定线程帧间隔;线程帧间隔用于表示前端处理线程所处理的第二频率数据的渲染帧,与渲染线程所处理的第二频率数据的渲染帧之间的帧数;
该数据缓存单元124,还用于若线程帧间隔小于帧间隔阈值,则针对第(i+1)个渲染帧,整合交互组件所对应的组件交互信息(i+1),得到第二频率数据(i+1),将第二频率数据(i+1)添加至数据缓存数组中;
线程等待单元126,用于若线程帧间隔大于或等于帧间隔阈值,则暂停前端处理线程,在线程帧间隔小于帧间隔阈值时,重启前端处理线程。
其中,该间隔确定单元125,包括:
第一确定子单元1251,用于获取数据缓存数组中所包括的第二频率数据的第一数据数量,将第一数据数量确定为线程帧间隔;
该装置1500还包括:
渲染删除模块26,用于基于渲染线程,删除第一渲染资源在数据缓存数组中所对应的第二频率数据。
其中,该间隔确定单元125,包括:
第二确定子单元1252,用于获取数据缓存数组中,未携带渲染标识的第二频率数据的第二数据数量,将第二数据数量确定为线程帧间隔;
该装置1500还包括:
渲染标记模块27,用于基于渲染线程,为第一渲染资源在数据缓存数组中所对应的第二频率数据添加渲染标识;
数组管理模块28,用于若数据缓存数组中所包括的第二频率数据的总数据数量,大于或等于数组管理阈值,则删除数据缓存数组中携带渲染标识的第二频率数据。
其中,第一频率数据包括M个渲染指令;M为正整数;
该资源生成模块14,包括:
指令整合单元141,用于查找M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流;
着色生成单元142,用于确定数据流所对应的交互根容器组件,基于交互根容器组件所包括的交互根组件在第二频率数据中的组件交互信息,生成数据流对应的着色资源;
资源生成单元143,用于对数据流、数据流所对应的视图属性信息,以及数据流所对应的着色资源进行整合,生成第一渲染资源。
其中,该指令整合单元141,包括:
指令排序子单元1411,用于基于M个渲染指令分别对应的渲染层级,对M个渲染指令进行排序,得到渲染指令队列;渲染指令队列包括d个指令子队列,每个指令子队列中所包括的渲染指令的渲染层级相同;d为小于或等于M的正整数;
队列管理子单元1412,用于查找M个渲染指令分别关联的视图属性信息,对d个指令子队列分别进行整合处理,得到数据流;数据流中所包括的渲染指令对应同一个渲染层级。
其中,交互组件包括交互根组件;第二渲染资源包括实际位置信息;
该资源转换模块16,包括:
信息获取单元161,用于通过图形处理器,从着色资源中获取交互根组件所对应的组件交互信息;
顶点确定单元162,用于基于数据流及数据流所对应的视图属性信息,确定交互根组件所指示的应用对象的顶点基础位置信息;
信息映射单元163,用于基于视图属性信息将交互根组件所对应的组件交互信息映射至目标显示界面,生成交互根组件所指示的应用对象的对象位置信息;
位置确定单元164,用于基于视图属性信息、顶点基础位置信息及对象位置信息,确定应用对象的实际位置信息。
其中,该位置确定单元164,包括:
位置调整子单元1641,用于基于视图属性信息及对象位置信息,对顶点基础位置信息中的第一维度位置信息进行位置调整,得到第一维度调整信息;
深度构建子单元1642,用于获取目标显示界面的第一深度边界及第二深度边界,获取深度构建位置;
信息平移子单元1643,用于基于深度构建位置对组件交互信息进行平移处理,得到应用对象的初始深度信息;
深度调整子单元1644,用于基于初始深度信息、第一深度边界及第二深度边界,对顶点基础位置信息中的深度位置信息进行位置调整,得到第二维度调整信息;
位置确定子单元1645,用于将第一维度调整信息及第二维度调整信息,确定为应用对象的实际位置信息。
其中,第二渲染资源包括h个渲染对象分别对应的渲染指令,任意一个渲染对象为交互对象或非交互对象,一个交互对象对应一个交互组件;h为正整数;
该资源渲染模块17,包括:
参数更新单元171,用于若第k个渲染对象为非交互对象,则将深度状态更新为深度关闭状态,将深度检测参数更新为全检测;
第一渲染单元172,用于基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象;k为小于或等于h的正整数;
该参数更新单元171,还用于若第k个渲染对象为交互对象,则将深度状态更新为深度启动状态,将深度检测参数更新为临近检测,基于深度状态读取深度缓存;
第二渲染单元173,用于基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象,将第k个渲染对象所对应的渲染层级添加至深度缓存。
其中,该第一渲染单元172,具体用于:
若第一个渲染对象至第(k-1)个渲染对象中存在交互对象,且第(k+1)个渲染对象至第h个渲染对象中存在交互对象,则读取深度缓存,基于深度缓存、深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象;
若第一个渲染对象至第(k-1)个渲染对象中不存在交互对象,或者第(k+1)个渲染对象至第h个渲染对象中不存在交互对象,则基于深度检测参数及第k个渲染对象对应的渲染指令,渲染第k个渲染对象。
其中,第二渲染资源包括h个渲染对象分别对应的渲染指令;该资源渲染模块17,包括:
指令筛选单元174,用于获取h个渲染指令分别对应的透明度及透明截止阈值,获取h个渲染指令中透明度不满足透明截止阈值的待渲染指令;
第三渲染单元175,用于基于待渲染指令,在目标显示界面中渲染待渲染指令所对应的渲染对象。
本申请实施例提供了一种数据渲染装置,该装置可以在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据。通过该方式,对目标应用中所产生的数据进行高低频解耦,第一频率数据(即低频数据)可以进行存储,在渲染时只需要直接读取,第二频率数据(即高频数据)由于每一帧都会发生变化,因此,在渲染时进行数据(即组件交互信息)整合,使得两者的处理过程解耦,减少数据渲染所需处理的数据量,进而提高数据渲染效率。进一步,在渲染线程中,基于所述第一频率数据获取所述第二频率数据,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源。也就是说,对获取到的数据是在图形处理器中进行处理的,借助于图形处理器的特性,可以实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力。
参见图16,图16是本申请实施例提供的一种计算机设备的结构示意图。如图16所示,本申请实施例中的计算机设备可以包括:一个或多个处理器1601、存储器1602和输入输出接口1603。该处理器1601、存储器1602和输入输出接口1603通过总线1604连接。存储器1602用于存储计算机程序,该计算机程序包括程序指令,输入输出接口1603用于接收数据及输出数据,如用于计算机设备与计算机设备之间进行数据交互等;处理器1601用于执行存储器1602存储的程序指令。
其中,该处理器1601可以执行如下操作:
在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;第二频率数据的更新频率大于第一频率数据的更新频率;第二频率数据是指在每一个渲染帧中均进行更新的数据;
在渲染线程中,将第一频率数据及第二频率数据,组合生成第一渲染资源,将第一渲染资源传输至图形处理器;
通过图形处理器,将第一渲染资源转换成目标显示界面所对应的第二渲染资源,在目标显示界面中渲染第二渲染资源。
在一些可行的实施方式中,该处理器1601可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1602可以包括只读存储器和随机存取存储器,并向处理器1601和输入输出接口1603提供指令和数据。存储器1602的一部分还可以包括非易失性随机存取存储器。例如,存储器1602还可以存储设备类型的信息。
具体实现中,该计算机设备可通过其内置的各个功能模块执行如该图5中各个步骤所提供的实现方式,具体可参见该图5中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行该图5中所示方法的各个步骤,进行数据渲染操作。本申请实施例实现了在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据。通过该方式,对目标应用中所产生的数据进行高低频解耦,第一频率数据(即低频数据)可以进行存储,在渲染时只需要直接读取,第二频率数据(即高频数据)由于每一帧都会发生变化,因此,在渲染时进行数据(即组件交互信息)整合,使得两者的处理过程解耦,减少数据渲染所需处理的数据量,进而提高数据渲染效率。进一步,在渲染线程中,基于所述第一频率数据获取所述第二频率数据,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源。也就是说,对获取到的数据是在图形处理器中进行处理的,借助于图形处理器的特性,可以实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行图5中各个步骤所提供的数据渲染方法,具体可参见该图5中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的数据渲染装置或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图5中的各种可选方式中所提供的方法,实现了对目标应用中所产生的数据进行高低频解耦,第一频率数据(即低频数据)可以进行存储,在渲染时只需要直接读取,第二频率数据(即高频数据)由于每一帧都会发生变化,因此,在渲染时进行数据(即组件交互信息)整合,使得两者的处理过程解耦,减少数据渲染所需处理的数据量,进而提高数据渲染效率。并对获取到的数据是在图形处理器中进行处理的,借助于图形处理器的特性,可以实现对数据的并行处理,从而提高数据渲染性能及效率,减少主线程(即前端处理线程及渲染线程等)的压力。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据渲染设备的处理器以产生一个机器,使得通过计算机或其他可编程数据渲染设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据渲染设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据渲染设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (19)
1.一种数据渲染方法,其特征在于,所述方法包括:
在前端处理线程中,读取第一频率数据,整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据;
在渲染线程中,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,将所述第一渲染资源传输至图形处理器;
通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,在所述目标显示界面中渲染所述第二渲染资源;
所述第二频率数据包括交互数据数组;所述整合交互组件所对应的组件交互信息,得到第二频率数据,包括:
构建初始交互数据数组,从所述第一频率数据中获取组件索引树;所述组件索引树用于管理所述交互组件的组件索引;
从所述组件索引树中获取所述交互组件的组件索引,基于所述交互组件的组件索引确定所述交互组件在所述初始交互数据数组中的组件数据位置;
将所述交互组件的组件交互信息添加至所述初始交互数据数组中的所述组件数据位置处,得到所述交互数据数组。
2.如权利要求1所述的方法,其特征在于,所述第一频率数据包括容器组件索引、根组件索引、组件索引树及渲染指令;所述交互组件包括交互根容器组件及交互根组件;
所述方法还包括:
获取目标应用中的所述交互根容器组件及所述交互根组件,为所述交互根容器组件分配所述容器组件索引,为所述交互根组件分配所述根组件索引;
基于所述交互根容器组件及所述交互根组件之间的组件架构,将所述交互根容器组件的容器组件索引及所述交互根组件的根组件索引,构建为所述组件索引树;
根据所述组件索引树生成所述渲染指令。
3.如权利要求2所述的方法,其特征在于,所述为所述交互根容器组件分配所述容器组件索引,为所述交互根组件分配所述根组件索引,包括:
获取所述交互根容器组件所对应的容器索引缓存及所述容器索引缓存的第一首位索引,基于所述第一首位索引确定所述容器索引缓存中的容器空闲位置;
基于所述容器空闲位置为所述交互根容器组件分配所述容器组件索引;
获取所述交互根组件所对应的组件索引缓存及所述组件索引缓存的第二首位索引,基于所述第二首位索引确定所述组件索引缓存中的组件空闲位置;
基于所述组件空闲位置为所述交互根组件分配所述根组件索引。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
基于所述容器空闲位置,从所述容器索引缓存中查找容器更新位置,将所述容器更新位置赋值给所述第一首位索引;
基于所述组件空闲位置,从所述组件索引缓存中查找组件更新位置,将所述组件更新位置赋值给所述第二首位索引。
5.如权利要求2所述的方法,其特征在于,所述交互根组件的数量为N,所述交互根容器组件包括N个交互根组件;N为正整数;
所述基于所述交互根容器组件及所述交互根组件之间的组件架构,将所述交互根容器组件的容器组件索引及所述交互根组件的根组件索引,构建为所述组件索引树,包括:
为所述交互根容器组件关联中间虚拟组件,将所述N个交互根组件通过所述中间虚拟组件关联至所述交互根容器组件,生成组件架构树;每个交互根组件关联一个中间虚拟组件;
将所述交互根容器组件的容器组件索引关联至所述组件架构树中的所述交互根容器组件,将所述N个交互根组件分别对应的根组件索引,分别关联至所述组件架构树中所对应的交互根组件,得到组件索引树;
所述方法还包括:
当检测到针对第一交互根组件的删除操作时,删除所述组件索引树中的所述第一交互根组件,删除与所述第一交互根组件所关联的第一中间虚拟组件相关的数据;所述N个交互根组件包括所述第一交互根组件。
6.如权利要求2所述的方法,其特征在于,所述根据所述组件索引树生成所述渲染指令,包括:
获取初始渲染指令;
根据所述组件索引树采集所述交互组件的组件渲染数据,获取所述初始渲染指令的视图属性信息;
若所述视图属性信息为公共属性信息,则基于所述交互组件的组件渲染数据更新所述初始渲染指令,生成所述渲染指令;所述渲染指令不包括所述视图属性信息;
若所述视图属性信息为专属属性信息,则基于所述交互组件的组件渲染数据及所述视图属性信息更新所述初始渲染指令,生成所述渲染指令;所述渲染指令包括所述视图属性信息。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述渲染线程中,基于所述交互组件的组件索引,读取所述交互数据数组。
8.如权利要求1所述的方法,其特征在于,所述整合交互组件所对应的组件交互信息,得到第二频率数据,包括:
针对第i个渲染帧,整合交互组件所对应的第i个渲染帧的组件交互信息,得到所述第i个渲染帧的第二频率数据,将所述第i个渲染帧的第二频率数据添加至数据缓存数组中;i为正整数;
基于所述数据缓存数组中所包括的第二频率数据,确定线程帧间隔;所述线程帧间隔用于表示所述前端处理线程所处理的第二频率数据的渲染帧,与所述渲染线程所处理的第二频率数据的渲染帧之间的帧数;
若所述线程帧间隔小于帧间隔阈值,则针对第i+1个渲染帧,整合交互组件所对应的第i+1个渲染帧的组件交互信息,得到所述第i+1个渲染帧的第二频率数据,将所述第i+1个渲染帧的第二频率数据添加至数据缓存数组中;
若所述线程帧间隔大于或等于所述帧间隔阈值,则暂停所述前端处理线程,在所述线程帧间隔小于所述帧间隔阈值时,重启所述前端处理线程。
9.如权利要求8所述的方法,其特征在于,所述基于所述数据缓存数组中所包括的第二频率数据,确定线程帧间隔,包括:
获取所述数据缓存数组中所包括的第二频率数据的第一数据数量,将所述第一数据数量确定为线程帧间隔;
所述方法还包括:
基于所述渲染线程,删除所述第一渲染资源在所述数据缓存数组中所对应的第二频率数据。
10.如权利要求8所述的方法,其特征在于,所述基于所述数据缓存数组中所包括的第二频率数据,确定线程帧间隔,包括:
获取所述数据缓存数组中,未携带渲染标识的第二频率数据的第二数据数量,将所述第二数据数量确定为线程帧间隔;
所述方法还包括:
基于所述渲染线程,为所述第一渲染资源在所述数据缓存数组中所对应的第二频率数据添加所述渲染标识;
若所述数据缓存数组中所包括的第二频率数据的总数据数量,大于或等于数组管理阈值,则删除所述数据缓存数组中携带所述渲染标识的第二频率数据。
11.如权利要求1所述的方法,其特征在于,所述第一频率数据包括M个渲染指令;M为正整数;
所述将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源,包括:
查找所述M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流;
确定所述数据流所对应的交互根容器组件,基于所述交互根容器组件所包括的交互根组件在所述第二频率数据中的组件交互信息,生成所述数据流对应的着色资源;
对所述数据流、所述数据流所对应的视图属性信息,以及所述数据流所对应的着色资源进行整合,生成第一渲染资源。
12.如权利要求11所述的方法,其特征在于,所述查找所述M个渲染指令分别关联的视图属性信息,对具有相同视图属性信息的渲染指令进行整合处理,得到数据流,包括:
基于所述M个渲染指令分别对应的渲染层级,对所述M个渲染指令进行排序,得到渲染指令队列;所述渲染指令队列包括d个指令子队列,每个指令子队列中所包括的渲染指令的渲染层级相同;d为小于或等于M的正整数;
查找所述M个渲染指令分别关联的视图属性信息,对d个指令子队列分别进行整合处理,得到数据流;所述数据流中所包括的渲染指令对应同一个渲染层级。
13.如权利要求11所述的方法,其特征在于,所述交互组件包括交互根组件;所述第二渲染资源包括实际位置信息;
所述通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源,包括:
通过所述图形处理器,从所述着色资源中获取所述交互根组件所对应的组件交互信息;
基于所述数据流及所述数据流所对应的视图属性信息,确定所述交互根组件所指示的应用对象的顶点基础位置信息;
基于所述视图属性信息,将所述交互根组件所对应的组件交互信息映射至目标显示界面,生成所述交互根组件所指示的应用对象的对象位置信息;
基于所述视图属性信息、所述顶点基础位置信息及所述对象位置信息,确定所述应用对象的所述实际位置信息。
14.如权利要求13所述的方法,其特征在于,所述基于所述视图属性信息、所述顶点基础位置信息及所述对象位置信息,确定所述应用对象的所述实际位置信息,包括:
基于所述视图属性信息及所述对象位置信息,对所述顶点基础位置信息中的第一维度位置信息进行位置调整,得到第一维度调整信息;
获取所述目标显示界面的第一深度边界及第二深度边界,获取深度构建位置;
基于所述深度构建位置对所述组件交互信息进行平移处理,得到所述应用对象的初始深度信息;
基于所述初始深度信息、所述第一深度边界及所述第二深度边界,对所述顶点基础位置信息中的深度位置信息进行位置调整,得到第二维度调整信息;
将所述第一维度调整信息及所述第二维度调整信息,确定为所述应用对象的所述实际位置信息。
15.如权利要求1所述的方法,其特征在于,所述第二渲染资源包括h个渲染对象分别对应的渲染指令,任意一个渲染对象为交互对象或非交互对象,一个交互对象对应一个交互组件;h为正整数;
在所述目标显示界面中渲染所述第二渲染资源,包括:
若第k个渲染对象为所述非交互对象,则将深度状态更新为深度关闭状态,将深度检测参数更新为全检测,基于所述深度检测参数及所述第k个渲染对象对应的渲染指令,渲染所述第k个渲染对象;k为小于或等于h的正整数;
若所述第k个渲染对象为所述交互对象,则将所述深度状态更新为深度启动状态,将所述深度检测参数更新为临近检测,基于所述深度状态读取深度缓存,基于所述深度缓存、所述深度检测参数及所述第k个渲染对象对应的渲染指令,渲染所述第k个渲染对象,将所述第k个渲染对象所对应的渲染层级添加至所述深度缓存。
16.如权利要求15所示的方法,其特征在于,所述基于所述深度检测参数及所述第k个渲染对象对应的渲染指令,渲染所述第k个渲染对象,包括:
若第一个渲染对象至第k-1个渲染对象中存在所述交互对象,且第k+1个渲染对象至第h个渲染对象中存在所述交互对象,则读取所述深度缓存,基于所述深度缓存、所述深度检测参数及所述第k个渲染对象对应的渲染指令,渲染所述第k个渲染对象;
若所述第一个渲染对象至所述第k-1个渲染对象中不存在所述交互对象,或者所述第k+1个渲染对象至所述第h个渲染对象中不存在所述交互对象,则基于所述深度检测参数及所述第k个渲染对象对应的渲染指令,渲染所述第k个渲染对象。
17.一种数据渲染装置,其特征在于,所述装置包括:
数据读取模块,用于在前端处理线程中,读取第一频率数据;
数据整合模块,用于整合交互组件所对应的组件交互信息,得到第二频率数据;所述第二频率数据的更新频率大于所述第一频率数据的更新频率;所述第二频率数据是指在每一个渲染帧中均进行更新的数据;
资源生成模块,用于在渲染线程中,将所述第一频率数据及所述第二频率数据,组合生成第一渲染资源;
资源传输模块,用于将所述第一渲染资源传输至图形处理器;
资源转换模块,用于通过所述图形处理器,将所述第一渲染资源转换成目标显示界面所对应的第二渲染资源;
资源渲染模块,用于在所述目标显示界面中渲染所述第二渲染资源;
所述第二频率数据包括交互数据数组;所述数据整合模块,包括:
数组构建单元,用于构建初始交互数据数组,从所述第一频率数据中获取组件索引树;所述组件索引树用于管理所述交互组件的组件索引;
位置确定单元,用于从所述组件索引树中获取所述交互组件的组件索引,基于所述交互组件的组件索引确定所述交互组件在所述初始交互数据数组中的组件数据位置;
信息存储单元,用于将所述交互组件的组件交互信息添加至所述初始交互数据数组中的所述组件数据位置处,得到所述交互数据数组。
18.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-16任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310111991.XA CN115861513B (zh) | 2023-02-14 | 2023-02-14 | 数据渲染方法、装置、计算机及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310111991.XA CN115861513B (zh) | 2023-02-14 | 2023-02-14 | 数据渲染方法、装置、计算机及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115861513A CN115861513A (zh) | 2023-03-28 |
CN115861513B true CN115861513B (zh) | 2023-05-09 |
Family
ID=85658033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310111991.XA Active CN115861513B (zh) | 2023-02-14 | 2023-02-14 | 数据渲染方法、装置、计算机及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115861513B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110152291A (zh) * | 2018-12-13 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 游戏画面的渲染方法、装置、终端及存储介质 |
CN112270756B (zh) * | 2020-11-24 | 2022-03-25 | 山东汇颐信息技术有限公司 | 一种应用于bim模型文件的数据渲染方法 |
CN114092310A (zh) * | 2021-11-09 | 2022-02-25 | 杭州逗酷软件科技有限公司 | 图像渲染方法及电子设备、计算机可读存储介质 |
CN115423919B (zh) * | 2022-09-14 | 2023-08-25 | 阿波罗智联(北京)科技有限公司 | 图像的渲染方法、装置、设备以及存储介质 |
-
2023
- 2023-02-14 CN CN202310111991.XA patent/CN115861513B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115861513A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
CN108009008B (zh) | 数据处理方法和系统、电子设备 | |
CN112035410B (zh) | 日志存储方法、装置、节点设备及存储介质 | |
CN114244595B (zh) | 权限信息的获取方法、装置、计算机设备及存储介质 | |
CN107924371A (zh) | 带有路由器的无限存储器结构硬件实现方案 | |
US11551382B2 (en) | Efficient refinement of tiles of a HLOD tree | |
CN108431774A (zh) | 无限存储器结构流和api | |
US11100703B2 (en) | Dynamic frontend-driven generation of an HLOD tree | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
US10678482B2 (en) | Multi-tier data synchronizer based on concurrent linked list | |
CN108885604A (zh) | 存储器结构软件实现方案 | |
CN102880557A (zh) | 一种异构数据源的多级分布式高速缓存 | |
CN108089912A (zh) | 一种虚拟机与容器超融合系统构建方法及装置 | |
KR102668137B1 (ko) | 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치 | |
CN112162843A (zh) | 工作流执行方法、装置、设备及存储介质 | |
CN108073350A (zh) | 一种用于云渲染的对象存储系统和方法 | |
CN111352863A (zh) | 内存管理方法、装置、设备及存储介质 | |
JP6748653B2 (ja) | カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス | |
CN106713250A (zh) | 基于分布式系统的数据访问方法和装置 | |
CN113704361B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN115861513B (zh) | 数据渲染方法、装置、计算机及可读存储介质 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
KR100939212B1 (ko) | 광선 집합을 이용한 병렬 광선 추적 방법 및 시스템 | |
JP2020194522A (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
US20140292781A1 (en) | System and method for propagating scene information to renderers in a multi-user, multi-scene environment |
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 |