CN113368492A - 渲染的方法、装置 - Google Patents
渲染的方法、装置 Download PDFInfo
- Publication number
- CN113368492A CN113368492A CN202010118171.XA CN202010118171A CN113368492A CN 113368492 A CN113368492 A CN 113368492A CN 202010118171 A CN202010118171 A CN 202010118171A CN 113368492 A CN113368492 A CN 113368492A
- Authority
- CN
- China
- Prior art keywords
- rendering
- instruction stream
- context
- server
- rendering 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.)
- Granted
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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/332—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using wireless networks, e.g. cellular phone networks
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/335—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
-
- 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/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- 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/40—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 characterised by details of platform network
- A63F2300/406—Transmission via wireless network, e.g. pager or GSM
-
- 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/50—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 characterized by details of game servers
- A63F2300/53—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 characterized by details of game servers details of basic data processing
- A63F2300/534—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 characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
-
- 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
Abstract
本申请提供一种渲染的方法,该方法包括:发生网络抖动前,服务器通过网络从电子设备接收操作指令,根据操作指令生成多个第一渲染指令流发给电子设备;以及针对所述多个第一渲染指令流中的一个或多个第一渲染指令流,生成并保存一个或多个第一渲染上下文;发生网络抖动时,服务器继续根据已接收到的操作指令生成第二渲染指令流,根据第二渲染指令流生成并保存第二渲染上下文,所述第二渲染指令流为网络抖动恢复前最近一次生成的渲染指令流;网络抖动恢复后,向电子设备发送渲染上下文差的集合,所述渲染上下文差的集合被电子设备用来得到所述第二渲染指令流。通过该方法,降低网络抖动恢复后网络传输流量、减少传输和处理时延、提升用户体验。
Description
技术领域
本申请实施例涉及云计算领域,尤其是涉及云游戏场景下的一种渲染的方法。
背景技术
云游戏是以云计算为基础的游戏方式,依托于网络传输,在客户端即点即玩,感受不到下载和安装过程。5G具有高带宽、低时延的特性,有望突破云游戏带宽不够限制画面质量、延迟高无法满足即时游戏的需求的瓶颈,因此5G时代必定会推动云游戏蓬勃发展。典型的云游戏技术实现方案包括视频云游戏和指令云游戏。
1)视频云游戏
云端服务器接受终端设备的操作指令,由服务器的中央处理器(CentralProcessing Unit,CPU)、(Graphics Processing Unit,GPU)来完成计算,然后以视频流的方式通过网络传送到终端(包括笔记本电脑、平板电脑、手机等)进行显示。在视频云游戏场景下,玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。
2)指令云游戏
所有逻辑通过云端服务器运算,形成开放图形库(Open Graphics Library,openGL)或者web图形库(Web Graphics Library,webGL)的渲染指令,再通过网络传输到终端设备,由终端设备将指令流进行解析、执行,充分利用了终端设备的GPU能力。对于指令云游戏,在相同画质情况下,较视频云游戏方案网络带宽开销小、成本低廉,不需要云端服务器GPU等渲染开销;但是指令云游戏方案在网络较差的情况下可用性低。
图1展示了指令云游戏场景下,网络不抖动时的流程,即服务器接收来自终端的操作指令,并由CPU执行应用程序的逻辑,生成包括资源加载、渲染管线执行和显示的渲染指令流,发送给终端,终端接收渲染指令流,由GPU执行渲染指令流并显示应用程序对应的图像。
图2展示了网络抖动期间渲染指令流的延时积累情况。当网络抖动时,积累的渲染指令流的数据量随抖动时长线性增长。当网络抖动恢复后,服务端将会把网络抖动期间积累的渲染指令流一次性发送给终端,终端按顺序执行渲染指令流。终端执行完网络抖动期间积累的渲染指令流后才能继续执行抖动恢复后的渲染指令流。由此造成了渲染指令流的传输和处理时延大、从而导致终端渲染时间长,无法及时把最新帧的渲染结果展示给用户,用户感知延迟大。因此,如何减少渲染指令流的传输和处理时延、提升用户体验成为亟待解决的问题。
发明内容
本申请提供了一种渲染的方法和装置,应用于云计算领域,解决指令云游戏场景下的如下问题:
在网络抖动情况下,减少渲染指令流的传输和处理时延、提升用户体验。
第一方面,本申请实施例提供一种渲染的方法,该方法应用于服务器,包括:在网络发生网络抖动前,所述服务器通过所述网络陆续从电子设备接收操作指令,并根据所述操作指令生成多个第一渲染指令流,并将所述多个第一渲染指令流发送给所述电子设备;以及针对所述多个第一渲染指令流中的一个或多个第一渲染指令流,所述服务器生成并保存一个或多个第一渲染上下文,其中,所述第一渲染上下文与所述一个或多个第一渲染指令流一一对应,所述第一渲染上下文中包含了对应的第一渲染指令流或用于恢复所述对应的第一渲染指令流的信息;在发生网络抖动时,所述服务器继续根据已接收到的操作指令生成第二渲染指令流,并根据所述第二渲染指令流生成并保存第二渲染上下文,其中,所述第二渲染上下文中包含了所述第二渲染指令流或用于恢复所述第二渲染指令流的信息,所述第二渲染指令流为所述网络抖动恢复前最近一次生成的渲染指令流;在所述网络抖动恢复后,所述服务器向所述电子设备发送渲染上下文差的集合,所述渲染上下文差的集合中包括一个或多个渲染上下文差,其中,一个渲染上下文差为所述第二渲染上下文和一个所述第一渲染上下文的差,所述渲染上下文差的集合被所述电子设备用来得到所述第二渲染指令流。
本申请可以适用于通过指令流方案实现分离渲染的场景,即服务器通过网络从电子设备接收操作指令,并根据操作指令生成渲染指令流,将这些渲染指令流发送至与服务器连接的电子设备,由接收到渲染指令流的电子设备进行图形渲染。但是发生网络抖动时,由于渲染指令流发送不了会出现大量渲染指令流累积的问题。在网络抖动恢复后,将会有大量的渲染指令流待从服务器侧发送至电子设备,发送后在电子设备侧会有大量的渲染指令流待执行,由此造成了渲染指令流的传输和处理时延大、从而导致电子设备渲染时间长,无法及时把最新帧的渲染结果展示给用户,用户感知延迟大。通过该方法,服务器可以向电子设备发送渲染上下文差的集合,所述渲染上下文差的集合包括一个或多个渲染上下文差,其中,一个渲染上下文差为前述第二渲染上下文和一个第一渲染上下文的差,从而使得电子设备能够根据渲染上下文差的集合得到网络抖动恢复前服务器最近一次生成的渲染指令流,实现服务器和电子设备之间的同步。由于渲染上下文差的集合对应的渲染指令流相比网络抖动期间累积的渲染指令流数量大大减少,因此发送给电子设备过程中网络流量大大减少,电子设备执行渲染指令流的时延相应大大减少,即传输时延和处理时延都减少了,从而降低网络传输流量、减少传输和处理时延、提升用户体验。
在一些可能的实现方式中,操作指令也可以来自其他设备,也可以是服务器自己生成的。
在一种可能的实现方式中,可以在服务器上根据渲染指令流生成并保存渲染上下文。渲染上下文记录了图像渲染需要的信息,包含了渲染指令流或用于恢复所述渲染指令流的信息。以0penGL为例,0penGL的渲染上下文记录了0penGL渲染需要的所有信息,它是一个大的结构体,记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等使用0penGL函数调用设置的状态和状态属性。可以理解的是,在这种实现方式下,渲染上下文的生成和保存可以由区别于运行在服务器上的应用程序APP服务端的逻辑实体来实现,例如上下文跟踪模块。在这种场景下,上下文跟踪模块可以从APP服务端获取渲染指令流,并根据渲染指令流生成并保存渲染上下文。
在另一种可能的实现中,也可以在其他的服务器或其他类型的设备中生成并保存渲染上下文,本申请不做限制。
在一些可能的实现方式中,在生成并保存一个或多个第一渲染上下文中的任意一个第一渲染上下文之前,服务器确定已生成的第一渲染指令流为一个图像帧的数据对应的渲染指令流;或者服务器确定第一渲染指令流为目标渲染指令流,所述目标渲染指令流预先存储在所述服务器中,例如Draw指令或Swap指令。
在一种可能的实现方式中,服务器可以周期性执行生成并保存所述一个或多个第一渲染上下文的动作。
在其他可能的实现方式中,服务器也可以在生成一个渲染指令流或者多个渲染指令流后生成并保存所述一个或多个第一渲染上下文,渲染指令流的个数预先保存在服务器上,例如在服务器生成5个渲染指令流后生成并保存所述一个或多个第一渲染上下文。生成并保存一个或多个第一渲染上下文是为后续计算渲染上下文差的集合做准备。所述渲染上下文差的集合将在网络抖动恢复后由服务器发送给电子设备的,从而使得电子设备能够根据渲染上下文差的集合得到网络抖动恢复前服务器最近一次生成的渲染指令流,实现服务器和电子设备之间的同步。
在一种可能的实现方式中,服务器生成第三渲染指令流,并根据第三渲染指令流生成第三渲染上下文,其中,第三渲染上下文中包含了第三渲染指令流或用于恢复第三渲染指令流的信息,第三渲染指令流为服务器接收到电子设备的操作指令后生成的第一个渲染指令流;设置基线快照,该基线快照为所述第三渲染上下文。
在一种可能的实现方式中,服务器接收电子设备发送的渲染指令流响应,所述渲染指令流响应包含电子设备最近接收到的渲染指令流的指令流号,将所述基线快照更新为接收到的所述指令流号对应的第一渲染上下文。
在一种可能的实现方式中,在接收到渲染指令流响应后,删除已保存在所述服务器上的其它第一渲染上下文。
在一种可能的实现方式中,保存所述一个或多个第一渲染上下文中的任意一个第一渲染上下文可以通过保存所述任意一个第一渲染上下文与所述基线快照的差。可以理解的是,若保存的是任意一个第一渲染上下文与所述基线快照的差,则能够节省服务器的存储空间。
在另一种可能的实现方式中,可以直接保存整个第一渲染上下文。在这种实现方式下,可以不设置基线快照。
在一种可能的实现方式中,在网络抖动恢复后,服务器获取电子设备在发生网络抖动前最后执行的渲染指令流的指令流号,其中,获取方式可以是服务器检测到抖动恢复后主动向电子设备查询,电子设备向服务器发送网络抖动前最后执行的渲染指令流的指令流号,也可以是电子设备在检测到抖动恢复后,主动向服务器上报网络抖动前最后执行的渲染指令流的指令流号。相应的,在这种实现方式下,在网络抖动恢复后,发送渲染上下文差的集合包括:发送所述第二渲染上下文与所述指令流号对应的第一渲染上下文的差。
在网络抖动恢复后,服务器将向电子设备发送渲染上下文差的集合,在一种可能的实现方式中,服务器发送所述第二渲染上下文与所述一个或多个第一渲染上下文中的每个第一渲染上下文的差的集合。在另一种可能的实现方式中,服务器发送所述第二渲染上下文与所述基线快照和所述任意一个第一渲染上下文与所述基线快照的差异之和的差的集合。这种方式对应的第一渲染上下文的保存方式为前述的保存所述任意一个第一渲染上下文与所述基线快照的差。
在一种可能的实现方式中,在网络抖动恢复后,服务器发送的渲染上下文差的集合可以是自定义的消息格式。可以理解的是,如果服务器发送的渲染上下文差是自定义的消息格式,则电子设备需要将自定义格式的渲染上下文差转换成渲染指令流格式。
在一种可能的实现方式中,在网络抖动恢复后,服务器发送的渲染上下文差的集合可以是渲染指令流格式。
第二方面,本申请实施例提供一种渲染的方法,该方法应用于电子设备,包括:
在网络发生网络抖动前,所述电子设备从服务器接收第一渲染指令流,所述第一渲染指令流用于执行图像渲染以显示图像;所述电子设备向所述服务器发送渲染指令流响应,所述渲染指令流响应包含所述电子设备最近接收到的渲染指令流的指令流号;在所述网络抖动恢复后,所述电子设备从所述服务器接收渲染上下文差的集合,解析所述渲染上下文差的集合中的部分或者全部渲染上下文差以得到网络抖动恢复前所述服务器最近一次生成的渲染指令流。
在一些实现方式中,所述方法还包括:向服务器发送操作指令,所述操作指令用于指示所述服务器运行应用程序。
本申请可以适用于通过指令流方案实现分离渲染的场景,即电子设备通过网络向服务器发送操作指令,服务器根据操作指令生成渲染指令流发送给电子设备,由电子设备进行图形渲染。但是发生网络抖动时,由于渲染指令流发送不了会出现大量渲染指令流累积的问题。在网络抖动恢复后,将会有大量的渲染指令流待从服务器侧发送至电子设备,发送后在电子设备侧会有大量的渲染指令流待执行,由此造成了渲染指令流的传输和处理时延大、从而导致电子设备渲染时间长,无法及时把最新帧的渲染结果展示给用户,用户感知延迟大。通过该方法,服务器可以向电子设备发送渲染上下文差的集合,所述渲染上下文差的集合包括一个或多个渲染上下文差,其中,一个渲染上下文差为前述第二渲染上下文和一个第一渲染上下文的差,从而使得电子设备能够根据渲染上下文差的集合得到网络抖动恢复前服务器最近一次生成的渲染指令流,实现服务器和电子设备之间的同步。由于渲染上下文差的集合对应的渲染指令流相比网络抖动期间累积的渲染指令流数量大大减少,因此发送给电子设备过程中网络流量大大减少,电子设备执行渲染指令流的时延相应大大减少,即传输时延和处理时延都减少了,从而降低网络传输流量、减少传输和处理时延、提升用户体验。
在一些可能的实现方式中,电子设备在发送渲染指令流响应给服务器之前确定已接收到的所述第一渲染指令流为一个图像帧的数据对应的渲染指令流;或者电子设备确定接收到的所述第一渲染指令流为目标渲染指令流,所述目标渲染指令流预先存储在所述电子设备中,例如接收到Draw指令或Swap指令,然后发送渲染指令流响应给服务器。
在一种可能的实现方式中,电子设备可以在接收到一个或者多个渲染指令流后向服务器发送渲染指令流响应,渲染指令流的个数预先保存在电子设备上,例如接收到5个渲染指令流后。
在一种可能的实现方式中,电子设备周期性执行发送所述渲染指令流响应的动作。
在一种可能的实现方式中,电子设备接收到的渲染上下文差的集合中的一个或多个渲染上下文差可以是自定义的消息格式,例如渲染上下文差为用于恢复所述网络抖动恢复前所述服务器最近一次生成的渲染指令流的信息格式。若电子设备接收到的渲染上下文差的集合中的渲染上下文差为自定义格式,则电子设备将自定义格式的渲染上下文差转换为渲染指令流格式。即当所述渲染上下文差为用于恢复所述网络抖动恢复前所述服务器最近一次生成的渲染指令流的信息格式时,将所述渲染上下文差转换为渲染指令流格式。
在一种可能的实现方式中,电子设备接收到的渲染上下文差可以是渲染指令流格式。
在一种可能的实现方式中,网络抖动恢复后,电子设备向所述服务器主动上报网络抖动发生前最后执行的渲染指令流的指令流号。
在一种可能的实现方式中,网络抖动恢复后,电子设备响应于所述服务器的查询指令,发送网络抖动发生前最后执行的渲染指令流的指令流号给所述服务器。
电子设备在接收到服务器发送的渲染上下文差的集合后,解析所述渲染上下文差的集合中的部分或者全部渲染上下文差。所述解析所述渲染上下文差的集合中的部分或者全部渲染上下文差包括选择最接近于所述网络抖动前最后执行的渲染指令流的渲染上下文差,解析并执行所述最接近于所述网络抖动前最后执行的渲染指令流的渲染上下文差。
在一种可能的实现方式中,电子设备接收服务器的渲染上下文差的集合后,若所述渲染上下文差的集合为网络抖动恢复后前述第二渲染上下文与网络抖动发生前电子设备最后执行的渲染指令流的指令流号对应的第一渲染上下文的差,则电子设备判断渲染上下文差中的指令流号是否与电子设备最后执行的指令流号一致,若一致,则解析该渲染上下文差。这种方式下,服务器只需要发送一个渲染上下文差,节省服务器与电子设备之间的传输流量。
在一种可能的实现方式中,电子设备接收服务器的渲染上下文差的集合后,若所述渲染上下文差的集合为所述第二渲染上下文与所述一个或多个第一渲染上下文中的每个第一渲染上下文的差的集合,则电子设备需要选择其中一个渲染上下文差进行解析。在这种实现方式下,电子设备可以根据指令流号查找服务器的所有的渲染上下文差的指令流号是否包含了电子设备最后执行的指令流号,若包含,则选择该指令流号对应的渲染上下文差进行解析。在这种实现方式下,为了增加查找命中率,电子设备接收渲染指令流后,先把两个第一渲染上下文之间的渲染指令流缓存起来不进行解析,等到下一个渲染上下文的时候一次性解析,这样可以保证网络抖动恢复后的完整性。可以理解的是,在这种实现方式下,电子设备需要记录第一渲染上下文并保存两个第一渲染上下文之间的渲染指令流。电子设备保存第一渲染上下文的方式可以与前述服务器保存第一渲染上下文的方式保持一致,也可以是通过新增的消息向服务器查询第一渲染上下文保存的情况,也可以是服务器通过新增的消息通知电子设备保存了第一渲染上下文。
在另一种可能的实现方式中,电子设备接收服务器的渲染上下文差的集合后,若所述渲染上下文差的集合为所述第二渲染上下文与所述一个或多个第一渲染上下文中的每个第一渲染上下文的差的集合,则电子设备需要选择其中一个渲染上下文差进行计算并解析。电子设备根据网络抖动前最后执行的渲染指令流的指令流号找到离该指令流号最近的第一渲染上下文,计算出网络抖动时的电子设备的渲染上下文与最近的第一渲染上下文之间的上下文差,从而得出网络抖动时电子设备的渲染上下文与第二渲染上下文之间的差异。可以理解的是,在这种实现方式下,电子设备需要记录第一渲染上下文和电子设备最后执行的渲染指令流的指令流号。电子设备保存第一渲染上下文的方式可以与前述服务器保存第一渲染上下文的方式保持一致,也可以是通过新增的消息向服务器查询第一渲染上下文保存的情况,也可以是服务器通过新增的消息通知电子设备保存了第一渲染上下文。这种实现方式与上述方式的差别在于,电子设备接收到渲染指令流后,可以实时执行渲染指令流,而不需要保存两个第一渲染上下文之间的渲染指令流。相对于上述方案节省了电子设备存储空间,渲染指令流也不会出现没有实时执行的情况。
第三方面,本申请实施例提供一种渲染的装置,该装置包括用于执行第一方面中所描述的方法/操作/步骤/动作所对应的模块。
上述装置可以是服务器,也可以是服务器中的用于执行图形渲染的装置(例如,芯片,或者是能够和服务器匹配使用的装置)。
上述图形渲染装置包括的模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。
第四方面,本申请实施例提供一种渲染的装置,该装置包括用于执行第二方面中所描述的方法/操作/步骤/动作所对应的模块。
上述装置可以是电子设备,也可以是电子设备中的用于执行图形渲染的装置(例如,芯片,或者是能够和电子设备匹配使用的装置)。
上述图形渲染装置包括的模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。
第五方面,本申请实施例提供一种图形渲染装置,该装置包括处理器,该处理器用于调用存储器存储的程序代码以执行上述第一方面中的任意一种方式中的部分或全部操作。
上述装置中,存储程序代码的存储器既可以位于图形渲染装置内部(图形渲染装置除了包括处理器之外,还可以包括存储器),也可以位于图形渲染装置外部(可以是其他设备的存储器)。可选地,上述存储器为非易失性存储器。
当图形渲染装置包括处理器和存储器时,该处理器和存储器可以耦合在一起。
第六方面,本申请实施例提供一种图形渲染装置,该装置包括处理器,该处理器用于调用存储器存储的程序代码以执行上述第二方面中的任意一种方式中的部分或全部操作。
上述装置中,存储程序代码的存储器既可以位于图形渲染装置内部(图形渲染装置除了包括处理器之外,还可以包括存储器),也可以位于图形渲染装置外部(可以是其他设备的存储器)。可选地,上述存储器为非易失性存储器。
当图形渲染装置包括处理器和存储器时,该处理器和存储器可以耦合在一起。
第七方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储了程序代码,其中,程序代码包括用于执行上述任一方面所描述的方法中的部分或全部操作的指令。可选地,上述计算机可读存储介质位于电子设备内,该电子设备可以是能够进行图形渲染的装置。
第八方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在通信装置上运行时,使得通信装置执行上述任一方面所描述的方法中的部分或全部操作。
第九方面,本申请实施例提供一种芯片,所述芯片包括处理器,所述处理器用于执行上述任一方面所描述的方法中的部分或全部操作。
第十方面,本申请实施例提供一种系统,包括前述的电子设备以及前述的服务器。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的网络不抖动时渲染指令流处理流程示意图;
图2为本申请实施例提供的网络发生抖动时渲染指令流累积示意图;
图3a为本申请实施例提供的现有技术中云游戏场景的系统架构示意图;
图3b为本申请实施例提供的现有技术中云游戏场景的系统架构示意图;
图4为本申请实施例提供的一种云游戏场景的系统架构示意图;
图5为本申请实施例提供的渲染上下文的数据结构示意图;
图6为本申请实施例提供的克服渲染延迟的方法的流程示意图;
图7a为本申请实施例提供的基线快照与恢复点的关系示意图;
图7b为本申请实施例提供的重新设置基线快照与恢复点的示意图;
图8为本申请实施例提供的在网络发生抖动时的流程示意图;
图9为本申请实施例提供的在网络抖动恢复时通过渲染上下文差来恢复渲染上下文的具体流程;
图10a为本申请实施例提供的一种渲染上下文差的计算方式示意图;
图10b为本申请实施例提供的另一种渲染上下文差的计算方式示意图;
图11为本申请实施例提供的主动上报最后执行的渲染指令流号进行抖动恢复的流程示意图;
图12为本申请实施例提供的查询最后执行的渲染指令流号进行抖动恢复的流程示意图;
图13为本申请实施例提供的网络抖动点对应的渲染上下文与最新的渲染上下文之间的上下文差示意图;
图14为本申请实施例提供的服务器的示意性框图;
图15为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。本申请中的术语“和/或”或字符“/”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或,或A/B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。在本申请实施例的描述中,上下文与渲染上下文是同一个含义,上下文差与渲染上下文差是同一个含义。
为方便理解,下文将使用“恢复点”来表示前述服务器上保存的“第一渲染上下文”,使用“最新的渲染上下文”来表示前述“第二渲染上下文”。实施例中的终端为上文提到的电子设备的其中一种形态。
本申请实施例提供的渲染的方法主要应用在应用程序执行环境和终端分离场景,为了更好地介绍本实施例,将以云游戏为例进行介绍。
如图3a所示,为云游戏场景的系统架构示意图,包括服务器和终端。服务器包括至少一个应用程序APP(Application)。终端可以是移动电话(或称为“蜂窝”电话)、或具有移动性质的计算机等,终端还可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。在云游戏场景中,终端中安装有游戏客户端,用户可以通过终端上的游戏客户端启动游戏。现有指令云游戏的流程如下:
用户通过终端上的APP客户端启动游戏,通过触摸、鼠标、键盘或手柄等输入操作指令;
通过网络将操作指令发送给服务器;
服务器接收操作指令,生成渲染指令流,例如OpenGL、WebGL渲染指令流;
通过网络将渲染指令流发送给终端;
终端通过图形处理器(graphics processing unit,GPU)解析并执行渲染指令流,进行图像渲染和显示。
如图3b所示,应用到具体的一个游戏应用中,APP客户端为终端中安装的一个游戏的游戏客户端;APP为游戏服务端。其中,对于终端中安装的游戏包括轻载游戏、中载游戏,和重载游戏。其中,轻载、中载和重载是依据游戏运行时所消耗的终端和服务端的计算资源划分。
应理解的是,上述轻载游戏、中载游戏和重载游戏是依据游戏运行所消耗的终端的计算资源划分,是一个相对概念。例如,若以终端可用于游戏运行的可消耗资源为准,可以将游戏运行需要消耗30%计算资源的游戏称为轻载游戏,如愤怒的小鸟;将游戏运行需要消耗80%计算资源的游戏称为重载游戏,如王者荣耀;将游戏运行需要消耗50%计算资源的游戏称为中载游戏,如水果忍者。
但是在现有流程中,如前所述,当网络抖动恢复时,APP会把网络抖动期间所有渲染指令流一次性发给APP客户端,渲染指令流的数据量随抖动时长线性增长,由此造成了渲染指令流的传输和处理时延大、用户感知延迟大的问题。
本申请实施例提供一种渲染的方法,在图3b所示的系统架构的基础上进行了优化,如图4所示,为本申请实施例提供的一种云游戏场景的系统架构示意图。本申请实施例增加了上下文跟踪模块和上下文恢复模块。其中APP,上下文跟踪模块,本地渲染上下文可以位于服务器上;上下文恢复模块,APP客户端可以位于终端上;上下文恢复模块也可以位于服务器上。其中,上下文跟踪模块,上下文恢复模块,APP,APP客户端的主要功能分别如下:
上下文跟踪模块:
a)跟踪每个渲染指令流,更新本地渲染上下文;
b)接收上下文恢复模块发送的当前指令流号,将该指令流号的本地渲染上下文作为基线快照;之后每个恢复点都针对该基线快照计算上下文差;
c)当网络抖动恢复后,发送渲染上下文差给上下文恢复模块。
上下文恢复模块:
a)接收APP发送的渲染指令流,对渲染指令流进行处理,比如提取渲染指令流号,并转发给APP客户端;
b)发送当前已经接收到的渲染指令流的指令流号给上下文跟踪模块;
c)接收上下文跟踪模块发送的渲染上下文差,如果接收到的渲染上下文差是自定义消息格式则转化为渲染渲染指令流发给APP客户端,如果接收到的渲染上下文差是渲染指令流格式则直接发给APP客户端;
d)可选的,在网络抖动恢复后将网络抖动前最后执行的渲染指令流的指令流号发送给上下文跟踪模块。
APP和APP客户端在原有功能基础上刷新如下:
APP:
a)发送渲染指令流给上下文跟踪模块。
APP客户端:
a)接收上下文恢复模块发送的渲染渲染指令流。
需要说明的是,云游戏场景中终端和服务器之间消息传输的方式是以“消息流”的形式传递的,此处,消息流是指携带多个消息的集合,如上述渲染指令流、操作指令。
应理解的是,图4所示架构中,对APP、上下文跟踪模块的划分是一个逻辑概念,也可以将APP和上下文跟踪模块合一部署,将APP客户端和上下文恢复模块合一部署。本申请的以下实施例中,以APP和上下文跟踪模块分开部署、APP客户端和上下文恢复模块分开部署为例进行说明。
为便于理解,在介绍详细流程之前,将以OpenGL ES为例,具体说明渲染上下文的数据结构、渲染指令流的类型和渲染上下文差的生成、传递以及恢复方法。
如图5所示,为渲染上下文的数据结构示意图。
渲染上下文是存储渲染信息的一个数据结构,保存了各种状态,包括顶点信息、纹理信息、编译好的着色器信息等,绘制工作将基于这些信息来完成。具体的,渲染上下文包括:
1)一个上下文状态(Context State)及0到多个共享上下文状态(Context SharedState)
其中,上下文状态包括:
固定阶段(Fixed-function stages of the GPU)的配置:只改变某个渲染配置项,比如是否使能;
上下文的对象绑定关系(Bindings of objects to the context):这类指令把某个对象绑定或解绑到上下文中;
2)一个对象池(0bject Pool)
其中,对象池包括各种类型的对象,例如缓存、着色器程序等,每个对象跟踪它的内容和状态。对象池指令指定新生成或者删除某个对象。
对象内容指令:改变对象的内容。不同的对象类型的内容形式不尽相同,因此需要针对不同类型设计不同的数据结构。比如Buffer类,它的内容就是一块缓存区,任何对该缓存区的改变,都需要进行跟踪。但是某些对象类型可能有些无法跟踪或者跟踪代价比较大,那么可以进行弱化,即仅跟踪是否有差异,不跟踪差异内容:标记为内容无法跟踪,打上最后一次更改的时间戳;在比较差异时,如果时间戳相同,则可认为没有差异,即还是可比较的;若时间戳不同,则认为不可比较,该特性无法使用,采用原有流程恢复。
结合图5所示的渲染上下文的数据结构示意图,可以把渲染指令流分为四类,以下将用五种典型对象进行举例,详见表1。
表1渲染指令流分类
具体的,以下为四种指令示例:
1)glEnable(SCISSOR_TEST),表示当前的上下文启用裁剪测试;
2)glBindBuffers(GLsizei n,GLuint*buffers),表示绑定n个缓冲区对象到当前的上下文;
3)glGenBuffers(sizei n,uint*buffers),表示在pool中创建n个缓冲区对象;
4)glBufferData(GLenum target,GLsizeiptr size,const GLvoid*data,GLenumusage),表示初始化缓冲区对象target,把data指向的内容拷贝size个字节到target中。
以下将结合上述的渲染指令流和渲染上下文介绍渲染上下文差的生成、传递以及恢复方法。
对于渲染上下文差的计算,可以根据上述渲染指令流的四种类型进行比较,如下示例:
固定阶段配置类:比较某个配置是否改变;
对象的绑定关系类:比较某个对象是否绑定到上下文中;
对象池指令:比较某个对象是否在池中;
对象内容:比较某个对象的内容。
如前所述,某些对象类型可能被标记为不能比较内容(不能跟踪),因此则只比较时间戳;若时间戳相同则表示两者没有差别;
若时间戳不同,则表示无法生成上下文差,停止比较。
如上所述,上下文差的结果可能有三种情况:没有差别、有差别、无法比较。
对于可以比较的渲染上下文差,服务器需要将渲染上下文差传递到终端。传递的消息可以是上下文差异本身,或者转成渲染指令流,或者两者兼而有之,如表2所示:
表2渲染上下文差的传递方式
例如:传递某个Buffer类型的对象内容差,可以传递它改变的内存信息,或者转换成指令glBufferSubData进行传递。
上下文恢复模块收到渲染上下文差后,如果是指令流则直接转发APP客户端,如果是自定义格式的差异则先转化成渲染指令流再转发给APP客户端进行解析和执行。
如图6所示,为本申请实施例在图4的系统架构下的网络没有发生抖动时的基础流程示意图,从客户端和服务器交互的角度对本申请实施例提供的方法进行介绍。所述基础流程的步骤包括:
S601:启动游戏,捕获用户操作指令。
具体地,用户通过终端上安装的游戏客户端即APP客户端启动游戏。此时,APP客户端会生成操作指令,该操作指令包括用户通过终端输入设备比如屏幕触摸、鼠标、键盘或者手柄等输入的操作信息,如点击、向左拖拽1cm等。
S602、终端向APP发送操作指令。
终端和APP之间通过TCP/IP传输数据,依据TCP/IP协议,终端和APP之间会首先通过三次握手建立TCP/IP连接。
S603、APP解析操作指令,启动游戏,执行应用程序逻辑,生成渲染指令流。
S604、APP向上下文跟踪模块发送渲染指令流。
S605、APP向上下文恢复模块发送渲染指令流。
S606、上下文跟踪模块接收到渲染指令流后,更新本地渲染上下文,设置恢复点和基线快照。
具体的,上下文跟踪模块接收到渲染指令流后:
若本地渲染上下文基线快照还未生成,则将当前指令流号对应的本地渲染上下文保存起来,设置为基线快照;
若已有基线快照,则可根据规则将某些渲染指令流上的本地渲染上下文保存起来,命名为恢复点,或者只保存恢复点与基线快照的渲染上下文差。如图7a所示。
所述规则包括:
上下文跟踪模块接收到APP的一个或多个渲染指令流后;
上下文跟踪模块接收到APP的一帧渲染指令流后;
上下文跟踪模块接收到特定渲染指令流后,所述特性指令由上下文跟踪模块设置,比如Draw指令或Swap指令;或者
上下文跟踪模块周期性设置,所述周期由上下文跟踪模块设置。
S607、上下文恢复模块向APP客户端发送渲染指令流。
S608、上下文恢复模块发送指令流响应消息给上下文跟踪模块。
S607-S608步骤发生在上下文恢复模块接收到APP的渲染指令流后。
上下文恢复模块接收到APP的渲染指令流后,向APP客户端发送渲染指令流。具体的,上下文恢复模块接收到APP的渲染指令流后,可以先把两个恢复点之间的渲染指令缓存起来不发,等到下一个恢复点的时候一次性发送给APP客户端,这样可以保证抖动恢复时的完整性。
具体的,上下文恢复模块发送指令流响应消息给上下文跟踪模块时,所述指令流响应消息包含上下文恢复模块最后接收到的渲染指令流号。上下文恢复模块发送指令流响应消息的时机包括:
所述上下文恢复模块接收到每个渲染指令流后;
所述上下文恢复模块接收到多个渲染指令流后;
所述上下文恢复模块接收到特定指令后,所述特定指令由上下文恢复模块设置,比如Draw指令或Swap指令;
所述上下文恢复模块接收到一帧数据对应的渲染指令流后;或者
所述上下文恢复模块周期性发送,所述周期由上下文恢复模块设置。
S609、上下文跟踪模块接收到上下文恢复模块的指令流响应消息后,设置新的基线快照,删除已有的基线快照和各恢复点与已有基线快照的上下文差。
具体的,若上下文跟踪模块保存的是各恢复点与已有基线快照的上下文差,则重新计算各恢复点与新的基线快照的上下文差,如图7b所示。
S610、APP客户端接收到渲染指令流后,在本地GPU进行图像渲染和显示。
如图8所示,为本申请实施例在网络发生抖动时的流程示意图。该流程的步骤包括:
S801、APP检测到网络抖动,停止向上下文恢复模块发送渲染指令流;
S802、APP发送渲染指令流给上下文跟踪模块;
S803、上下文跟踪模块接收到渲染指令流后,根据规则设置恢复点,并更新本地渲染上下文。
具体的,设置恢复点的规则与前述步骤S606中所描述的规则一致。
需要说明的是,当上下文跟踪模块发现网络抖动时,服务器端不再生成新的恢复点,但还是要继续更新本地渲染上下文。
以上为本申请实施例的基础流程以及网络发生抖动时的流程;在此基础上,以下将通过具体的实施例,对网络抖动恢复时,通过渲染上下文差恢复渲染上下文的方法进行详细说明,其中,将通过不同的渲染上下文差计算和传递的方式对实施例进行区分。
实施例一:上下文恢复模块判断上下文跟踪模块的所有的恢复点的指令流号是否包含了上下文恢复模块执行的最后的指令流号,若包含,则根据渲染上下文差转换成渲染指令流,然后将渲染指令流发送给APP客户端。在这种实现方式下,终端接收渲染指令流后,先把两个恢复点之间的渲染指令流缓存起来不进行解析和执行,等到下一个恢复点的时候一次性解析和执行,这样可以保证抖动恢复时的完整性。所以上下文恢复模块执行的最后的指令流号与该模块记录的最后一个恢复点的指令流号相同。
如图9所示,为本申请实施例在网络抖动恢复时通过渲染上下文差来恢复渲染上下文的具体流程,步骤包括:
S901、上下文跟踪模块检测到网络抖动恢复,计算渲染上下文差。
具体的,在网络抖动恢复时,上下文跟踪模块把当前渲染上下文与所有恢复点的渲染上下文差发给上下文恢复模块。如图10a所示,由于保存了基线快照Ctx_base、各个恢复点与基线快照的上下文差Δctx_rcyN_base以及最新的渲染上下文Ctx_current,因此可以根据以下公式计算出当前渲染上下文与各恢复点的渲染上下文差,其中N为恢复点序号:
ΔctxN=Ctx_current-Ctx_base-Δctx_rcyN_base
需要说明的是,对于无法跟踪或者跟踪代价比较大的对象类型,可以进行弱化,仅跟踪是否有差异,不跟踪差异内容:即将对象类型标记为内容无法跟踪,并打上最后一次更改的时间戳;在比较差异时,如果时间戳相同,则可认为没有差异;若时间戳不同,则认为不可比较,该特性无法使用,采用原有流程恢复。
S902、上下文跟踪模块向上下文恢复模块发送渲染上下文差。
具体的,渲染上下文差可以通过自定义消息结构进行传递,上下文恢复模块接收到后再转化成渲染指令流;也可以由上下文跟踪模块先转换成渲染指令流再发送给上下文恢复模块。
S903、上下文恢复模块确认恢复点是否包含了网络抖动时的指令流号:
若是,则继续步骤S904;
若否,则继续步骤S906。
具体的,上下文恢复模块根据本模块对渲染指令流的执行情况,将最后执行的渲染指令流号与上下文跟踪模块设置的恢复点进行比较,如果能找到与最后执行的渲染指令流号相同的恢复点,则选取该恢复点对应的渲染上下文差进行恢复。如图10b所示。
S904、判断接收到的渲染上下文差是否渲染指令流格式:
若是,则继续步骤S908;
若否,则继续步骤S905。
S905、将接收到的渲染上下文差转换成渲染指令流,然后继续步骤S908。
S906、发送通知消息给上下文跟踪模块,说明恢复点没有包含网络抖动时的指令流号,然后继续步骤S907。
S907、用原有方式恢复,发送网络抖动期间的所有渲染指令流。
S908、将渲染渲染指令流发送给APP客户端,继续步骤S909。
S909、在本地GPU进行图像渲染及编码,生成视频流信息。
在本申请实施例一的实现方式下,在网络抖动恢复后,上下文跟踪模块只需要发送抖动前后渲染上下文差即可,大部分情况下渲染上下文差所对应的渲染指令流相比网络抖动期间累计的渲染指令流大大减少,从而可以降低网络流量以及大幅加快客户端的恢复,提升用户感受。
实施例二:当网络抖动恢复时,上下文跟踪模块等待上下文恢复模块在网络抖动恢复后上报抖动前上下文恢复模块接收到的最后的指令流号,或者上下文跟踪模块主动向上下文恢复模块发起消息询问抖动前上下文恢复模块接收到的最后的指令流号。在上下文跟踪模块得到明确的最后的指令流号后,根据最后的指令流号计算渲染上下文差发送给上下文恢复模块。
可以理解的是,上下文恢复模块可以在检测到网络抖动恢复时发送,或者上下文跟踪模块和上下文恢复模块之间的连接恢复的情况下,上报抖动前上下文恢复模块接收到的最后的指令流号,如图11所示,步骤包括:
S1101、上下文恢复模块检测到网络抖动回复,返回最后一个指令流号给上下文跟踪模块;
S1102、上下文跟踪模块找到离最后一个指令流最近的恢复点,计算该恢复点与当前渲染上下文的上下文差;
S1103、上下文跟踪模块发送渲染上下文差给上下文恢复模块;
S1104、上下文恢复模块判断接收到的渲染上下文差是否渲染指令流格式:
若是,则继续步骤S1106;
若否,则继续步骤S1105。
S1105、将渲染上下文差转化成渲染指令流,然后继续步骤S1106。
S1106、上下文恢复模块将渲染上下文差指令流发送给APP客户端。
S1107、在本地GPU进行图像渲染及编码,生成视频流信息。
可以理解的是,上下文跟踪模块可以在网络抖动恢复时向上下文恢复模块查询网络抖动前上下文恢复模块接收到的最后的指令流号,如图12所示,步骤包括:
S1201、上下文跟踪模块检测到网络恢复,询问上下文恢复模块最后一个指令流号。
S1202、上下文恢复模块返回最后一个指令流号给上下文跟踪模块。
S1203-S1208分别与S1102-S1107相同。
S1203、上下文跟踪模块找到离最后一个指令流最近的恢复点,计算该恢复点与当前渲染上下文的上下文差;
S1204、上下文跟踪模块发送渲染上下文差给上下文恢复模块;
S1205、上下文恢复模块判断接收到的渲染上下文差是否渲染指令流格式:
若是,则继续步骤S1207;
若否,则继续步骤S1206。
S1206、将渲染上下文差转化成渲染指令流,然后继续步骤S1207。
S1207、上下文恢复模块将渲染上下文差指令流发送给APP客户端。
S1208、在本地GPU进行图像渲染及编码,生成视频流信息。
在这种实现方式下,上下文跟踪模块不需要将所有恢复点的上下文差都发送给上下文恢复模块,只需找到离最后的指令流号最近的恢复点,并将该最近的恢复点对应的上下文差发送给上下文恢复模块。
与实施例一的差别在于能识别出抖动时对应的指令流号与最近的恢复点之间的上下文差,仅发送抖动点与最新的渲染上下文之间的渲染上下文差。
实施例三:上下文恢复模块通过向上下文跟踪模块查询恢复点信息,或者根据设置恢复点的规则,在上下文恢复模块记录恢复点信息;上下文恢复模块收到上下文跟踪模块发送的所有恢复点的渲染上下文差,由上下文恢复模块确认最近的恢复点,并根据记录的网络抖动点到最近的恢复点之间的渲染指令流,得出抖动点和最近的恢复点之间的上下文差,然后计算出抖动点与当前渲染上下文差。
如图13所示,上下文跟踪模块把所有恢复点与当前渲染上下文的上下文差发给上下文恢复模块,即Δctx1,Δctx2,Δctx3。可以理解的是,上下文跟踪模块和上下文恢复模块感知网络抖动的时间可能有差异,导致上下文跟踪模块并不知道上下文恢复模块执行到哪一个渲染指令流,所以发送了多个恢复点的上下文差。上下文恢复模块确认最近的恢复点为恢复点2,因此选取Δctx2。另外,上下文恢复模块根据记录的网络抖动点到恢复点2之间的渲染指令流,得出抖动点和恢复点2之间的渲染上下文差:Δctx_rem。则网络抖动时,当前渲染上下文和上下文恢复模块已执行的渲染上下文之间的上下文差Δctx_client可以根据以下公式得出:
Δctx_client=Δctx2-Δctx_rem
实施例三的流程与实施例一的流程类似,差别在于上下文恢复模块的处理。在本申请实施例中,上下文恢复模块需要记录恢复点信息和电子设备执行的最后一个渲染指令流的指令流号。在这种实现方式下,上下文恢复模块接收到渲染指令流后,可以实时解析和执行渲染指令流,而不需要保存两个恢复点之间的渲染指令流。相对于实施例一的方案节省了存储空间,渲染指令流也不会出现没有实时执行的情况。在这种实现方式下,上下文恢复模块在每次网络抖动恢复时能够准确的识别出未执行的渲染指令流,转发给APP客户端解析并执行。
需要说明的是,网络抖动恢复后,服务器和终端之间的消息流程有两种发送模式:
一种是上下文跟踪模块不再需要向上下文恢复模块发送上下文差,渲染指令流继续通过APP向上下文恢复模块发送。
另一种是APP不再发送渲染指令流给上下文恢复模块,而通过上下文跟踪模块转发渲染指令流。
图14示出了本申请实施例提供的服务器800的示意性框图。该服务器800包括处理器820、存储器860、通信接口840和总线850。其中,处理器820、存储器860、通信接口840通过总线850进行通信,也可以通过无线传输等其他手段实现通信。该存储器860用于存储指令,该处理器820用于执行该存储器860存储的指令。该存储器860存储程序代码811,且处理器820可以调用存储器860中存储的程序代码811执行前述渲染的方法。
该存储器860可以包括只读存储器和随机存取存储器,并向处理器820提供指令和数据。存储器860还可以包括非易失性随机存取存储器。该存储器860可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datadate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
该总线850除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。
应理解,图14所示的服务器800能够实现前述方法实施例中APP和上下文跟踪模块执行的各个过程。具体可参见上述方法实施例中的描述,为避免重复,此处适当省略详细描述。
图15是本申请实施例的电子设备900的结构示意图。该电子设备900可以但不限于是膝上型计算机、台式计算机、移动电话、智能手机、平板电脑、多媒体播放器、电子阅读器、智能车载设备、智能家电、人工智能设备、穿戴式设备、物联网设备、或虚拟现实/增强现实/混合现实设备等。
图15中的电子设备900包括通信模块910、传感器920、用户输入模块930、输出模块940、处理器950、存储器970以及电源980。其中,处理器950可以包括一个或者多个CPU。
图15所示的电子设备可以执行本申请实施例的用于图形渲染方法的各个步骤,具体地,处理器950中的一个或者多个CPU可以执行本申请实施例的渲染方法的各个步骤。
下面对图15中的电子设备900的各个模块进行详细的介绍。应理解的是,图15所示的模块仅是举例说明,具体实现中电子设备900可以包含更多或更少的模块。
通信模块910可以包括至少一个能使该电子设备与其他电子设备之间进行通信的模块。例如,通信模块910可以包括有线网络接口、广播接收模块、移动通信模块、无线因特网模块、局域通信模块和位置(或定位)信息模块等其中的一个或多个。本实施例不限定通信代别,例如可以是2G、3G、4G、5G或随着技术发展出现的其它通信代别。
例如,通信模块910能够从游戏服务器端实时获取用于渲染游戏画面所需的渲染指令。
传感器920可以感知用户的一些操作,传感器920可以包括距离传感器,触摸传感器等等。传感器920可以感知用户触摸屏幕或者靠近屏幕等操作。
例如,传感器920能够感知用户在游戏界面的一些操作。
用户输入模块930,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及接收与系统的用户设置以及功能控制有关的信号输入等。用户输入模块930包括触控面板和/或其他输入设备。例如,用户可以通过用户输入模块3030对游戏进行控制。
输出模块940包括显示面板,用于显示由用户输入的信息、提供给用户的信息或系统的各种菜单界面等。
可选的,可以采用液晶显示器(liquid crystal display,LCD)或有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板。在其他一些实施例中,触控面板可覆盖显示面板上,形成触摸显示屏。
另外,输出模块940还可以包括视频输出模块、告警器以及触觉模块等。该视频输出模块可以显示图形渲染后的游戏画面。
电源980可以在处理器950的控制下接收外部电力和内部电力,并且提供整个电子设备各个模块运行时需要的电力。
处理器950可以包括一个或者多个CPU,处理器950还可以包括一个或者多个GPU。
当处理器950包括多个CPU时,该多个CPU可以集成在同一块芯片上,也可以分别集成在不同的芯片上。
当处理器950包括多个GPU时,该多个GPU既可以集成在同一块芯片上,也可以分别集成在不同的芯片上。
当处理器950既包括CPU又包括GPU时,CPU和GPU可以集成在同一块芯片上。
例如,当图15所示的电子设备为智能手机时,智能手机的处理器内部一般与图像处理相关的是一个CPU和一个GPU。这里的CPU和GPU均可以包含多个核。
存储器970可以存储计算机程序,该计算机程序包括操作系统程序972和应用程序971等。其中,典型的操作系统如微软公司的Windows,苹果公司的MacOS等用于台式机或笔记本的系统,又如谷歌公司开发的基于的安卓系统等用于移动终端的系统。
存储器970可以是以下类型中的一种或多种:闪速(flash)存储器、硬盘类型存储器、微型多媒体卡型存储器、卡式存储器(例如SD或xD存储器)、随机存取存储器(randomaccess memory,RAM)、静态随机存取存储器(static RAM,SRAM)、只读存储器(read onlymemory,ROM)、电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、可编程只读存储器(programmable ROM,PROM)、磁存储器、磁盘或光盘。在其他一些实施例中,存储器970也可以是因特网上的网络存储设备,系统可以对在因特网上的存储器970执行更新或读取等操作。
例如,上述存储器970可以存储一种计算机程序(该计算机程序是本申请实施例的用于图形渲染方法对应的程序),当处理器950执行该计算机程序时,处理器950能够执行本申请实施例的用于图形渲染的方法。
存储器970还存储有除计算机程序之外的其他数据973,例如,存储器970可以存储本申请的图形渲染方法处理过程中的数据。
图15中各个模块的连接关系仅为一种示例,本申请任意实施例提供的电子设备也可以应用在其它连接方式的电子设备中,例如所有模块通过总线连接。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所描述的装置实施例仅仅是示意性的,例如,所述的模块的划分仅仅是一种逻辑功能的划分。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间可通过一条或多条通信总线或信号线进行通信连接。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一些具体实施方式,但本申请的保护范围并不局限于此。
Claims (18)
1.一种渲染的方法,其特征在于,所述方法应用于服务器,包括:
在网络发生网络抖动前,所述服务器通过所述网络陆续从电子设备接收操作指令,并根据所述操作指令生成多个第一渲染指令流,并将所述多个第一渲染指令流发送给所述电子设备;以及针对所述多个第一渲染指令流中的一个或多个第一渲染指令流,所述服务器生成并保存一个或多个第一渲染上下文,其中,所述第一渲染上下文与所述一个或多个第一渲染指令流一一对应,所述第一渲染上下文中包含了对应的第一渲染指令流或用于恢复所述对应的第一渲染指令流的信息;
在发生网络抖动时,所述服务器继续根据已接收到的操作指令生成第二渲染指令流,并根据所述第二渲染指令流生成并保存第二渲染上下文,其中,所述第二渲染上下文中包含了所述第二渲染指令流或用于恢复所述第二渲染指令流的信息,所述第二渲染指令流为所述网络抖动恢复前最近一次生成的渲染指令流;
在所述网络抖动恢复后,所述服务器向所述电子设备发送渲染上下文差的集合,所述渲染上下文差的集合中包括一个或多个渲染上下文差,其中,一个渲染上下文差为所述第二渲染上下文和一个所述第一渲染上下文的差,所述渲染上下文差的集合被所述电子设备用来得到所述第二渲染指令流。
2.根据权利要求1所述的方法,其特征在于,在生成并保存所述一个或多个第一渲染上下文中的任意一个第一渲染上下文之前包括:
确定所述第一渲染指令流为一个图像帧的数据对应的渲染指令流;或者
确定所述第一渲染指令流为目标渲染指令流,所述目标渲染指令流预先存储在所述服务器中。
3.根据权利要求1所述的方法,其特征在于,周期性执行生成并保存所述一个或多个第一渲染上下文的动作。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,还包括:
所述服务器生成第三渲染指令流,并根据所述第三渲染指令流生成第三渲染上下文,其中,所述第三渲染上下文中包含了所述第三渲染指令流或用于恢复所述第三渲染指令流的信息,所述第三渲染指令流为所述服务器接收到所述电子设备的操作指令后生成的第一个渲染指令流;
设置基线快照,所述基线快照为所述第三渲染上下文。
5.根据权利要求4所述的方法,其特征在于,还包括:
接收所述电子设备发送的渲染指令流响应,所述渲染指令流响应包含所述电子设备最近接收到的渲染指令流的指令流号,将所述基线快照更新为接收到的所述指令流号对应的第一渲染上下文。
6.根据权利要求5所述的方法,其特征在于,还包括:
在接收到所述渲染指令流响应后,删除已保存在所述服务器上的其它第一渲染上下文。
7.根据权利要求4或5所述的方法,其特征在于,所述保存所述一个或多个第一渲染上下文中的任意一个第一渲染上下文包括:保存所述任意一个第一渲染上下文与所述基线快照的差。
8.根据权利要求1-7中任意一项所述的方法,其特征在于,在所述网络抖动恢复后还包括:
获取所述电子设备在发生网络抖动前最后执行的渲染指令流的指令流号;
相应的,所述发送渲染上下文差的集合包括:发送所述第二渲染上下文与所述指令流号对应的第一渲染上下文的差。
9.根据权利要求1-7中任意一项所述的方法,其特征在于,所述发送渲染上下文差的集合包括:
发送所述第二渲染上下文与所述一个或多个第一渲染上下文中的每个第一渲染上下文的差的集合;或者
发送所述第二渲染上下文与所述基线快照和所述任意一个第一渲染上下文与所述基线快照的差异之和的差的集合。
10.一种渲染的方法,其特征在于,所述方法应用于电子设备,包括:
在网络发生网络抖动前,所述电子设备从服务器接收第一渲染指令流,所述第一渲染指令流用于执行图像渲染以显示图像;
所述电子设备向所述服务器发送渲染指令流响应,所述渲染指令流响应包含所述电子设备最近接收到的渲染指令流的指令流号;
在所述网络抖动恢复后,所述电子设备从所述服务器接收渲染上下文差的集合,解析所述渲染上下文差的集合中的部分或者全部渲染上下文差以得到网络抖动恢复前所述服务器最近一次生成的渲染指令流。
11.根据权利要求10所述的方法,其特征在于,在发送所述渲染指令流响应之前包括:
确定接收到的所述第一渲染指令流为一个图像帧的数据对应的渲染指令流;或者
确定接收到的所述第一渲染指令流为目标渲染指令流,所述目标渲染指令流预先存储在所述电子设备中。
12.根据权利要求10所述的方法,其特征在于,周期性执行发送所述渲染指令流响应的动作。
13.根据权利要求10所述的方法,其特征在于,还包括:
当所述渲染上下文差为用于恢复所述网络抖动恢复前所述服务器最近一次生成的渲染指令流的信息格式时,将所述渲染上下文差转换为渲染指令流格式。
14.根据权利要求10所述的方法,其特征在于,所述解析所述渲染上下文差的集合中的部分或者全部渲染上下文差包括:
选择最接近于所述网络抖动前最后执行的渲染指令流的渲染上下文差,解析并执行所述最接近于所述网络抖动前最后执行的渲染指令流的渲染上下文差。
15.根据权利要求10-14中任意一项所述的方法,其特征在于,还包括:
在所述网络抖动恢复后,向所述服务器主动上报所述网络抖动发生前最后执行的渲染指令流的指令流号;或者
在所述网络抖动恢复后,响应于所述服务器的查询指令,发送所述网络抖动发生前最后执行的渲染指令流的指令流号给所述服务器。
16.一种渲染装置,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,以执行如权利要求1至9中任意一项所述的方法。
17.一种渲染装置,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,以执行如权利要求10至15中任意一项所述的方法。
18.一种计算机系统,所述系统包括服务器和电子设备,所述服务器用于执行权利要求1至9所述方法的操作步骤,所述电子设备用于执行权利要求10至15所述方法的操作步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118171.XA CN113368492B (zh) | 2020-02-25 | 2020-02-25 | 渲染的方法、装置 |
PCT/CN2020/113666 WO2021169236A1 (zh) | 2020-02-25 | 2020-09-07 | 渲染的方法、装置 |
US17/895,562 US20220409999A1 (en) | 2020-02-25 | 2022-08-25 | Rendering method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118171.XA CN113368492B (zh) | 2020-02-25 | 2020-02-25 | 渲染的方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113368492A true CN113368492A (zh) | 2021-09-10 |
CN113368492B CN113368492B (zh) | 2023-06-27 |
Family
ID=77490676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118171.XA Active CN113368492B (zh) | 2020-02-25 | 2020-02-25 | 渲染的方法、装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220409999A1 (zh) |
CN (1) | CN113368492B (zh) |
WO (1) | WO2021169236A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113810901A (zh) * | 2021-09-24 | 2021-12-17 | 维沃移动通信有限公司 | 网络恢复方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11816129B2 (en) * | 2021-06-22 | 2023-11-14 | Pure Storage, Inc. | Generating datasets using approximate baselines |
CN114708369B (zh) * | 2022-03-15 | 2023-06-13 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN117112086A (zh) * | 2023-01-31 | 2023-11-24 | 荣耀终端有限公司 | 一种数据处理方法及电子设备 |
CN116185502B (zh) * | 2023-02-16 | 2023-11-07 | 南京金阵微电子技术有限公司 | 流水线处理器及电子设备 |
CN117036566A (zh) * | 2023-08-28 | 2023-11-10 | 北京趋动智能科技有限公司 | 远程图像渲染方法、系统、电子设备及可读存储介质 |
CN116828215B (zh) * | 2023-08-30 | 2023-11-14 | 湖南马栏山视频先进技术研究院有限公司 | 一种降低本地算力负荷的视频渲染方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104618733A (zh) * | 2014-10-31 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 图像远程投射方法和相关装置 |
CN108022286A (zh) * | 2017-11-30 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 画面渲染方法、装置及存储介质 |
CN110035328A (zh) * | 2017-11-28 | 2019-07-19 | 辉达公司 | 动态抖动和延迟容忍渲染 |
CN110227259A (zh) * | 2018-03-06 | 2019-09-13 | 华为技术有限公司 | 一种数据处理的方法、装置、服务器和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10046236B2 (en) * | 2016-06-13 | 2018-08-14 | Sony Interactive Entertainment America, LLC | Browser-based cloud gaming |
CN110083324A (zh) * | 2019-04-30 | 2019-08-02 | 华为技术有限公司 | 图像绘制的方法、装置、电子设备及计算机存储介质 |
-
2020
- 2020-02-25 CN CN202010118171.XA patent/CN113368492B/zh active Active
- 2020-09-07 WO PCT/CN2020/113666 patent/WO2021169236A1/zh active Application Filing
-
2022
- 2022-08-25 US US17/895,562 patent/US20220409999A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104618733A (zh) * | 2014-10-31 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 图像远程投射方法和相关装置 |
CN110035328A (zh) * | 2017-11-28 | 2019-07-19 | 辉达公司 | 动态抖动和延迟容忍渲染 |
CN108022286A (zh) * | 2017-11-30 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 画面渲染方法、装置及存储介质 |
CN110227259A (zh) * | 2018-03-06 | 2019-09-13 | 华为技术有限公司 | 一种数据处理的方法、装置、服务器和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113810901A (zh) * | 2021-09-24 | 2021-12-17 | 维沃移动通信有限公司 | 网络恢复方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021169236A1 (zh) | 2021-09-02 |
CN113368492B (zh) | 2023-06-27 |
US20220409999A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113368492A (zh) | 渲染的方法、装置 | |
US20220058766A1 (en) | Graphics rendering method and apparatus | |
JP5678743B2 (ja) | 情報処理装置、画像送信プログラム、画像送信方法および画像表示方法 | |
US9300818B2 (en) | Information processing apparatus and method | |
US20120113091A1 (en) | Remote Graphics | |
EP3311565B1 (en) | Low latency application streaming using temporal frame transformation | |
CN106453572B (zh) | 基于云服务器同步图像的方法及系统 | |
CN113286005B (zh) | 抓屏方法、装置、电子设备及存储介质 | |
JP6377263B2 (ja) | 端末機器においてスクリーンショットサービスを提供するための方法、装置、記憶媒体及び機器 | |
US20220058772A1 (en) | Image Processing Method and Device | |
US20200376375A1 (en) | Method and apparatus for performing client side latency enhancement with aid of cloud game server side image orientation control | |
JP2013130968A (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN113655975B (zh) | 图像显示方法、装置、电子设备和介质 | |
JPWO2011077550A1 (ja) | 画面中継装置 | |
EP3048524A1 (en) | Document display support device, terminal, document display method, and computer-readable storage medium for computer program | |
CN114222185B (zh) | 视频播放方法、终端设备及存储介质 | |
CN116405708A (zh) | 用人工智能视频帧分割处理视频帧像素数据的方法和装置 | |
US9161009B2 (en) | System, terminal device, and image capturing method | |
CN116775174A (zh) | 一种基于用户界面框架的处理方法、装置、设备及介质 | |
CN113836455A (zh) | 特效渲染方法、装置、设备、存储介质及计算机程序产品 | |
US9972064B1 (en) | Non-intrusive and low-power recording | |
CN112218003B (zh) | 一种桌面图像采集方法、装置及电子设备 | |
CN117376641A (zh) | 视频处理方法、电子设备、装置及存储介质 | |
CN118037923A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
CN117899472A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |