一种渲染系统、方法和电子设备技术方案

技术编号:34184279 阅读:13 留言:0更新日期:2022-07-17 13:51
本申请实施例提供一种渲染系统、渲染方法和电子设备,所述系统包括:共享内存,用于存放渲染指令;渲染端,用于生成所述渲染指令,将所述渲染指令存放于所述共享内存;渲染进程,用于在所述共享内存中获取每个所述渲染端的渲染指令,根据每个所述渲染端的渲染指令和每个所述渲染端的资源对象生成每个所述渲染端的渲染结果,将所述渲染结果发送到对应的所述渲染端。染端。染端。

【技术实现步骤摘要】
一种渲染系统、方法和电子设备


[0001]本申请涉及图像处理
,具体而言,涉及一种渲染系统、方法和电子设备。

技术介绍

[0002]多线程渲染已经是当代渲染引擎通常的做法,其目的是使得CPU和GPU能够更好的协同工作。单线程渲染的流程是:在一帧画面的准备中,先由CPU准备绘制数据和指令,再将这些数据和指令提交给GPU绘制并等待,二者串行且有先后顺序,也就是说GPU在CPU准备好绘制数据之前需要等待,而提交GPU数据及指令并等待绘制完成的时候,CPU也要等待GPU完成其工作。多线程渲染解决了这个问题,CPU准备数据和绘制指令放在在主线程做不变,而将提交数据和指令并等待GPU绘制完成放到另外一个单独的线程中,这样一来,主线程不必等待分线程完成就可以去组织下一帧的数据,一旦发现分线程完成其绘制工作,立刻把下一帧的数据给到其绘制,然后立刻去准备下下一帧的数据和指令。
[0003]但是,现有的多线程渲染技术在应对多个渲染需求时速度较慢。

技术实现思路

