CN115393505A - 渲染方法、引擎、电子设备及存储介质 - Google Patents
渲染方法、引擎、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115393505A CN115393505A CN202210935720.1A CN202210935720A CN115393505A CN 115393505 A CN115393505 A CN 115393505A CN 202210935720 A CN202210935720 A CN 202210935720A CN 115393505 A CN115393505 A CN 115393505A
- Authority
- CN
- China
- Prior art keywords
- rendering
- frame
- layer
- data
- instruction
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Human Computer Interaction (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
Abstract
本申请提供一种渲染方法、引擎、电子设备及存储介质,该方法通过获取多个待绘制数据,根据各待绘制数据生成的绘制请求,基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存,对帧缓存进行三维渲染,得到各图层接口的显示内容,能够适配于android平台,能够实现跨进程进行融合渲染的效果,满足用户需求。
Description
技术领域
本申请涉及图像处理技术领域,具体涉及一种渲染方法、引擎、电子设备及存储介质。
背景技术
随着智能网联汽车的发展,基于android(安卓)操作系统的车机越来越普及。而android系统对于3D实时渲染的支持是非常基础的,android系统当前的渲染有两种途径,一种是Google(谷歌)推出的skia(一种2D向量图形处理函数库),作为android系统官方的图形库,skia对android系统的兼容是非常友好的,但它只是2D向量图形处理库;另一种则是使用跨平台的图形API OpenGL ES(规范嵌入式设备),可是opengl的API都太过原始和基础,开发效率非常低。
虽然也可以使用成熟的商业引擎进行3D开发,如unity(基于GNOME桌面环境的用户界面)或unreal(虚幻引擎)等跨平台的渲染引擎,再对android平台进行单独适配和打包。可是实际上,由于商业引擎需要支持跨操作系统平台兼容和适配,以及满足各个平台对引擎的需求,那么对指定的android平台存在适配不足的问题,且其均不能实现跨进程进行融合渲染的效果,不能满足用户需求。
发明内容
鉴于以上所述现有技术的缺点,本发明提供一种渲染方法、引擎、电子设备及存储介质,以解决上述技术问题。
本发明实施例提供了一种渲染引擎,所述渲染引擎运行于安卓系统的系统运行库层,所述渲染引擎包括:
接口层,包括多个绘制接口,用于获取多个待绘制数据,所述多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据;
客户端,用于根据各所述待绘制数据生成绘制请求;
核心层,用于基于所述绘制请求申请一个窗口,以及申请各所述待绘制数据的图层接口,根据各所述绘制请求创建帧缓存;
平台层,用于对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容。
于本发明一实施例中,所述核心层包括渲染管线,所述渲染管线包括管理线程和渲染线程,其中:
所述管理线程用于根据所述帧缓存生成渲染指令,将所述渲染指令存储于预设环形队列以供所述渲染线程获取;
所述渲染线程用于检测到所述预设环形队列中存在排队的所述渲染指令,获取所述渲染指令,通过调用所述平台层对所述渲染指令的帧缓存进行三维渲染。
于本发明一实施例中,所述管理线程包括以下至少之一:
框架图实例,用于根据预设业务需求创建渲染层;
剔除模块,用于监听渲染操作,对绘制逻辑进行优化;
命令生成模块,用于响应于所述渲染线程的下一帧准备消息根据所述帧缓存生成渲染指令,所述帧缓存为下一帧;
预设环形队列,用于存储所述渲染指令,以供所述渲染线程获取;
通知模块,用于生成通知消息并发送至所述渲染线程,所述通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知。
于本发明一实施例中,所述渲染线程包括以下至少之一:
资源准备模块,用于响应于所述通知消息切换渲染上下文、停止当前帧绘制,以及准备所述帧缓存的渲染资源;
监听模块,用于监听所述预设环形队列中的渲染指令;
指令获取模块,用于获取所述渲染指令,通过调用所述平台层对所述渲染指令的帧缓存进行三维渲染;
完成提示模块,用于向所述命令生成模块发送下一帧准备消息,以触发所述命令生成模块生成所述帧缓存的下一帧的渲染指令。
于本发明一实施例中,所述核心层还包括显示控制模块,若显示装置为包括多个显示屏的多屏交互装置,所述显示控制模块用于根据获取的内存描述符,以及所述多屏交互装置的显示属性确定各所述显示屏的当前显示画面,所述当前显示画面包括至少一个图层接口的至少一部分显示内容。
于本发明一实施例中,所述显示控制模块还用于:
响应于显示画面移动指令,对各所述显示屏的当前显示画面进行移动,以使至少一个所述显示屏显示至少两个图层接口的显示内容,所述显示画面移动指令包括移动对象起始信息,移动距离信息和移动方向信息。
于本发明一实施例中,若显示装置为包括1个显示屏,根据获取的内存描述符通过直接送屏的方式显示各所述图层接口的显示内容。
于本发明一实施例中,所述平台层包括以下至少之一:
渲染模块,用于对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容;
显示内容缓存空间,用于存储各所述图层接口的所述显示内容,其中,各所述图层接口的显示内容存储于所述显示内容缓存空间中连续的共享内存区块;
内存描述符发送模块,用于向所述核心层发送所述显示内容的内存描述符。
本发明实施例还提供了一种渲染方法,所述渲染方法应用于安卓系统的系统运行库层,所述渲染方法包括:
获取多个待绘制数据,所述多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据;
根据各所述待绘制数据生成的绘制请求;
基于所述绘制请求申请一个窗口,以及申请各所述待绘制数据的图层接口,根据各所述绘制请求创建帧缓存;
对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容。
于本发明一实施例中,对所述帧缓存进行三维渲染之前,所述渲染方法还包括:
响应于获取的下一帧准备消息根据所述帧缓存生成渲染指令,将所述渲染指令存储于预设环形队列以供渲染线程获取;
发送通知消息,所述通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知;
响应于所述通知消息切换渲染上下文、停止当前帧绘制,以及准备所述帧缓存的渲染资源;
监听所述预设环形队列中的渲染指令,检测到所述预设环形队列中存在排队的所述渲染指令,获取所述渲染指令,以触发对所述渲染指令的帧缓存进行三维渲染。
于本发明一实施例中,获取所述渲染指令之后,所述渲染方法还包括:
将准备好的所述帧缓存的渲染资源装配至预设资源缓存空间;
激活着色模块并设置显示内容缓存空间,以触发对所述渲染指令的帧缓存进行三维渲染;
若三维渲染完成,发送下一帧准备消息,以触发生成所述帧缓存的下一帧的渲染指令。
于本发明一实施例中,所述多个待绘制数据包括多个应用的待绘制数据,对所述帧缓存进行三维渲染之前,所述渲染方法还包括:
各所述应用分别申请临时窗口,并分别申请临时图层接口,生成过渡动画的图层实例;
基于各所述图层接口的涂层实例生成动画实例,将各所述动画实例绑定至场景层,以实现所述帧缓存进行三维渲染的动画特效。
于本发明一实施例中,分别申请临时图层接口之后,所述渲染方法还包括释放各所述临时窗口。
本发明提供的一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上述任一项实施例所述的渲染方法。
本发明提供的一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行上述任一项实施例所述的渲染方法。
本发明的有益效果:本发明中的渲染方法、引擎、电子设备及存储介质,该方法通过获取多个待绘制数据,根据各待绘制数据生成的绘制请求,基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存,对帧缓存进行三维渲染,得到各图层接口的显示内容,能够适配于android平台,能够实现跨进程(多个应用)进行融合渲染的效果,满足用户需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本申请的一示例性实施例示出的渲染系统的实施环境示意图;
图2是本申请的一示例性实施例示出的渲染引擎的框图;
图3是本申请的一示例性实施例示出的渲染管线的流程图;
图4是本申请的一示例性实施例示出的多屏渲染功能流程图;
图5是本申请的一示例性实施例示出的跨进程动画处理流程图;
图6是本申请的一示例性实施例示出的一种具体的渲染引擎的架构图;
图7是本申请的一示例性实施例示出的渲染方法的流程图;
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下将参照附图和优选实施例来说明本发明的实施方式,本领域技术人员可由本说明书中所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
图1是本申请的一示例性实施例示出的渲染系统的实施环境示意图。如图1所示,该渲染系统100包括多个应用(APP1、APP2、……APPN),渲染引擎和显示装置,当一个或多个应用需要进行渲染时,渲染引擎获取各应用的待绘制数据,对各应用所需要渲染的数据进行渲染,并输出值显示装置进行显示。其中,应用可以是本领域技术人员所知晓的各种应用程序,显示装置可以包括一个或多个显示屏。
随着智能网联汽车的发展,基于android(安卓)操作系统的车机越来越普及。而android系统对于3D实时渲染的支持是非常基础的,android系统当前的渲染有两种途径,一种是Google推出的skia,作为android系统官方的图形库,skia对android系统的兼容是非常友好的,但它只是2D向量图形处理库;另一种则是使用跨平台的图形API OpenGL ES,可是opengl的API都太过原始和基础,开发效率非常低。
虽然也可以使用成熟的商业引擎进行3D开发,如unity或unreal等跨平台的渲染引擎,再对android平台进行单独适配和打包。可是实际上,由于商业引擎需要支持跨操作系统平台兼容和适配,以及满足各个平台对引擎的需求,那么对指定的android平台存在适配不足的问题,且其均不能实现跨进程进行融合渲染的效果,不能满足用户需求。同时,市面上的所有渲染引擎集成方式都是以NDK的打包方式,难以满足车厂的高定制化渲染需求,如跨应用程序动画特效,多屏渲染等。
为解决这些问题,本申请的实施例分别提出一种渲染方法、一种渲染引擎、一种电子设备、一种计算机可读存储介质以及一种计算机程序产品,以下将对这些实施例进行详细描述。
请参阅图2,图2是本申请的一示例性实施例示出的渲染引擎的框图。该渲染引擎可以应用于图1所示的实施环境,并由该实施环境中的渲染引擎具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其它实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。
如图2所示,该示例性的渲染引擎200包括:
接口层201,包括多个绘制接口,用于获取多个待绘制数据,多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据;
客户端202,用于根据各待绘制数据生成绘制请求;
核心层203,用于基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存;
平台层204,用于对帧缓存进行三维渲染,得到各图层接口的显示内容。
其中,接口层通过提供的多个绘制接口来获取各应用的待绘制数据,和/或,一个应用的多个待绘制数据。例如,两个应用程序具有渲染需求,则接口层会获取两个应用程序的待绘制数据。又例如,一个应用程序具有两个渲染需求,如地图应用,一方面需要展示地图页面,一方面需要在地面上进行比如加油站、天气等信息的标注,则此时可以基于同一个应用的两个待绘制数据进行渲染。
在一实施例中,该渲染引擎可以适用OpenGL ES 3.x的GPU平台。
在一实施例中,待绘制数据包括但不限于camera数据(主视角方位数据)、renderable数据(位置数据、颜色数据)、ransform数据(交互数据),light数据(生命周期),skybox数据(天空盒子,数据流)和需要绘制的surface实例(窗口实例,动画实例)等中至少之一。
其中,客户端根据各待绘制数据生成绘制请求的方式可以采用本领域技术人员所知晓的方式实现,绘制请求包括但不限于窗口数据,绘制数据,交互数据,生命周期等中至少之一。
本实施例中的渲染引擎,对于多个应用的待绘制数据仅申请一个窗口Surface,并基于该窗口申请多个图层接口Layer,这样,能够实现即便某一个应用X并非是上层应用,但该应用X的3D动画也能够显示与显示面板上,或者将应用X的3D动画显示在任意其他的应用界面。
在一实施例中,核心层包括渲染管线,渲染管线包括管理线程和渲染线程,其中:
管理线程,用于根据帧缓存生成渲染指令,将渲染指令存储于预设环形队列以供渲染线程获取;
渲染线程,用于检测到预设环形队列中存在排队的渲染指令,获取渲染指令,通过调用平台层对渲染指令的帧缓存进行三维渲染。
通过将渲染管线拆分为管理线程和渲染线程,采用ECS(Entity ComponentSystem)的设计思想将资源和逻辑分离,能够提升渲染效率。核心层还设置有线程管理模块,依赖核心层的线程管理模块,针对不同的硬件动态配置线程数,尤其是多核硬件上使用work-steal的方式进行并行任务调度,极大提高渲染效率。
通过使用预设环形队列来存储渲染指令,能够减少锁的频繁使用,提高渲染执行效率。
在一实施例中,管理线程包括以下至少之一:
框架图实例,用于根据预设业务需求创建渲染层;
剔除模块,用于监听渲染操作,对绘制逻辑进行优化;
命令生成模块,用于响应于渲染线程的下一帧准备消息根据帧缓存生成渲染指令,帧缓存为下一帧;
预设环形队列,用于存储渲染指令,以供渲染线程获取;
通知模块,用于生成通知消息并发送至渲染线程,通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知。
其中,管理线程可以看作为主线程,其在渲染引擎初始化的时候会启动两个线程(管理线程和渲染线程)按照动态设置的帧率(预设帧率)进行渲染循环,当客户端管理层有新的请求(存在新的绘制请求),第一个线程(主线程)会从update开始循环执行直到该请求被停止或异常。主线程在一帧开始绘制之前,会做一些准备工作,比如通知切换context(渲染上下文),通知Driver端(渲染执行端)停止上一帧的绘制并释放对应资源做好这一帧的绘制准备。第二个线程(渲染线程)是真正的渲染线程,收到主线程的通知消息,开始做准备工作,包括从渲染缓冲池获取对应的target(渲染指令),切换context(渲染上下文),设置窗口相关参数,准备下一帧资源等;或者停止当前帧绘制,释放当前帧资源等。
在一实施例中,框架图实例(FrameGraph实例)会根据预先设定的业务需求创建多个渲染通道(渲染层,Renderpass),比如设置MSAA(MultiSampling Anti-Aliasing,多采样抗混叠),然后针对每个渲染通道定义输入或输出的资源数据结构,包括纹理,目标等资源。
对绘制逻辑进行优化包括但不限于对绘制逻辑进行优化,如无效剔除等。
在一实施例中,渲染线程包括以下至少之一:
资源准备模块,用于响应于通知消息切换渲染上下文、停止当前帧绘制,以及准备帧缓存的渲染资源;
监听模块,用于监听预设环形队列中的渲染指令;
指令获取模块,用于获取渲染指令,通过调用平台层对渲染指令的帧缓存进行三维渲染;
完成提示模块,用于向命令生成模块发送下一帧准备消息,以触发命令生成模块生成帧缓存的下一帧的渲染指令。
其中,当前帧为渲染模块当前渲染的帧X,下一帧即为帧缓存M,帧缓存的下一帧Y的关系为X<M<Y,换句话说,X为M的前一帧,Y为M的后一帧。
在一实施例中,平台层包括opengl接口,通过调用平台层对渲染指令的帧缓存进行三维渲染也即可以为调用对应的opengl接口进行渲染。
请参阅图3,图3是本申请的一示例性实施例示出的渲染管线的流程图。以一帧渲染的流程为例,如图3所示,该示例性的渲染管线的流程包括:
在渲染引擎初始化的时候会启动两个线程(管理线程和渲染线程)按照动态设置的帧率进行渲染循环,当客户端管理层有新的请求(绘制请求),第一个线程(主线程,管理线程)会从update开始循环(开始渲染)执行直到该请求被停止或异常(结束渲染)。主线程在一帧开始绘制之前,会做一些准备工作,比如切换context,通知Driver端停止上一帧的绘制并释放对应资源做好这一帧的绘制准备(通知Driver端准备接受渲染指令command)。第二个线程(渲染线程)是真正的渲染线程,收到主线程的通知,开始做准备工作,包括从渲染缓冲池获取对应的target,切换context,设置窗口相关参数,准备下一帧资源等等;或者停止当前帧绘制,释放当前帧资源等。
执行渲染阶段,按照ECS进行设计,首先会创建一个FrameGraph实例,然后根据业务需求创建多个渲染通道(添加renderpass),比如设置MSAA(msaa),然后针对每个渲染通道定义输入或输出的资源数据结构,包括纹理,目标等资源,接下来对资源的操作进行监听,对渲染的操作进行监听(compile),同时对绘制逻辑进行优化,如无效剔除等。最后生成指令(execute,生成command),发送到commandstream环形队列(Command Queue)中等待渲染线程(Driver)获取,环形队列主要用于减少锁的频繁使用,提高渲染执行效率。
当渲染线程检测到环形队列有指令排队,会立即取出该指令,将资源装配到对应的buffer(将准备好的所述帧缓存的渲染资源装配至预设资源缓存空间),激活shader程序(着色模块),设置对应的缓冲区(显示内容缓存空间),然后调用对应的opengl接口进行渲染。渲染drawcall提交完成,通知主线程准备下一帧的命令(发送下一帧准备消息)。其中,渲染驱动端(Driver)会调用Plarform、vertexbuffer、indexbuffer、Primitive、Program、Texture、Render Target、Fence、window。模块按照对应图形库(本引擎为OpenGL)的渲染要求进行数据组织,设置着色器,导入对应纹理、设置渲染目标以及设置窗口最终提交到GPU侧进行渲染。Plarform平台模块主要负责屏蔽各个图形接口调用,比如OpenGL和Vulkan等。Vertexbuffer顶点缓冲和indexbuffer索引缓冲主要负责顶点数据块的组织和存储。Primitive原始类型主要用于抽象点、线和三角形的绘制和设置。Program是着色器程序在GPU上执行的载体程序,主要用于管理附着的着色器,CPU端与GPU端数据传递等。Texture纹理模块主要负责管理纹理信息和纹理数据组织。Render Target渲染目标主要用于存储基础颜色、法线和环境光遮蔽等信息。Fence主要用于同步渲染操作。Window主要用于屏蔽操作系统窗口差异化的使用方式。
主线程收到完成消息,释放生命周期结束的资源,标记结束,通知Driver结束。自此一帧的渲染流程结束,循环开始执行下一帧的渲染流程。
该渲染管线在管理方面,采用ECS的设计思想将资源和逻辑分离。在效率方面,构建framegraph对逻辑链路进行动态优化,让每一帧在真正执行的时候能够做到只执行必须执行的逻辑;另外依赖核心层的线程管理模块,针对不同的硬件动态配置线程数,尤其是多核硬件上使用work-steal(工作窃取)的方式进行并行任务调度,极大提高渲染效率。
在一实施例中,核心层还包括显示控制模块,若显示装置为包括多个显示屏的多屏交互装置,显示控制模块用于根据获取的内存描述符,以及多屏交互装置的显示属性确定各显示屏的当前显示画面,当前显示画面包括至少一个图层接口的至少一部分显示内容。
其中内存描述符fd用于标识显示内容的存储地址。由于不同的硬件平台多屏交互的实现方案不同,因此该显示控制模块本身还会进行适配。如果硬件平台不支持多屏交互,那么显示控制模块Display会将该fd传递给屏幕驱动,通过直接送屏的方式实现;如果硬件平台支持多屏交互,那么显示控制模块Display将适配该平台的方案。也即将上述实施例所渲染得到的显示内容进行分屏显示。
在一实施例中,显示控制模块还用于:
响应于显示画面移动指令,对各显示屏的当前显示画面进行移动,以使至少一个显示屏显示至少两个图层接口的显示内容,显示画面移动指令包括移动对象起始信息,移动距离信息和移动方向信息。
显示画面移动指令可以是用户通过语音、动作等方式与渲染引擎进行交互,使得渲染引擎知晓移动对象起始信息、移动距离信息和移动方向信息,进而确定起始移动点,并根据移动距离信息和移动方向信息进行当前显示画面的移动,在移动过程中,可以是直接将一个待绘制数据所得到的显示内容显示在一个显示屏上,也可以显示显示内容的移动过程,将至少两个待绘制数据的显示内容的一部分显示在一个显示屏,也即某一显示屏上所显示的显示画面是两个显示内容的一部分内容。
在一实施例中,若显示装置为包括1个显示屏,根据获取的内存描述符通过直接送屏的方式显示各图层接口的显示内容。此时,可以采用本领域技术人员所知晓的方式实现显示内容的显示。
采用本实施例提供的渲染引擎,能够实现多屏渲染功能,请参阅图4,图4是本申请的一示例性实施例示出的多屏渲染功能流程图。以显示装置为两个显示屏,待绘制数据来自于两个应用(APP1和APP2)为例,如图4所示,该示例性的多屏渲染功能包括:
多屏渲染即在不同的屏幕上展示不同的渲染内容(各待绘制数据的显示内容),比如地图的绘制,需要保证在主屏上绘制导航的显示信息不能受到遮挡,而在副屏上可以操作添加途经点或者展示其他一些显示信息。实现该功能,首先需要准备主屏和副屏需要渲染的3D数据,通过ClientManagerService生成两个Layer实例(一个画布),创建framebuffer(显示内容缓存空间)经由渲染管线Pipline进行离线绘制,不同的是,这次绘制的内容是直接渲染到两段连续的共享内存上,分别保存Layer1的显示内容和Layer2的显示内容,然后返回内存的描述符fd,再将描述符fd传递到Display模块(显示控制模块)。该显示控制模块的主要职责是进行多屏交互的,由于不同的硬件平台多屏交互的实现方案不同,因此该模块本身还会进行适配。如果硬件平台不支持多屏交互,那么Display会将该fd传递给屏幕驱动,通过直接送屏的方式实现;如果硬件平台支持多屏交互,那么Display将适配该平台的方案。
在一实施例中,平台层包括以下至少之一:
渲染模块,用于对帧缓存进行三维渲染,得到各图层接口的显示内容,渲染模块可以为opengl接口等本领域技术人员所知晓的模块;
显示内容缓存空间,用于存储各图层接口的显示内容,其中,各图层接口的显示内容存储于显示内容缓存空间中连续的共享内存区块;
内存描述符发送模块,用于向核心层发送显示内容的内存描述符。
其中,平台层还可以包括其他第三方库、EGL(本地平台接口)等本领域技术人员所需要添加的对象。
平台层要与操作系统和硬件平台相关,以支撑跨平台的能力以及特定平台android系统的硬件能力。
请参阅图5,图5是本申请的一示例性实施例示出的跨进程动画处理流程图。以两个应用(APP1和APP2)的流程为例,如图5所示,该示例性的跨进程动画处理包括:
图5所示的流程处于整个渲染引擎的客户端管理层,这里主要描述跨进程动画的处理流程。
以多个待绘制数据包括多个应用的待绘制数据为例,对帧缓存进行三维渲染之前,各应用APP1和APP2分别向ClientManager发送过渡动画的起点显示Surface和终点显示Surface实例,SurfaceManager申请临时窗口(Surface1和Surface2),并分别申请临时图层接口(Layer1和Layer2),SurfaceManager拿到后通过Layer模块生成两个Layer实例(Layer1和Layer2),然后将Layer1的动画参数和Layer2的动画参数传入Animation模块生成对应的动画实例(生成过渡动画的图层实例),再一起给到Layer模块并绑定到场景模块Scene。最后经由应用程序APP传递的绘制内容数据(待绘制数据RenderData、Transfer)一起导入渲染管线(Pipline)进行渲染,以实现帧缓存(待绘制数据)进行三维渲染的动画特效。。在生成Layer的时候,原有的临时窗口Surface1和临时窗口Surface2中至少之一便可以释放,所以在APP1关闭的时候,该过渡动画过程完全不受应用程序的生命周期影响。
例如,在android上实现天气特效时,通常会只在应用程序内部实现,但在车载行业,通常会要求天气特效可以出现在任意的应用程序界面,由于android操作系统是进程隔离的,应用程序内部的特效无法跳出自身的生命周期,要实现这类跨进程动画只有依靠android源生的WindowManager,或者TransitionManager的帮助,可是要以此实现3D的动画特效目前是没有现成方案的。由于本实施例提供的渲染引擎运行在android操作系统的native层,因此可以绕过android的framework,直接向SurfaceFlinger申请Surface(新的画布(窗口),与前述实施例中的Surface1和Surface2不同),该Surface可以定义显示层级为最高,然后传递该Surface到Layer模块申请一个Layer,然后通过上层应用程序提供的绘制数据和动画要求,向Animation模块申请得到具体的动画实例,最后将绘制数据、动画数据绑定到场景模块,经由渲染管线进行实时3D渲染。由于显示层级不受上层应用程序的影响,一个全局3D天气动画便可以实现。
又例如,提供另外一种高度定制化的动画体验,相关技术中在两个独立的应用程序之间进行指定区域的3D过渡动效,目前同样没有现成方案。而采用本实施例提供的渲染引擎则可以通过如下方式实现:
首先,两个应用程序APP分别向ClientManager发送过渡动画的起点显示Surface和终点显示Surface实例,SurfaceManager拿到后通过Layer模块生成两个Layer实例,然后将Layer1的动画参数和Layer2的动画参数传入Animation模块生成对应的动画实例,再一起给到Layer模块并绑定到场景模块。最后经由应用程序APP传递的绘制内容数据一起导入渲染管线进行渲染。在生成Layer的时候,原有的Surface便可以释放,所以在APP1关闭的时候,该过渡动画过程完全不受应用程序的生命周期影响。
请参阅图6,图6是本申请的一示例性实施例示出的一种具体的渲染引擎的架构图。如图6所示,该示例性的具体的渲染引擎的架构图主要分为四个层次,由上自下分别为接口层,客户端管理层,核心层和平台层。其部署方式和传统的引擎方式不同,该引擎作为一个独立进程在android的native层运行,通过跨进程方式与需要绘制的应用程序进行交互。
接口层主要负责提供绘制接口,由应用程序整理并提供Camera数据(摄像机角度,人眼,主视角的方位),Renderable数据(位置和颜色),Transform数据(交互),Light数据(生命周期),Skybox数据(天空盒子,一张一张图,数据流)和需要绘制的Surface实例(画布,窗口)。
客户端管理层ClientManager主要负责统一管理不同应用程序的绘制请求,包括窗口数据,绘制数据,交互数据,生命周期等。
核心层主要关注渲染部分,包括传统的场景管理Scene,图层管理Layer,粒子系统Partical,渲染管线Pipline,动画系统Animation,资产管理Resource、显示控制模块Display、内存管理、Surface管理、线程管理、控制事件、音频Audio、文件管理FILE IO等。
平台层主要与操作系统和硬件平台相关,以支撑跨平台的能力以及特定平台android系统的硬件能力。其可以搭载有OpenGL es、共享内存、EGL以及其他三方库等。
本实施例提供的渲染引擎运行于安卓系统的系统运行库层(native层),包括用于获取多个待绘制数据的接口层,根据各待绘制数据生成绘制请求的客户端,基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存的核心层以及对帧缓存进行三维渲染,得到各图层接口的显示内容的平台层,能够适配于android平台,能够实现跨进程进行融合渲染的效果,满足用户需求。
同时,该基于android系统的渲染引擎,可以提高android开发3D实时渲染应用的效率,同时支持android系统高定制化渲染要求。可以为android开发者在开发高质量3D渲染应用使用,适用于OpenGL ES 3.x的GPU平台。
本实施例提供的渲染引擎可以有效地提高开发效率,使得开发人员只需要关注应用本身的功能实现,而不再需要使用原始的android系统支持的API开发3D实时渲染应用,或者那些庞大的商业渲染引擎。
它可以支持不同的应用程序实现高度定制化的功能,如跨应用程序动画特效,多屏渲染等等其他渲染引擎无法做到的定制化功能,同时在特定android平台硬件的支撑下,可以在运行效率上得到更大提升。
请参阅图7,图7是本申请的一示例性实施例示出的渲染方法的流程图。该方法可以应用于图1所示的实施环境,并由该实施环境中的渲染引擎具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其它实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。
如图7所示,在一示例性的实施例中,服务激活管理方法至少包括步骤S701至步骤S704,详细介绍如下:
步骤S701,获取多个待绘制数据,其中,多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据。
步骤S702,根据各待绘制数据生成的绘制请求。
步骤S703,基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存。
步骤S704,对帧缓存进行三维渲染,得到各图层接口的显示内容。
在一实施例中,对帧缓存进行三维渲染之前,该渲染方法还包括:
响应于获取的下一帧准备消息根据帧缓存生成渲染指令,将渲染指令存储于预设环形队列以供渲染线程获取;
发送通知消息,通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知;
响应于通知消息切换渲染上下文、停止当前帧绘制,以及准备帧缓存的渲染资源;
监听预设环形队列中的渲染指令,检测到预设环形队列中存在排队的渲染指令,获取渲染指令,以触发对渲染指令的帧缓存进行三维渲染。
在一实施例中,获取渲染指令之后,渲染方法还包括:
将准备好的帧缓存的渲染资源装配至预设资源缓存空间;
激活着色模块并设置显示内容缓存空间,以触发对渲染指令的帧缓存进行三维渲染;
若三维渲染完成,发送下一帧准备消息,以触发生成帧缓存的下一帧的渲染指令。
在一实施例中,多个待绘制数据包括多个应用的待绘制数据,对帧缓存进行三维渲染之前,渲染方法还包括:
各应用分别申请临时窗口,并分别申请临时图层接口,生成过渡动画的图层实例;
基于各图层接口的涂层实例生成动画实例,将各动画实例绑定至场景层,以实现帧缓存进行三维渲染的动画特效。
在一实施例中,分别申请临时图层接口之后,渲染方法还包括释放各临时窗口。
需要说明的是,上述实施例所提供的渲染方法与上述实施例图2-图6所提供的渲染引擎属于同一构思,其中各个步骤的具体方式已经在渲染引擎实施例中进行了详细描述,此处不再赘述。上述实施例所提供的渲染方法在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将渲染方法的步骤依据渲染引擎的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。
本实施例提供的应用于安卓系统的系统运行库层的渲染方法,通过获取多个待绘制数据,根据各待绘制数据生成的绘制请求,基于绘制请求申请一个窗口,以及申请各待绘制数据的图层接口,根据各绘制请求创建帧缓存,对帧缓存进行三维渲染,得到各图层接口的显示内容,能够适配于android平台,能够实现跨进程进行融合渲染的效果,满足用户需求。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各个实施例中提供的渲染方法。
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图8示出的电子设备的计算机系统800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(Central Processing Unit,CPU)801,其可以根据存储在只读存储器(Read-Only Memory,ROM)802中的程序或者从储存部分808加载到随机访问存储器(Random Access Memory,RAM)803中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(Input/Output,I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分807;包括硬盘等的储存部分808;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入储存部分808。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机的处理器执行时,使计算机执行如前所述的渲染方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的渲染方法。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (15)
1.一种渲染引擎,其特征在于,所述渲染引擎运行于安卓系统的系统运行库层,所述渲染引擎包括:
接口层,包括多个绘制接口,用于获取多个待绘制数据,所述多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据;
客户端,用于根据各所述待绘制数据生成绘制请求;
核心层,用于基于所述绘制请求申请一个窗口,以及申请各所述待绘制数据的图层接口,根据各所述绘制请求创建帧缓存;
平台层,用于对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容。
2.如权利要求1所述的渲染引擎,其特征在于,所述核心层包括渲染管线,所述渲染管线包括管理线程和渲染线程,其中:
所述管理线程用于根据所述帧缓存生成渲染指令,将所述渲染指令存储于预设环形队列以供所述渲染线程获取;
所述渲染线程用于检测到所述预设环形队列中存在排队的所述渲染指令,获取所述渲染指令,通过调用所述平台层对所述渲染指令的帧缓存进行三维渲染。
3.如权利要求2所述的渲染引擎,其特征在于,所述管理线程包括以下至少之一:
框架图实例,用于根据预设业务需求创建渲染层;
剔除模块,用于监听渲染操作,对绘制逻辑进行优化;
命令生成模块,用于响应于所述渲染线程的下一帧准备消息根据所述帧缓存生成渲染指令,所述帧缓存为下一帧;
预设环形队列,用于存储所述渲染指令,以供所述渲染线程获取;
通知模块,用于生成通知消息并发送至所述渲染线程,所述通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知。
4.如权利要求3所述的渲染引擎,其特征在于,所述渲染线程包括以下至少之一:
资源准备模块,用于响应于所述通知消息切换渲染上下文、停止当前帧绘制,以及准备所述帧缓存的渲染资源;
监听模块,用于监听所述预设环形队列中的渲染指令;
指令获取模块,用于获取所述渲染指令,通过调用所述平台层对所述渲染指令的帧缓存进行三维渲染;
完成提示模块,用于向所述命令生成模块发送下一帧准备消息,以触发所述命令生成模块生成所述帧缓存的下一帧的渲染指令。
5.如权利要求1-4任一项所述的渲染引擎,其特征在于,所述核心层还包括显示控制模块,若显示装置为包括多个显示屏的多屏交互装置,所述显示控制模块用于根据获取的内存描述符,以及所述多屏交互装置的显示属性确定各所述显示屏的当前显示画面,所述当前显示画面包括至少一个图层接口的至少一部分显示内容。
6.如权利要求5所述的渲染引擎,其特征在于,所述显示控制模块还用于:
响应于显示画面移动指令,对各所述显示屏的当前显示画面进行移动,以使至少一个所述显示屏显示至少两个图层接口的显示内容,所述显示画面移动指令包括移动对象起始信息,移动距离信息和移动方向信息。
7.如权利要求5所述的渲染引擎,其特征在于,若显示装置为包括1个显示屏,根据获取的内存描述符通过直接送屏的方式显示各所述图层接口的显示内容。
8.如权利要求1-4任一项所述的渲染引擎,其特征在于,所述平台层包括以下至少之一:
渲染模块,用于对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容;
显示内容缓存空间,用于存储各所述图层接口的所述显示内容,其中,各所述图层接口的显示内容存储于所述显示内容缓存空间中连续的共享内存区块;
内存描述符发送模块,用于向所述核心层发送所述显示内容的内存描述符。
9.一种渲染方法,其特征在于,所述渲染方法应用于安卓系统的系统运行库层,所述渲染方法包括:
获取多个待绘制数据,所述多个待绘制数据包括以下至少之一,多个应用的待绘制数据,一个应用的多个待绘制数据;
根据各所述待绘制数据生成的绘制请求;
基于所述绘制请求申请一个窗口,以及申请各所述待绘制数据的图层接口,根据各所述绘制请求创建帧缓存;
对所述帧缓存进行三维渲染,得到各所述图层接口的显示内容。
10.如权利要求9所述的渲染方法,其特征在于,对所述帧缓存进行三维渲染之前,所述渲染方法还包括:
响应于获取的下一帧准备消息根据所述帧缓存生成渲染指令,将所述渲染指令存储于预设环形队列以供渲染线程获取;
发送通知消息,所述通知消息包括渲染线程切换渲染上下文通知、停止当前帧绘制通知,以及进行下一帧绘制准备通知;
响应于所述通知消息切换渲染上下文、停止当前帧绘制,以及准备所述帧缓存的渲染资源;
监听所述预设环形队列中的渲染指令,检测到所述预设环形队列中存在排队的所述渲染指令,获取所述渲染指令,以触发对所述渲染指令的帧缓存进行三维渲染。
11.如权利要求10所述的渲染方法,其特征在于,获取所述渲染指令之后,所述渲染方法还包括:
将准备好的所述帧缓存的渲染资源装配至预设资源缓存空间;
激活着色模块并设置显示内容缓存空间,以触发对所述渲染指令的帧缓存进行三维渲染;
若三维渲染完成,发送下一帧准备消息,以触发生成所述帧缓存的下一帧的渲染指令。
12.如权利要求9所述的渲染方法,其特征在于,所述多个待绘制数据包括多个应用的待绘制数据,对所述帧缓存进行三维渲染之前,所述渲染方法还包括:
各所述应用分别申请临时窗口,并分别申请临时图层接口,生成过渡动画的图层实例;
基于各所述图层接口的涂层实例生成动画实例,将各所述动画实例绑定至场景层,以实现所述帧缓存进行三维渲染的动画特效。
13.如权利要求9所述的渲染方法,其特征在于,分别申请临时图层接口之后,所述渲染方法还包括释放各所述临时窗口。
14.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求9至13中任一项所述的渲染方法。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行权利要求9至13中任一项所述的渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210935720.1A CN115393505A (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、引擎、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210935720.1A CN115393505A (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、引擎、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115393505A true CN115393505A (zh) | 2022-11-25 |
Family
ID=84118505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210935720.1A Pending CN115393505A (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、引擎、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115393505A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170883A (zh) * | 2023-11-02 | 2023-12-05 | 西安芯云半导体技术有限公司 | 渲染显示的方法、装置、设备及存储介质 |
CN117492681A (zh) * | 2023-12-29 | 2024-02-02 | 成都小唱科技有限公司 | 一种基于Qt的分屏显示方法、装置、计算机设备及介质 |
-
2022
- 2022-08-04 CN CN202210935720.1A patent/CN115393505A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170883A (zh) * | 2023-11-02 | 2023-12-05 | 西安芯云半导体技术有限公司 | 渲染显示的方法、装置、设备及存储介质 |
CN117170883B (zh) * | 2023-11-02 | 2024-01-30 | 西安芯云半导体技术有限公司 | 渲染显示的方法、装置、设备及存储介质 |
CN117492681A (zh) * | 2023-12-29 | 2024-02-02 | 成都小唱科技有限公司 | 一种基于Qt的分屏显示方法、装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109260708B (zh) | 地图渲染方法、装置以及计算机设备 | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
US10127628B2 (en) | Method and system to virtualize graphic processing services | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
CN115393505A (zh) | 渲染方法、引擎、电子设备及存储介质 | |
US8723875B2 (en) | Web-based graphics rendering system | |
CN111400024B (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
US20100289804A1 (en) | System, mechanism, and apparatus for a customizable and extensible distributed rendering api | |
JP5166552B2 (ja) | グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート | |
US20070035545A1 (en) | Method for hybrid rasterization and raytracing with consistent programmable shading | |
EP2661737B1 (en) | Coordinated 2-dimensional and 3-dimensional graphics processing | |
JP2015524092A (ja) | グラフィックス処理におけるパッチされたシェーディング | |
CN110515657B (zh) | 用于图形处理的间接命令缓冲区 | |
CN103679813B (zh) | 三维数字地球的构建方法以及三维数字地球系统 | |
CN114528090A (zh) | 基于Vulkan实现图形渲染的方法及相关装置 | |
JP2024061779A (ja) | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ | |
CN114445257A (zh) | 流式传输利用无损或有损压缩进行压缩的光场 | |
CN111402349B (zh) | 渲染方法、渲染装置和渲染引擎 | |
CN117707676A (zh) | 窗口渲染方法、装置、设备、存储介质及程序产品 | |
WO2023160041A1 (zh) | 图像渲染方法、装置、计算机设备、计算机可读存储介质以及计算机程序产品 | |
CN117036562A (zh) | 一种三维显示方法和相关装置 | |
WO2024027237A1 (zh) | 渲染的优化方法、电子设备和计算机可读存储介质 | |
CN118283331A (zh) | 播放处理方法、装置和计算机可读存储介质 | |
CN116402933A (zh) | 多视窗的渲染方法、装置、计算机设备、存储介质及车辆 | |
CN116059643A (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 |