渲染方法、装置、设备和存储介质转让专利

申请号 : CN202110851281.1

文献号 : CN115700484A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄安成龙欣

申请人 : 阿里巴巴新加坡控股有限公司

摘要 :

本发明实施例提供一种渲染方法、装置、设备和存储介质,该方法包括:前端渲染设备向后端渲染设备发送多个渲染指令和多个同步标识点,多个同步标识点被依次穿插在多个渲染指令之间。前端渲染设备接收后端渲染设备发送的第一同步标识点,后端渲染设备在完成位于第一同步标识点之前的渲染指令时向前端渲染设备反馈第一同步标识点。响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,前端渲染设备根据第二同步标识点与第一同步标识点的位置顺序,确定后端渲染设备对位于第二同步标识点之前的渲染指令的完成状态。该方案中,前端渲染设备不必频繁地向后端渲染设备发送同步请求便可以得知后端渲染设备的渲染状态,节省了通信开销。

权利要求 :

1.一种渲染方法,其特征在于,应用于前端渲染设备,所述方法包括:

向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;

接收所述后端渲染设备发送的第一同步标识点,其中,所述后端渲染设备在完成位于所述第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;

响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。

2.根据权利要求1所述的方法,其特征在于,所述根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,包括:若所述第二同步标识点位于所述第一同步标识点之前,则直接向所述前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令。

3.根据权利要求1所述的方法,其特征在于,所述根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,包括:若所述第二同步标识点位于所述第一同步标识点之后,则等待接收到所述后端渲染设备发送的所述第二同步标识点后,向所述前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令。

4.根据权利要求1所述的方法,其特征在于,所述多个渲染指令用于渲染一帧画面。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若确定位于第三同步标识点之前的渲染指令已经被所述后端渲染设备完成,则向所述后端渲染设备发送画面获取请求;

接收所述后端渲染设备发送的与所述画面获取请求对应的渲染画面其中;所述第三同步标识点是所述多个同步标识点中的任一个。

6.一种渲染方法,其特征在于,应用于后端渲染设备,所述方法包括:

接收前端渲染设备发送的多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;

在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点,以使所述前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

将所述多个渲染指令和所述多个同步标识点顺序写入任务队列中;

若当前从所述任务队列中读取到一条渲染指令,则执行读取到的渲染指令;

若当前从所述任务队列中读取到一个同步标识点,则将读取到的同步标识点发送到所述前端渲染设备。

8.一种渲染装置,其特征在于,位于前端渲染设备,包括:

发送模块,用于向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;

接收模块,用于接收所述后端渲染设备发送的第一同步标识点,其中,所述后端渲染设备在完成位于所述第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;

确定模块,用于响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。

9.一种渲染装置,其特征在于,位于后端渲染设备,包括:

接收模块,用于接收前端渲染设备发送的多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;

发送模块,用于在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点,以使所述前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。

10.一种渲染设备,其特征在于,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至5中任一项所述的渲染方法,或者执行如权利要求6或7所述的渲染方法。

11.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被渲染设备的处理器执行时,使所述处理器执行如权利要求1至5中任一项所述的渲染方法,或者执行权利要求6或7所述的渲染方法。

12.一种渲染方法,其特征在于,包括:

前端渲染设备向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;

所述后端渲染设备在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;

响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,所述前端渲染设备根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。

说明书 :

渲染方法、装置、设备和存储介质

技术领域

[0001] 本发明涉及图像处理技术领域,尤其涉及一种渲染方法、装置、设备和存储介质。

背景技术