[0004]本申请实施例的目的在于提供一种渲染系统,方法,能够在应对多个渲染需求时快速生成渲染结果。
[0005]第一方面,本申请实施例提供了一种渲染系统,该系统包括:
[0006]共享内存,用于存放渲染指令;
[0007]渲染端,用于生成所述渲染指令,将所述渲染指令存放于所述共享内存;
[0008]渲染进程,用于在所述共享内存中获取每个所述渲染端的渲染指令,根据每个所述渲染端的渲染指令和每个所述渲染端的资源对象生成每个所述渲染端的渲染结果,将所述渲染结果发送到对应的所述渲染端。
[0009]在上述实现过程中,与现有技术不同的是,将渲染进程从渲染端独立出来,由一个渲染进程统一处理多个渲染端的渲染指令,渲染进程通过共享内存获取多个渲染端生成的渲染指令,根据渲染指令以及每个渲染端对应的资源对象生成每个渲染端的渲染结果。相比于现有技术,省去了多个渲染端在渲染时进行进程切换带来的计算机资源损耗以及处理时间,能够在应对多个渲染需求时快速生成渲染结果。
[0010]进一步地,所述渲染进程包括多个渲染线程;
[0011]每个所述渲染线程用于通过所述共享内存获取一个所述渲染端的渲染指令,根据一个所述渲染端的渲染指令和一个所述渲染端的资源对象生成一个所述渲染端的所述渲染结果。
[0012]在上述实现过程中,渲染进程中包括多个渲染线程,每个渲染线程通过共享内存获取一个渲染端的渲染指令并生成其对应的渲染结果。基于上述实施方式,能够使得渲染进程在宏观时间内同时处理多个渲染端的渲染指令,提高渲染速度。
[0013]进一步地,所述渲染进程还包括资源共享区;
[0014]所述资源共享区用于接收多个所述渲染端发送的多个所述渲染资源,在内存或显存中创建多个所述渲染资源对应的资源对象,相同内容的渲染资源在所述内存或显存中对应同一所述资源对象;
[0015]每个所述渲染线程还用于获取一个渲染端的渲染资源的第一标识,根据所述第一标识在所述内存或显存中获取所述第一标识对应的第一资源对象。
[0016]在上述实现过程中,考虑到现有技术中,不同的渲染端可能是利用同一个资源对象生成不同的渲染结果,因此,首先获取渲染端发送的多个渲染资源,在内存或显存中创建该渲染资源对应的资源对象,在上述过程中对渲染资源进行了去重,相同内容的渲染资源在内存或显存中对应同一资源对象。基于上述实施方式,能够减少内存的占有,避免内存超过极限值,提高渲染进程的渲染速度。
[0017]进一步地,每个所述渲染线程具有其对应的渲染上下文,所述渲染上下文用于记录对应的线程的处理器相关参数。
[0018]在上述实现过程中,每个渲染线程需要占用处理器的资源来执行指令,处理器需要处理不同的线程,每个渲染线程具有其对应的上下文,上下文记录处理器相关参数,基于此,处理器可以快速通过渲染线程对应的渲染参数获取当先渲染线程的处理进度,从而继续运行该渲染线程。
[0019]进一步地,所述资源共享区还用于获取每个所述资源对象被多个所述渲染线程的引用次数,释放引用次数为0的资源对象对应的所述内存或所述显存。
[0020]在上述实现过程中,资源共享区还用于管理多个资源对象在内存或显存中的状态,当引用次数为0时,说明该资源对象以及不再被任何渲染线程所需要,因此,将该资源对象进行释放。基于上述实施方式,能够减少渲染进程运行时所占用的整体内存或显存,节省计算机的资源,进一步提高渲染效率。
[0021]进一步地,所述共享内存为环状内存区,所述渲染进程和多个所述渲染端通过无锁机制访问所述环状内存区。
[0022]在上述实现过程中,通过环状内存区,可以实现在多个渲染端生成渲染指令的短时间内使渲染进程获取到该指令并且根据该指令生成渲染结果。
[0023]进一步地,所述渲染进程还包括:渲染主线程;
[0024]每个所述渲染线程还用于根据一个渲染端的渲染指令和所述资源对象进行预处理,在每帧画面对应的渲染指令执行结束时发送信号所述主线程;
[0025]渲染主线程,所述渲染主线程用于根据所述信号对所述渲染资源进行渲染,得到渲染结果。
[0026]在上述实现过程中,整个渲染过程分为预处理阶段和渲染阶段,由于渲染阶段占用的计算机资源最多,将渲染的任务交给渲染进程中的渲染主线程负责,能够避免在渲染过程中处理器在多个渲染线程中进行切换时产生的计算机资源浪费,进一步提高渲染速度。
[0027]进一步地,所述渲染进程还用于将所述渲染结果的第二标识发送到所述渲染端,以使所述渲染端根据所述第二标识在内存或显存中获取所述渲染结果。
[0028]在上述实现过程中,渲染端和渲染进程中的渲染结果在内存或显存中对应统一对象,能够使得渲染端快速获取到渲染结果同时节省计算机的存储空间。
[0029]第二方面,本申请实施例提供一种渲染方法,应用于第一方面的渲染系统中的渲染进程,包括:
[0030]在共享内存中获取多个所述渲染端存放的渲染指令,根据多个所述渲染端的渲染指令和渲染端的资源对象生成渲染结果,将所述渲染结果发送到所述渲染端。
[0031]在上述实现过程中,与现有技术不同的是,将渲染进程从渲染端独立出来,由一个渲染进程统一处理多个渲染端的渲染指令,渲染进程通过共享内存获取多个渲染端生成的渲染指令,根据渲染指令以及每个渲染端对应的资源对象生成每个渲染端的渲染结果。相比于现有技术,省去了多个渲染端在渲染时进行进程切换带来的计算机资源损耗以及处理时间,能够在应对多个渲染需求时快速生成渲染结果。
[0032]第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
[0033]本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种渲染系统,其特征在于,包括:共享内存,用于存放渲染指令;渲染端,用于生成所述渲染指令,将所述渲染指令存放于所述共享内存;渲染进程,用于在所述共享内存中获取每个所述渲染端的渲染指令,根据每个所述渲染端的渲染指令和每个所述渲染端的资源对象生成每个所述渲染端的渲染结果,将所述渲染结果发送到对应的所述渲染端。2.根据权利要求1所述的渲染系统,其特征在于,所述渲染进程包括多个渲染线程;每个所述渲染线程用于通过所述共享内存获取一个所述渲染端的渲染指令,根据一个所述渲染端的渲染指令和一个所述渲染端的资源对象生成一个所述渲染端的所述渲染结果。3.根据权利要求2所述的渲染系统,其特征在于,所述渲染进程还包括资源共享区;所述资源共享区用于接收多个所述渲染端发送的多个渲染资源,在内存或显存中创建多个所述渲染资源对应的资源对象,相同内容的渲染资源对应同一所述资源对象;每个所述渲染线程还用于获取一个渲染端的渲染资源的第一标识,根据所述第一标识在所述内存或显存中获取所述第一标识对应的第一资源对象。4.根据权利要求2所述的渲染系统,其特征在于,每个所述渲染线程具有其对应的渲染上下文,所述渲染上下文用于记录对应的线程的处理器相关参数。5.根据权利要求3所述的渲染系统,其特征在于,所述资源共享区还用于获取每个所述资源对象被多个所...

【专利技术属性】
技术研发人员:邱辉平孙中伟
申请(专利权)人:广东三维家信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1