[0002] 诸如一些游戏等应用程序,为提升用户体验,会设计非常逼真、复杂的画面。在渲染这些画面时,如果仅由用户终端设备进行渲染,由于用户终端设备的计算能力有限,会给用户终端设备带来过大的处理负载。因此,提供了一种前端和后端配合完成画面渲染的远程渲染方案。其中,前端和后端,也可以称为是用户端和服务端。
[0003] 在远程渲染方案中,简单来说就是前端将渲染指令一条条地通过网络传输到远端的后端,由后端进行画面渲染,并将最终渲染完的画面传递回前端。在此过程中,前端需要同步掌握后端的渲染情况,因此前端在向后端发出渲染指令后,会向后端发送同步请求,后端在接收到该同步请求后会检测所请求的渲染指令的执行情况,若已经完成,则直接把该结果反馈给前端,若未完成,则后端等待该渲染指令完成后再将执行结果反馈给前端。
[0004] 由此可见,前端在需要同步获得后端的渲染状态的过程中,由于前端与后端的通信距离往往比较远,通信交互导致的延时比较长,频繁的同步需求会导致很高的通信成本开销,最终导致前端的画面渲染速度较低,使得帧率降低。

发明内容

[0005] 本发明实施例提供一种渲染方法、装置、设备和存储介质,用以降低前后端同步渲染状态的通信开销,保证前端的帧率。
[0006] 第一方面,本发明实施例提供一种渲染方法,应用于前端渲染设备,所述方法包括:
[0007] 向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;
[0008] 接收所述后端渲染设备发送的第一同步标识点,其中,所述后端渲染设备在完成位于所述第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;
[0009] 响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0010] 第二方面,本发明实施例提供一种渲染装置,应用于前端渲染设备,所述装置包括:
[0011] 发送模块,用于向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;
[0012] 接收模块,用于接收所述后端渲染设备发送的第一同步标识点,其中,所述后端渲染设备在完成位于所述第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;
[0013] 确定模块,用于响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0014] 第三方面,本发明实施例提供一种前端渲染设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第一方面所述的渲染方法。
[0015] 第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被前端渲染设备的处理器执行时,使所述处理器至少可以实现如第一方面所述的渲染方法。
[0016] 第五方面,本发明实施例提供一种渲染方法,应用于后端渲染设备,所述方法包括:
[0017] 接收前端渲染设备发送的多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;
[0018] 在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点,以使所述前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0019] 第六方面,本发明实施例提供一种渲染装置,应用于后端渲染设备,所述装置包括:
[0020] 接收模块,用于接收前端渲染设备发送的多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;
[0021] 发送模块,用于在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点,以使所述前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0022] 第七方面,本发明实施例提供一种后端渲染设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第五方面所述的渲染方法。
[0023] 第八方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被后端渲染设备的处理器执行时,使所述处理器至少可以实现如第五方面所述的渲染方法。
[0024] 第九方面,本发明实施例提供了一种渲染方法,包括:
[0025] 前端渲染设备向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间;
[0026] 所述后端渲染设备在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点;
[0027] 响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,所述前端渲染设备根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0028] 在本发明实施例提供的方案中,当前端渲染设备需要请求后端渲染设备为其完成一些渲染任务时,向后端渲染设备发送对应的多个渲染指令,并且在这多个渲染指令之间依次穿插多个同步标识点,以用于前端渲染设备同步得知后端渲染设备的渲染状态。具体地,后端渲染设备在完成位于某一同步标识点之前的渲染指令时向前端渲染设备反馈该同步标识点,以便前端渲染设备得知后端渲染设备对渲染指令的执行情况。假设当前后端渲染设备在完成第一同步标识点之前的渲染指令时向前端渲染设备反馈了该第一同步标识点,此时,若前端渲染设备中的渲染引擎(称为前端渲染引擎)触发与第二同步标识点对应的同步请求,则前端渲染设备可以根据第二同步标识点与已经接收到的第一同步标识点的位置顺序,确定后端渲染设备对位于第二同步标识点之前的渲染指令是否已经完成。
[0029] 在上述方案中,通过在连续的多个渲染指令之间插入同步标识点,后端渲染设备在执行渲染的过程中,若执行到某个同步标识点,意味着该同步标识点之前的渲染指令已经完成,将该渲染状态主动向前端渲染设备进行上报,使得前端渲染设备在需要同步得知后端渲染设备对其发出的多个渲染指令的执行情况时,不必频繁地向后端渲染设备发送同步请求便可以基于同步标识点得知后端渲染设备的渲染状态,节省了前端渲染设备与后端渲染设备在渲染状态同步过程中的通信开销,也有助于保证前端渲染设备的帧率。

附图说明

[0030] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031] 图1为本发明实施例提供的一种渲染方法的应用示意图;
[0032] 图2为本发明实施例提供的一种发送渲染指令和同步标识点的应用示意图;
[0033] 图3为本发明实施例提供的一种渲染方法的流程图;
[0034] 图4为本发明实施例提供的一种渲染方法的流程图;
[0035] 图5为本发明实施例提供的一种渲染装置的结构示意图;
[0036] 图6为与图5所示实施例提供的渲染装置对应的前端渲染设备的结构示意图;
[0037] 图7为本发明实施例提供的一种渲染装置的结构示意图;
[0038] 图8为与图7所示实施例提供的渲染装置对应的后端渲染设备的结构示意图。

具体实施方式

[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
[0041] 在传统的远程渲染方案中,前端渲染设备当需要同步后端渲染设备的渲染状态的时候,前端渲染设备会发送同步请求给后端渲染设备,后端渲染设备接收到该同步请求之后,会检查所请求的渲染指令对应的渲染状态,如果此时已经完成相应渲染指令,则直接把“已完成渲染”的结果返回给前端渲染设备(情况1),如果此时还没有完成相应渲染指令,则在后端渲染设备完成相应渲染指令后,再把执行结果返回给前端渲染设备(情况2)。由此可见,前端渲染设备触发的同步请求会带来较长的网络通信耗时,且有一部分同步请求发生时,后端渲染设备已经完成了相应渲染指令的执行,即相应渲染指令处于渲染完毕状态(对应于上述情况1),这就造成本次的网络请求和反馈的浪费。而且,由于该网络通信成本的开销,会导致前端渲染设备的帧率(单位时间内能够显示出的帧数)难以保证稳定。
[0042] 为此,本发明实施例提供了一种新的渲染方案,在该渲染方案中,前端渲染设备并不需要向后端渲染设备发送同步请求以请求后端渲染设备告知其渲染状态,而是由后端渲染设备主动向前端渲染设备上报其执行渲染指令的情况(即渲染状态)。
[0043] 下面结合以下实施例来介绍上述渲染方案的实施过程。
[0044] 图1为本发明实施例提供的一种渲染方法的应用示意图,如图1中所示,该渲染方法执行过程中需要使用到的前端渲染设备和后端渲染设备。其中,如图1中所示,前端渲染设备中可以包括前端渲染引擎和同步处理模块A;后端渲染设备中可以包括同步处理模块B和图形渲染硬件。
[0045] 其中,图形渲染硬件可以是GPU等具有图像渲染功能的硬件。
[0046] 其中,同步处理模块A和同步处理模块B仅是为了说明在前端渲染设备和后端渲染设备中具有负责进行渲染状态同步的功能模块,实际应用中,该功能模块对应的功能可以由相应渲染设备中的CPU等单元来执行。
[0047] 实际应用中,以某用户在玩一款网络游戏的场景为例,前端渲染设备可以是该用户玩游戏所使用的终端设备,比如智能手机、PC机、笔记本电脑,等等。后端渲染设备可以是这款游戏对应的后端服务器或者游戏提供方预先配置的其他辅助前端渲染设备进行游戏画面渲染的电子设备。
[0048] 实际应用中,以网络游戏场景为例,用户某时刻看到的一幅(一帧)完整的游戏画面往往对应于多个渲染指令,即依次执行完这多个渲染指令才会最终得到这幅完整的游戏画面。类比来说,相当于渲染一幅完整画面的任务被拆分为多个子任务来完成,这多个子任务即对应于多个渲染指令。
[0049] 因此,为便于描述,本发明实施例中仅以一副画面对应的多个渲染指令为例来说明前端渲染设备如何同步获知后端渲染设备对这多个渲染指令的执行情况。
[0050] 实际应用中,运行在前端渲染设备中的上述游戏应用程序可以调用前端渲染引擎来执行游戏画面的渲染。当前端渲染引擎需要渲染某幅游戏画面时,可以通过同步处理模块A向后端渲染设备发送与之对应的多个渲染指令。
[0051] 只是,在本发明实施例中,前端渲染设备向后端渲染设备不仅仅只发送这多个渲染指令,与这多个渲染指令一起发出的还包括多个同步标识点。其中,这多个同步标识点被依次穿插在多个渲染指令之间。
[0052] 为便于理解,结合图2来示例性说明渲染指令和同步标识点的发送情形。在图2中,假设前端渲染设备向后端渲染设备依次发出的多个渲染指令包括:渲染指令1、渲染指令2、渲染指令3、渲染指令4、渲染指令5;并假设依次插入的同步标识点包括:同步标识点1、同步标识点2和同步标识点3。其中,同步标识点1位于渲染指令1和渲染指令2之间,同步标识点2位于渲染指令2和渲染指令3之间,同步标识点3位于渲染指令4和渲染指令5之间。
[0053] 本发明实施例中,多个同步标识点可以被实现为按照设定规则编码的字符,比如是顺序编号的数字,用以体现不同同步标识点的先后位置顺序。
[0054] 可选地,多个同步标识点在多个渲染指令之间的插入位置可以是前端渲染引擎或者调用前端渲染引擎的应用程序(比如上述游戏应用程序)根据被配置的预设规则确定的,该预设规则比如为:在每个渲染指令后都插入一个同步标识点;或者,每隔两个渲染指令插入一个同步标识点。
[0055] 上述预设规则仅为举例,不以此为限。比如,实际应用中,应用程序可以根据不同画面所对应的渲染指令的数量来确定该不同画面所对应的同步标识点插入规则,比如渲染指令多时,可以设置插入更多的同步标识点,渲染指令少时,设置插入更少的同步标识点。
[0056] 后端渲染设备接收到前端渲染设备发送的穿插有多个同步标识点的多个渲染指令后,依次执行收到的多个渲染指令,并在执行过程中,每当遇到一个同步标识点时,便将当前遇到的同步标识点发送到前端渲染设备。
[0057] 具体来说,实际应用中,后端渲染设备可以通过图1中的同步处理模块B接收前端渲染设备发送的多个渲染指令和多个同步标识点,将依次收到的这些渲染指令和同步标识点存入任务队列中,图形渲染硬件按照先入先出的顺序依次读取该队列中存储的信息。如果当前读取到的是一条渲染指令,则执行该渲染指令,以完成相应的渲染操作;如果当前读取到的是一个同步标识点,则可以将该同步标识点存入内存中,以由同步处理模块B从内存中读取到该同步标识点,并发送到前端渲染设备。
[0058] 由此可见,后端渲染设备具有能够区分渲染指令和同步标识点的能力,该区分能力可以是前端渲染设备在发送渲染指令和同步标识点的时候分别为渲染指令和同步标识点关联上对应的标识符,以区别渲染指令和同步标识点。
[0059] 另外,结合图2来说,可以理解的是,假设后端渲染设备当前从队列中读取到的是同步标识点1,那么意味着同步标识点1之前的渲染指令都已经执行完成,即渲染指令1已经执行完成。同理,如果后端渲染设备当前从队列中读取到的是同步标识点3,则意味着同步标识点之前的所有渲染指令已经都执行完成。
[0060] 因此,后端渲染设备接收到前端渲染设备发送的穿插有多个同步标识点的多个渲染指令后,若执行到第一同步标识点,即在完成位于第一同步标识点之前的渲染指令时向前端渲染设备反馈该第一同步标识点,以告知前端渲染设备其已经执行到了第一同步标识点。
[0061] 前端渲染设备接收到该第一同步标识点后,存储该第一同步标识点。
[0062] 另外,前端渲染引擎在发出上述多个渲染指令之后,需要得知这些渲染指令在后端渲染设备的执行情况,即需要得知后端渲染设备的渲染状态,前端渲染引擎便会触发同步请求。只是,在本发明实施例中,前端渲染引擎所触发的同步请求中携带的关键词是同步标识点,即前端渲染引擎通过不断地询问是否已经执行到不同的同步标识点以了解后端渲染设备的渲染状态,并且,如图1中所示,前端渲染引擎所触发的与某同步标识点(为与后端渲染设备上报的同步标识点相区分,称为第二同步标识点)对应的同步请求只是发送到前端渲染设备中的同步处理模块A,不会向后端渲染设备发送。
[0063] 响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,前端渲染设备会根据第二同步标识点与当前存储的后端渲染设备上报的第一同步标识点的位置顺序,确定后端渲染设备对位于第二同步标识点之前的渲染指令的完成状态。即根据第二同步标识点与第一同步标识点的位置顺序确定位于第二同步标识点之前的渲染指令是否已经完成。
[0064] 具体地,若第二同步标识点位于第一同步标识点之前,则说明后端渲染设备当前已经完成了位于第二同步标识点之前的渲染指令的执行,反之,若第二同步标识点位于第一同步标识点之后,则说明后端渲染设备当前还未完成位于第二同步标识点之前的渲染指令的执行。
[0065] 基于此,可选地,若第二同步标识点位于第一同步标识点之前,则前端渲染设备(其中的同步处理模块A)可以直接向前端渲染引擎反馈响应信息,所述响应信息指示后端渲染设备已经完成位于第二同步标识点之前的渲染指令。若第二同步标识点位于第一同步标识点之后,则等待接收到后端渲染设备发送的第二同步标识点后,前端渲染设备(其中的同步处理模块A)再向前端渲染引擎反馈响应信息,所述响应信息指示后端渲染设备已经完成位于第二同步标识点之前的渲染指令。
[0066] 简单来说就是,如果第二同步标识点位于第一同步标识点之前,意味着位于第二同步标识点之前的渲染指令都已经被执行完毕,此时可以直接随即告知前端渲染引擎位于第二同步标识点之前的渲染指令都已经被执行完毕;如果第二同步标识点位于第一同步标识点之后,意味着后端渲染设备还未执行完位于第二同步标识点之前的全部渲染指令,即还没有执行到第二同步标识点,需要等后端渲染设备执行到第二同步标识点时,再将第二同步标识点发送到前端渲染设备,前端渲染设备将此前存储的第一同步标识点更新为第二同步标识点,表示此时后端渲染设备已经执行到第二同步标识点,此时,前端渲染设备比较存储的该第二同步标识点与前端渲染引擎请求的同步标识点相同,则确定这时后端渲染设备执行完了位于第二同步标识点之前的全部渲染指令,向前端渲染引擎反馈该信息。
[0067] 实际应用中,前端渲染设备(亦即前端渲染引擎)基于对后端渲染设备执行渲染指令的渲染状态的同步结果,可以根据需求,在合适的时机向后端渲染设备请求渲染结果。比如,前端渲染设备可以在多个渲染指令对应的一幅画面渲染完毕后,请求后端渲染设备将渲染好的这幅画面反馈到前端渲染设备进行显示,针对该情形,可以在多个渲染指令的尾部设置一个同步标识点,即上述多个同步标识点包括位于最后一个渲染指令后的一个同步标识点,当后端渲染设备执行到该最后一个同步标识点时,意味着多个渲染指令已经全部完成。再比如,当前端渲染设备也执行一些简单的渲染操作时,前端渲染设备可以在确定后端渲染设备已经执行到中间的某个同步标识点时,向后端渲染设备请求此时的渲染结果,基于该渲染结果进行某些渲染操作,将执行完该渲染操作的结果再反馈给后端渲染设备以继续执行后续的渲染指令。另外,可选地,后端渲染设备也可以根据前端渲染设备预设的配置,在执行到某个同步标识点时,将此时的渲染结果主动发送到前端渲染设备,其中,前端渲染设备预设的配置可以是前端渲染设备预先配置后端渲染设备在执行到哪个同步标识点时需要进行渲染结果的发送。
[0068] 综上,在上述方案中,通过在连续的多个渲染指令之间插入同步标识点,后端渲染设备在执行渲染的过程中,若执行到某个同步标识点,意味着该同步标识点之前的渲染指令已经完成,将该渲染状态主动向前端渲染设备进行上报,使得前端渲染设备在需要同步得知后端渲染设备对其发出的多个渲染指令的执行情况时,不必频繁地向后端渲染设备发送同步请求便可以基于同步标识点得知后端渲染设备的渲染状态,节省了前端渲染设备与后端渲染设备在渲染状态同步过程中的通信开销,也有助于保证前端渲染设备的帧率。
[0069] 图3为本发明实施例提供的一种渲染方法的流程图,该方法可以由上文中的前端渲染设备执行,如图3所示,可以包括如下步骤:
[0070] 301、向后端渲染设备发送多个渲染指令和多个同步标识点,多个同步标识点被依次穿插在多个渲染指令之间。
[0071] 实际应用中,这多个渲染指令可以用于渲染一帧画面。当然,不以此为限,也可以对应于两帧或多帧画面的渲染。
[0072] 302、接收后端渲染设备发送的第一同步标识点,其中,后端渲染设备在完成位于第一同步标识点之前的渲染指令时向前端渲染设备反馈所述第一同步标识点。
[0073] 303、响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据第二同步标识点与第一同步标识点的位置顺序,确定后端渲染设备对位于第二同步标识点之前的渲染指令的完成状态,前端渲染引擎设于前端渲染设备。
[0074] 其中,可选地,若第二同步标识点位于第一同步标识点之前,则直接向前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令。若第二同步标识点位于第一同步标识点之后,则等待接收到后端渲染设备发送的第二同步标识点后,向前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令。
[0075] 另外,前端渲染设备除了具有同步得知后端渲染设备的渲染状态的需求外,还具有获取后端渲染设备的渲染结果的需求。获取画面渲染结果的过程可以实现为:
[0076] 前端渲染设备若确定位于第三同步标识点之前的渲染指令已经被后端渲染设备完成,则向后端渲染设备发送画面获取请求,接收后端渲染设备发送的与该画面获取请求对应的渲染画面。其中,第三同步标识点是所述多个同步标识点中的任一个。
[0077] 其中,第三同步标识点可以是位于最后一个渲染指令之后的同步标识点,或者,也可以是最后一个同步标识点之前的一个。
[0078] 其中,若第三同步标识点是位于最后一个渲染指令之后的同步标识点,则意味着前端渲染设备是在后端渲染设备执行完全部的多个渲染指令后获取其渲染结果;若第三同步标识点是最后一个同步标识点之前的一个,则意味着前端渲染设备是在后端渲染设备执行完其中的某个渲染指令后获取中间渲染结果。
[0079] 本实施例中,前端渲染设备的详细执行过程可以参考前述其他实施例中的相关说明,在此不赘述。
[0080] 图4为本发明实施例提供的一种渲染方法的流程图,该方法可以由上文中的后端渲染设备执行,如图4所示,可以包括如下步骤:
[0081] 401、接收前端渲染设备发送的多个渲染指令和多个同步标识点,多个同步标识点被依次穿插在多个渲染指令之间。
[0082] 实际上,后端渲染设备接收到上述多个渲染指令和多个同步标识点后,可以将所述多个渲染指令和所述多个同步标识点顺序写入任务队列中,以供后端渲染设备中的图形渲染硬件顺序读取该队列。若当前从任务队列中读取到一条渲染指令,则执行读取到的渲染指令;若当前从任务队列中读取到一个同步标识点,则将读取到的同步标识点发送到前端渲染设备。
[0083] 402、在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈第一同步标识点,以使前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据第二同步标识点与第一同步标识点的位置顺序确定后端渲染设备对位于第二同步标识点之前的渲染指令的完成状态,前端渲染引擎设于前端渲染设备。
[0084] 其中,第一同步标识点是上述多个同步标识点中的任一个。后端渲染设备每当执行到即从任务队列中读取出一个同步标识点后,便将该同步标识点发送到前端渲染设备,以使前端渲染设备更新后端渲染设备上报的同步标识点。
[0085] 本实施例中,后端渲染设备的详细执行过程可以参考前述其他实施例中的相关说明,在此不赘述。
[0086] 以下将详细描述本发明的一个或多个实施例的渲染装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
[0087] 图5为本发明实施例提供的一种渲染装置的结构示意图,该装置位于前述前端渲染设备,如图5所示,该装置包括:接收模块11、发送模块12。
[0088] 发送模块11,用于向后端渲染设备发送多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间。
[0089] 接收模块12,用于接收所述后端渲染设备发送的第一同步标识点,其中,所述后端渲染设备在完成位于所述第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点。
[0090] 确定模块13,用于响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0091] 其中,可选地,所述确定模块13具体可以用于:若所述第二同步标识点位于所述第一同步标识点之前,则直接向所述前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令;若所述第二同步标识点位于所述第一同步标识点之后,则等待接收到所述后端渲染设备发送的所述第二同步标识点后,向所述前端渲染引擎反馈响应信息,所述响应信息指示所述后端渲染设备已经完成位于所述第二同步标识点之前的渲染指令。
[0092] 可选地,所述多个渲染指令用于渲染一帧画面。
[0093] 可选地,所述确定模块13还用于:若确定位于第三同步标识点之前的渲染指令已经被所述后端渲染设备完成,则通过所述发送模块11向所述后端渲染设备发送画面获取请求;其中,所述第三同步标识点是位于最后一个渲染指令之后的同步标识点,或者,所述第三同步标识点是所述多个同步标识点中的任一个;以及通过所述接收模块12接收所述后端渲染设备发送的与所述画面获取请求对应的渲染画面。
[0094] 图5所示装置可以执行前述实施例中第一传输设备执行的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
[0095] 在一个可能的设计中,上述图5所示渲染装置的结构可实现为前端渲染设备,如图6所示,该前端渲染设备可以包括:第一处理器21、第一存储器22、第一通信接口23。其中,第一存储器22上存储有可执行代码,当所述可执行代码被第一处理器21执行时,使第一处理器21至少可以实现如前述实施例中前端渲染设备执行的步骤。
[0096] 实际上,前端渲染设备中还可以包括显示屏,用于显示渲染结果。前端渲染设备中还运行有上文所述的前端渲染引擎。
[0097] 图7为本发明实施例提供的一种渲染装置的结构示意图,该装置位于后端渲染设备,如图7所示,该装置包括:接收模块31、发送模块32。
[0098] 接收模块31,用于接收前端渲染设备发送的多个渲染指令和多个同步标识点,所述多个同步标识点被依次穿插在所述多个渲染指令之间。
[0099] 发送模块32,用于在完成位于第一同步标识点之前的渲染指令时向所述前端渲染设备反馈所述第一同步标识点,以使所述前端渲染设备响应于前端渲染引擎触发的与第二同步标识点对应的同步请求,根据所述第二同步标识点与所述第一同步标识点的位置顺序,确定所述后端渲染设备对位于所述第二同步标识点之前的渲染指令的完成状态,所述前端渲染引擎设于所述前端渲染设备。
[0100] 其中,可选地,所述装置还包括:存储模块,执行模块。
[0101] 所述存储模块,用于将所述多个渲染指令和所述多个同步标识点顺序写入任务队列中。
[0102] 所述执行模块,用于若当前从所述任务队列中读取到一条渲染指令,则执行读取到的渲染指令;若当前从所述任务队列中读取到一个同步标识点,则将读取到的同步标识点发送到所述前端渲染设备。
[0103] 图7所示装置可以执行前述实施例中后端渲染设备执行的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
[0104] 在一个可能的设计中,上述图7所示渲染装置的结构可实现为后端渲染设备,如图8所示,该后端渲染设备可以包括:第二处理器41、第二存储器42、第二通信接口43。其中,第二存储器42上存储有可执行代码,当所述可执行代码被第二处理器41执行时,使第二处理器41至少可以实现如前述实施例中后端渲染设备执行的步骤。
[0105] 另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被渲染设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的渲染方法。
[0106] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0107] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0108] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。