云游戏的画面渲染方法、装置、电子设备以及存储介质与流程

文档序号:31145110发布日期:2022-08-16 23:18阅读:174来源:国知局
云游戏的画面渲染方法、装置、电子设备以及存储介质与流程

1.本发明涉及计算机技术领域,具体涉及一种云游戏的画面渲染方法、装置、电子设备以及存储介质。


背景技术:

2.云游戏(cloud gaming)又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端,而是在云端服务器中运行,。
3.目前,云游戏包括视频流云游戏和指令流云游戏,在视频流云游戏中,云端服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可;在指令流云游戏中,云端服务器将图像渲染指令传输给玩家游戏终端,玩家游戏终端利用其自身的图形处理器渲染画面,相对视频流云游戏的好处是游戏画质没有损失,但是指令流云游戏占用的带宽远高于视频流云游戏。


技术实现要素:

4.本技术提供一种云游戏的画面渲染方法、装置、电子设备以及存储介质,可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
5.本技术提供了一种云游戏的画面渲染方法,包括:
6.获取目标游戏的图像渲染指令数据,所述图像渲染指令数据包括至少一个图像渲染指令,所述图像渲染指令包括至少一个图像指令参数;
7.根据所述图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数;
8.根据所述目标图像指令参数的参数值,将所述目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数;
9.对所述处理后指令参数进行融合处理,得到融合后图像渲染指令;
10.将融合后图像渲染指令发送至终端,以便所述终端根据所述融合后图像渲染指令渲染所述目标游戏的画面。
11.相应的,本技术还提供了一种云游戏的画面渲染装置,包括:
12.获取模块,用于获取目标游戏的图像渲染指令数据,所述图像渲染指令数据包括至少一个图像渲染指令,所述图像渲染指令包括至少一个图像指令参数;
13.确定模块,用于根据所述图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数;
14.压缩模块,用于根据所述目标图像指令参数的参数值,将所述目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数;
15.融合模块,用于对所述处理后指令参数进行融合处理,得到融合后图像渲染指令;
16.发送模块,用于将融合后图像渲染指令发送至终端,以便所述终端根据所述融合后图像渲染指令渲染所述目标游戏的画面。
17.可选的,在本技术的一些实施例中,所述压缩模块包括:
18.获取单元,用于获取所述目标图像指令参数的参数值;
19.确定单元,用于确定所述目标图像指令参数所分配的缓存序列;
20.压缩单元,用于基于所述目标图像指令参数的参数值和分配的缓存序列,将所述目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
21.可选的,在本技术的一些实施例中,所述压缩单元包括:
22.确定子单元,用于基于所述目标图像指令参数的参数值,确定缓存所述目标图像指令参数所需的字节数,得到目标字节流;
23.删除子单元,用于在所述目标图像指令参数分配的缓存序列中,删除未占用字节对应的数值,得到删除后数据序列;
24.压缩子单元,用于将删除后数据序列的数据压缩至所述目标字节流中,生成符合预定格式的数据序列,以得到处理后指令参数。
25.可选的,在本技术的一些实施例中,所述压缩子单元具体用于:
26.检测所述目标图像指令参数的参数值的符号类型;
27.在所述目标字节流的最高位中,填充与所述符号类型对应的数值;
28.基于所述删除后数据序列的数据,生成符合预定格式的数值序列;
29.以填充后的目标字节流的次高位为基准,依次将所述数值序列添加至填充后的目标字节流中,以得到处理后指令参数。
30.可选的,在本技术的一些实施例中,所述融合模块包括:
31.调用单元,用于调用所述目标游戏的游戏画布;
32.修改单元,用于处理后指令参数对所述游戏画布的画布数据进行修改,得到修改后画布数据;
33.生成单元,用于生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
34.可选的,在本技术的一些实施例中,所述生成单元具体用于:
35.将修改后画布数据保存至缓存空间中;
36.当接收到图像绘制请求时,则生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
37.可选的,在本技术的一些实施例中,还包括压缩模块,所述压缩模块具体用于:
38.将参数类型不为预设参数类型的图像指令参数确定为待压缩图像指令参数;
39.根据所述待压缩图像指令参数的参数类型,压缩所述待压缩图像指令参数;
40.所述融合模块具体用于:对压缩后图像渲染指令以及处理后图像渲染指令进行融合处理,得到融合后图像渲染指令。
41.本技术在获取目标游戏的图像渲染指令数据后,所述图像渲染指令数据包括至少一个图像渲染指令,所述图像渲染指令包括至少一个图像指令参数,根据所述图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确
定为目标图像指令参数,然后,根据所述目标图像指令参数的参数值,将所述目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,对所述处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,将融合后图像渲染指令发送至终端,以便所述终端根据所述融合后图像渲染指令渲染所述目标游戏的画面,本技术提供的云游戏的画面渲染方案,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
附图说明
42.为了更清楚地说明本技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1a是本技术提供的云游戏的画面渲染方法的场景示意图;
44.图1b是本技术提供的云游戏的画面渲染方法的流程示意图;
45.图1c是目前指令流云游戏中指令参数占用字节的分布示意图;
46.图2a是本技术提供的云游戏的画面渲染方法的另一流程示意图;
47.图2b是本技术提供的云游戏的画面渲染系统的结构示意图图;
48.图2c是本技术提供的云游戏的图形缓存状态机的结构示意图;
49.图3a是本技术提供的云游戏的画面渲染装置的结构示意图;
50.图3b是本技术提供的云游戏的画面渲染装置的另一结构示意图;
51.图4是本技术提供的电子设备的结构示意图。
具体实施方式
52.下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.本技术提供一种云游戏的画面渲染方法、装置、电子设备和存储介质。
54.其中,该云游戏的画面渲染装置具体可以集成在服务器中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
55.例如,请参阅图1a,本技术提供一种云游戏的画面渲染系统,该云游戏的画面渲染系统包括云游戏服务器10、游戏终端20以及用户30,游戏终端20可以显示包含多个云游戏的游戏列表,当用户30在游戏列表中选择到目标游戏后,云游戏服务器10可以获取目标游戏的图像渲染指令数据,该图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,然后,云游戏服务器10从至少一个图像指令参数中选择指令
参数类型为预设指令参数类型的目标图像指令参数,接着,云游戏服务器10将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,再然后,云游戏服务器10对处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,云游戏服务器10将融合后图像渲染指令发送至游戏终端20,以便游戏终端20根据融合后图像渲染指令显示目标游戏的画面。
56.本技术提供的云游戏的画面渲染方法,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
57.以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优先顺序的限定。
58.一种云游戏的画面渲染方法,包括:获取目标游戏的图像渲染指令数据,根据图像指令参数的参数类型,从至少一个图像指令参数中中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,根据所述目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后图像渲染指令,对处理后指令参数进行融合处理,得到融合后图像渲染指令,将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面。
59.请参阅图1b,图1b为本技术提供的云游戏的画面渲染方法的流程示意图。该云游戏的画面渲染方法的具体流程可以如下:
60.101、获取目标游戏的图像渲染指令数据。
61.目标游戏可以是多人在线战术竞技游戏或者多人射击游戏,可以通过有线网络或无线网络获取目标游戏的图像渲染指令数据,在本技术中,将需要进行画面渲染的游戏确定为目标游戏。
62.渲染,是计算机动画的最后一道工序,英文为render。因为渲染和着色这两个词在三维软件中是截然不同的两个概念,虽然它们的功能很相似,但却有不同。着色是一种显示方案,一般出现在三维软件的主要窗口中,和三维模型的线框图一样起到辅助观察模型的作用。在画面显示方案中,往往要把模型或者场景输出成图像文件、视频信号或者电影胶片,这就必须经过渲染程序,图像渲染指令为一组可执行图像渲染的代码。
63.图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,不同的图像指令参数对应的功能不同,比如,图像渲染指令数据包括一个图像渲染指令glbufferdata,该图像渲染指令glbufferdata该该用于将用户定义数据复制到当前绑定缓冲区的功能,其包括图像指令参数“gl_stream_draw”和“gl_dynamic_draw”,其中,“gl_stream_draw”图像指令参数表示每次绘制图像时数据会发生改变,“gl_dynamic_draw”表示表示每次绘制图像时数据可能会改变很多。
64.具体的,玩家根据游戏画面对终端进行操作控制,然后,终端通过可以利用有线或无线通信方式,将用户的操作指令发送至服务器,服务器当接收到操作指令后,通过中央处理器的计算,生成图像渲染指令,其中,图像渲染指令可以是开放图形库(open graphics library,opengl)的图像渲染指令,也可以是web图形库(web graphics library,webgl)的图像渲染指令,opengl是用于渲染2d、3d矢量图形的跨语言、跨平台的应用程序编程接口
(api)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象;webgl是一种3d绘图协议,这种绘图技术标准允许把javascript和opengl es 2.0结合在一起,通过增加opengl es 2.0的一个javascript绑定,webgl可以为html5 canvas提供硬件3d加速渲染,这样web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3d场景和模型了,还能创建复杂的导航和数据视觉化。显然,webgl技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3d结构的网站页面,甚至可以用来设计3d网页游戏等等。
65.102、根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数。
66.从101获取到目标游戏的图像渲染指令数据后,会得到图像渲染数据数据中的图像渲染指令。其中,所述图像渲染指令中包括至少一个图像指令参数。以opengl的图像渲染指令为例进行具体说明,比如,opengl的着色器指令glshadersource,该指令的含义是函数将着色器对象编译为第一个参数,其包括如下图像指令参数,分别为:“gluint shader”和“glchar**string”,其中“gluint shader”为长整型的参数类型,而“glchar**string为字符串的参数类型,对于数值类型(如长整型、短整型、整型以及字节型)的图像指令参数,可以将其压缩成预定格式的图像指令参数,即,可选的,在一些实施例中,步骤“根据图像指令参数的参数类型从至少一个图像指令参数中确定当前的目标图像指令参数”,具体可以包括:
67.(11)检测图像指令参数的参数类型;
68.(12)将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,得到至少一个目标图像指令参数。
69.例如,具体的,某个图像渲染指令包括图像渲染指令参数a、图像渲染指令参数b、图像渲染指令参数c、图像渲染指令参数d以及图像渲染指令参数e,其中,图像渲染指令参数a、图像渲染指令参数b、图像渲染指令参数c以及图像渲染指令参数d均为预设参数类型的图像指令参数,则确定图像渲染指令参数a、图像渲染指令参数b、图像渲染指令参数c以及图像渲染指令参数d为目标图像指令参数,然后,在这4个图像渲染指令参数中确定当前的目标图像指令参数。
70.需要说明的是,在指令流云游戏中,需要将图像渲染指令传输至终端,由终端对图像渲染指令进行解析,从而渲染出相应的游戏画面,本技术提供一种基于云游戏的画面渲染方案,对预设类型的图像指令参数采用本方案进行压缩,可以理解的是,为了便于后续将图像渲染指令传输至终端,对于不为预设参数类型的图像指令参数(非目标图像指令参数)而言,如字符串类型的图像指令参数,可以用zstandard压缩算法对该类型的图像指令参数进行压缩,zstandard压缩算法是一种无损压缩算法,其是基于数据额统计信息进行压缩的无语义数据流的无损编码;而对于纹理图片类型的图像指令参数,则用sharp p压缩算法对该类型的图像指令参数进行压缩,具体包括预测空间变换、色彩空间转换、使用调色板、多像素打包成一个像素以及透明通道值替换,即,可选的,在一些实施例中,具体还可以包括:
71.(21)将参数类型不为预设参数类型的图像指令参数确定为待压缩图像指令参数;
72.(22)根据所述待压缩图像指令参数的参数类型,压缩所述待压缩图像指令参数。
73.在游戏场景中,存在三维模型,三维模型由一组三维空间的多边形面片组成,每组
面片包括多个相互连接的多边形。多边形是指三条或三条以上的线段首尾顺次连接所组成的封闭图形,其中,三维模型中多边形为三角形。三维模型呈现的可以是真实的物体,也可以是虚构的物体,包括但不限于三维地图、三维设备、三维人物和三维游戏等。
74.在三维模型中,每个多边形的顶点就是该三维模型的顶点,顶点坐标为三维坐标,比如可用(x,y,z)来表示。纹理是二维空间的图片,实际上是一个二维数组,它的元素是一些颜色值。单个的颜色值被称为纹理元素或纹理像素。每一个纹理像素在纹理中都有一个唯一的地址,也就是纹理坐标,纹理坐标是二维坐标,可以用(u,v)来表示。在三维模型中存在一定数量的顶点坐标被共用的情况,即一个顶点坐标可对应多个纹理坐标。一般是在三维模型的拐点处,多个纹理坐标共用一个顶点坐标。因此在一个三维模型中,纹理坐标的数量要多于顶点坐标的数量。
75.对于纹理图片类型的图像指令参数,可以将顶点坐标和纹理坐标进行数据类型的转换。具体的,根据顶点坐标的坐标值范围转换顶点坐标,以及根据纹理坐标的坐标值范围转换纹理坐标,从而实现对纹理图片类型的图像指令参数的压缩。
76.103、根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
77.为了减少数据传输时的数据量,在确定目标图像指令参数后,本技术将目标图像指令参数的数据序列压缩为二进制的数据序列,实现对目标图像指令参数的压缩,以下以opengl指令为例进行具体说明,在opengl指令中,每个参数基本占用4个字节内存以上,比如opengl的绘制纹理glteximage2d指令,图像指令参数glenum,图像指令参数glint以及图像指令参数glsizei都是占用4个字节以上的内存,但图像指令参数实际对应的值大部分是索引号,比如gpu缓存的索引号,比如0表示第一块缓存,1表示第2块缓存,总共不会超过128块缓存,比如,图像指令参数target,0表示绘制二维图形,1表示绘制三维图形,比如shader指令参数的参数值等于1,用十六进制表示0x0000 0000 0000 0001,字节(byte)是计算机信息技术用于计量存储容量的一种计量单位,由于在计算机信息技术中,一个字节存储8位无符号数,储存的数值范围为0-255,因此,图像指令参数target和shader参数只需要1个字节就可以用于传输,即,可选的,在一些实施例中,步骤“将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后图像渲染指令”,具体可以包括:
78.(31)获取目标图像指令参数的参数值;
79.(32)确定目标图像指令参数所分配的缓存序列;
80.(33)基于目标图像指令参数的参数值和分配的缓存序列,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
81.本实施例提出的压缩方法是根据接口实际参数的值大小动态决定占用内存的大小,参数值越小占用的内存就越小,可以大幅减少每条图像渲染指令要传输的数据量。
82.进一步的,可以确定目标图像指令参数所需的字节数,然后,在目标图像指令参数分配的缓存序列中,删除未占用字节对应的数值,以得到处理后处理后指令参数,即,可选的,在一些实施例中,步骤“基于目标图像指令参数的参数值和分配的缓存序列,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数”,具体可以包括:
83.(41)根据参数值确定缓存目标图像指令参数所需的字节数,得到目标字节;
84.(42)删除目标图像指令参数在分配的缓存序列中未占用字节对应的数值,得到删除后数据序列;
85.(43)将删除后数据序列的数据压缩至目标字节中,生成符合预定格式的数据序列,以得到处理后指令参数。
86.其中,在本技术中,目标字节流指的是需要打包缓存的字节流,还是以图像指令参数shader等于1进行举例说明,在opengl中,图像指令参数shader占用4个字节,即,图像指令参数shader所分配的缓存序列数为4,用十六进制表示0x0000 0000 0000 0001,可以理解的是,在图像指令参数shader中,有三个字节对应的数据为空,即,均为“0000”,那么,可以删除目标图像指令参数在分配的缓存序列中未占用字节对应的数值,然后,将删除后数据序列的数据压缩至目标字节中,生成符合预定格式的数据序列,即,删除0000 0000 0000 0001的前三个字节的数据,得到0001,此时,0001则可以表示图像指令参数shader,即,得到处理后图像渲染指令。
87.需要说明的是,对于有符号(即正号或符号)的数据,在压缩数据时,还需要将符号通过0或1这种二进制的表示方式在数据序列中表示出来,以便于后续终端能够正确地显示目标游戏的游戏画面,即,可选的,在一些实施例中,步骤“将删除后数据序列的数据压缩至目标字节中,生成符合预定格式的数据序列,以得到处理后图像渲染指令”,具体可以包括:
88.(51)检测目标图像指令参数的参数值的符号类型;
89.(52)在目标字节流的最高位中,填充与符号类型对应的数值;
90.(53)根据删除后数据序列的数据生成符合预定格式的数值序列;
91.(54)以填充后的目标字节流的次高位为基准,依次将数值序列添加至填充后的目标字节流中,以得到处理后图像渲染指令。
92.在本技术中,用一个字节里的7个比特表示数据,最高的一个位(比特)表示下一个字节中是否具有数据0,若是则,表示该字节是整数的最后一个字节,1表示后面还有字节表示该数据高位,比如glshadersource里的第一个参数shader值为3543,按照opengl的接口定义是用gluint4个字节,而实际上用12位(|0000 0000|0000 0000|0000 1101|1101 0111|)表示3543。
93.针对这种情况,本实施例提供一种新型的压缩方案,请参阅图1c,将字节高位上的0都去掉不用传输(即去除没有数据的字节),假设图像指令参数对应的值为v,占用m个字节,每个字节有8个位(0或1)表示数据,要打包传输的缓存即目标字节流b,取v的低7位值到b,v右移7位,若用7位则可以表示v,那么第8位为0,若不是,则b最高位赋值1,其中,数字移位时出现的空白全部用0填充,需要说明的是,第1个字节的第8位若为1,则表示后续还有高位数据,若为0则表明后续没有高位数据,如图,第2个字节的第8位为0,则该数据保存时占用2个字节。
94.需要说明的是,如果是有符号的数据,最高位是表示正负数,1表示负数,0表示正数,需要把最高的符号位右移到最低位,转成无符号数据后采用上述方法进行压缩,比如,图像指令参数的值为-127,可知127的2进制原码=01111111,其反码则为10000000,在取反码后加1则为10000001,这就是-127的2进制表示。
95.104、对处理后指令参数进行融合处理,得到融合后图像渲染指令。
96.例如,具体的,在本技术中,是将处理后指令参数和不为预设参数类型的非目标图
像指令参数进行融合处理,得到融合后图像渲染指令,针对非目标图像指令参数的处理,请参阅前面实施例,在此不再赘述。
97.为了进一步减小数据传输时的数据量,进而降低占用的带宽,本实施例提供一种新的方法对未处理的图像渲染指令以及处理后图像渲染指令进行融合处理,首先,对目前的指令流云游戏的图像绘制流程进行说明。
98.在实际运用时,图像渲染指令参数glbufferdata向游戏画布(内存空间)写入3d模型数据,游戏画布可以理解为图形容器,运行的逻辑代码则可通过绘图接口在画布上绘制文本、线条、矩形以及圆形等图形。画布可包括上屏画布和离屏画布。上屏画布即已经显示在终端的屏幕上且与屏幕等宽等高。离屏画布则尚未显示在终端的屏幕上。游戏绘图资源是绘制游戏画面中游戏绘图元素的素材。游戏绘图资源包括静态游戏绘图资源和动态游戏绘图资源。静态游戏绘图资源是具有普遍一致性的游戏绘图资源。可以理解,游戏类型的子应用程序的游戏画面可以是对各用户都是相同的画面。动态游戏绘图资源是具有差异性的游戏绘制资源。比如,与用户交互后的响应画面等。在游戏画布中写入3d模型数据后,将该游戏画布传到终端;图像渲染指令参数lmapbufferrange/glbuffersubdata,修改模型数据时,需要将游戏画布有修改的数据传到终端;图像渲染指令参数glvertexattribponter指示d模型属性里游戏画布所缓存的数据;图像渲染指令参数gldrawelement指示终端需要绘制的顶点数据,从该流程可知,当游戏画面变动时,服务器与终端之间需要频繁的传输数据,导致占用了大量的带宽,基于此,本技术可以基于多个处理后指令参数对游戏画布的画布数据进行修改,得到修改后画布数据,以生成融合后图像渲染指令,即,可选的,在一些实施例中,步骤“对处理后指令参数进行融合处理,得到融合后图像渲染指令”,具体可以包括:
99.(61)调用目标游戏的游戏画布;
100.(62)基于多个处理后指令参数对游戏画布的画布数据进行修改,得到修改后画布数据;
101.(63)生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
102.具体的,图像渲染指令参数不需要传输至终端中,只需修改本地的游戏画布的游戏数据即可,当接收到图像绘制请求时,则生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
103.105、将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染显示目标游戏的画面。
104.例如,具体的,可以基于第三代合作伙伴计划(3rd generation partnership project,3gpp)、长期演进(long term evolution,lte)、全球互通微波访问(worldwide interoperability for microwave access,wimax)的移动通信,或基于tcp/ip协议族(tcp/ip protocol suite,tcp/ip)、用户数据报协议(user datagram protocol,udp)协议的计算机网络通信,将融合后图像渲染指令发送至终端,以便终端显示目标游戏的画面。
105.需要说明的是,终端在接收到融合后图像渲染指令时,需要对融合后图像渲染指令进行解码,即,将融合后图像渲染指令还原成相应的图形库语言类型,假设接收到的字节b,需要解析的类型是根据opengl标准确定的,比如收到的是glbindbuffer指令,那参数1类型一定是gluint,解码就是编码的逆过程,假设opengl类型用v保存,v取值b的第7位,如果b
的第8位是1表示后面还有数据,v左移7位,如果是第8位是0表示结束v取值结束。
106.本技术在获取目标游戏的图像渲染指令数据后,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,然后,根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,对处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面,本技术提供的云游戏的画面渲染方案,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
107.根据实施例所述的方法,以下将举例进一步详细说明。
108.在本实施例中将以该云游戏的画面渲染装置具体集成在服务器中为例进行说明。
109.请参阅图2a,一种云游戏的画面渲染方法,具体流程可以如下:
110.201、服务器获取目标游戏的图像渲染指令数据。
111.目标游戏可以是多人在线战术竞技游戏或者多人射击游戏,可以通过有线网络或无线网络获取目标游戏的图像渲染指令数据,在本技术中,将需要进行画面渲染的游戏确定为目标游戏,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,不同的图像指令参数对应的功能不同,具体的,玩家根据游戏画面对终端进行操作控制,然后,终端通过可以利用有线或无线通信方式,将用户的操作指令发送至服务器,服务器当接收到操作指令后,通过中央处理器的计算,生成图像渲染指令。
112.202、服务器根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数。
113.服务器在获取到目标游戏的图像渲染数据后,会得到图像渲染数据数据中的图像渲染指令。其中,图像渲染指令中包括至少一个图像指令参数。
114.以opengl的图像渲染指令为例进行具体说明,比如,opengl的着色器指令glshadersource,其包括如下图像指令参数,分别为:“gluint shader”和“glchar**string”,其中“gluint shader”为长整型的参数类型,而“glchar**string为字符串的参数类型,对于数值类型(如长整型、短整型、整型以及字节型)的图像指令参数,服务器可以将其压缩成预定格式的图像指令参数。
115.203、服务器根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
116.服务器可以根据接口实际参数的值大小动态决定占用内存的大小,参数值越小占用的内存就越小,可以大幅减少每条图像渲染指令要传输的数据量,例如,具体的,服务器可以删除目标图像指令参数在分配的缓存序列中未占用字节对应的数值,然后,将删除后数据序列的数据压缩至目标字节流中,生成符合预定格式的数据序列,如服务器将图像指令参数值为1的图像指令参数shader在分配的缓存序列中未占用字节对应的数值,即,删除0000 0000 0000 0001的前三个字节的数据,得到0001,得到处理后图像渲染指令。
117.204、服务器多个处理后指令参数进行融合处理,得到融合后图像渲染指令。
118.例如,具体的,服务器可以调用目标游戏的游戏画布,然后,服务器基于多个处理后指令参数对游戏画布的画布数据进行修改,得到修改后画布数据,服务器当接收到图像绘制请求时,则生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
119.205、服务器将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染显示目标游戏的画面。
120.例如,具体的,服务器可以基于第三代合作伙伴计划(3rd generation partnership project,3gpp)、长期演进(long term evolution,lte)、全球互通微波访问(worldwide interoperability for microwave access,wimax)的移动通信,或基于tcp/ip协议族(tcp/ip protocol suite,tcp/ip)、用户数据报协议(user datagram protocol,udp)协议的计算机网络通信,将融合后图像渲染指令发送至终端,以便终端显示目标游戏的画面。
121.本技术的服务器在获取目标游戏的图像渲染指令数据后,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,服务器根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,然后,服务器根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,服务器对处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,服务器将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面,本技术提供的云游戏的画面渲染方案,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
122.为了便于进一步理解本技术的云游戏的画面渲染方案,以下将以更新游戏画面的为例进行具体说明,请参阅图2b,本技术提供了一种指令流云游戏的画面渲染系统,该系统包括服务器和终端,其中,服务器中具有目标游戏的应用程序、开放式图形库、opengl指令、指令拦截模块以及图形缓存状态机,终端包括显示屏、指令接收模块以及图形处理器,指令拦截模块用于拦截指令,并用于对拦截到的指令进行压缩,指令接收模块用于接收指令,并用于对接收的指令进行解压,从而实现在终端的显示屏上显示目标游戏的游戏画面。
123.首先,服务器的指令拦截模块拦截opengl接口指令和参数,如果指令参数的值是无符号数值类型,则交给无符号整数压缩模块处理;如果是有符号的数据,最高位是表示正负数,1表示负数,0表示正数,需要把最高的符号位右移到最低位,转成无符号数据后进行编码;如果参数是字符串型,比如glshadersource里的string参数,用压缩算法zstd压缩;如果是纹理图片类型的参数,比如glteximage2d里的pixel像素值,是用sharpp压缩,具体请参阅前面实施例,在此不再赘述。
124.进一步的,请参阅图2c,由于现有的云游戏图像渲染指令是按每个draw(gldrawarray/gldrawelement)调用为基本单元,也就是把几何图形数据准备好,利用图形处理器进行渲染,绘制目标游戏的游戏画面时,需要多次调用glmapbufferrage往缓存里写入顶点以及颜色属性的数据,最后调用gldrawelement以便图形处理器渲染对应的三角面,
125.在本技术中,利用一个图形缓存状态机来记录每次绘制对几何图形数据的图像渲染指令,图形缓存状态机简称状态机,是表示有限个状态以及在这些状态之间的转移和动
作等行为的数学模型,最后合并成一条指令发送到终端,终端收到合并指令后还原成标称opengl指令后,由终端的显卡进行渲染显示。
126.服务器端运行的目标游戏调用glcreatebuffer图像渲染指令找图形缓存状态机创建一块内存保存需要绘制的数据,返回的是缓存索引号如1,服务器没有图像处理器硬件,因此依赖图形缓存状态机分配内存,终端收到glcreatebuffer图像渲染指令,终端的图像处理器会在终端分配一块图像处理器中的缓存,缓存索引号可以为2,因此,终端可以增加资源映射表记录服务器和终端资源的一一对应关系(即服务器缓存索引号与终端缓存索引号的对应关系)。
127.当服务器获取到目标游戏调用图像渲染指令时,比如,lmapbufferrange、、glflushmappedbufferrange、glunmapbuffer和/或glbuffersubdata等图像渲染指令时,这些图像渲染指令的目的是表示几何图形有变化,如游戏人物的顶点位置、颜色值和/或纹理坐标等,服务器可以先不传输这些图像渲染指令至终端中,而是把这些数据保存在图形缓存状态机里的索引1缓存里,服务器的目标游戏调用glvertexattribpointer图像渲染指令要用缓存的数据来绘制几何图形,所有图形都是由三角形组成的,服务器只需要记录顶点属性在缓存里的范围,同时,服务器将保存图像渲染指令所对应的哈希值,并且对已经传输到终端中的图像渲染指令进行标记,后续则不再传输,从而减少服务器传输数据的数据量。另外,服务器当接收图像绘制请求时,服务器根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,然后,服务器根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,对处理后指令参数进行融合处理,得到融合后图像渲染指令,具体为服务器生成gldrawelementwithdata图像渲染指令,并将该图像渲染指令发送至终端中,终端接收到该gldrawelementwithdata图像渲染指令时,需要对gldrawelementwithdata图像渲染指令进行解压操作,得到gldrawelementwithdata图像渲染指令中记录的图像渲染操作参数和数据,以实现对目标游戏的游戏画面渲染。
128.为便于更好的实施本技术的云游戏的画面渲染方法,本技术还提供一种基于上述云游戏的画面渲染装置(简称显示装置)。其中名词的含义与上述云游戏的画面渲染方法中相同,具体实现细节可以参考方法实施例中的说明。
129.请参阅图3a,图3a为本技术提供的云游戏的画面渲染装置的结构示意图,其中该分发装置可以包括获取模块301、确定模块302、压缩模块303、融合模块304以及发送模块305,具体可以如下:
130.获取模块301,用于获取目标游戏的图像渲染指令数据。
131.目标游戏可以是多人在线战术竞技游戏或者多人射击游戏,获取模块301可以通过有线网络或无线网络获取目标游戏的图像渲染指令数据,在本技术中,将需要进行画面渲染的游戏确定为目标游戏,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,不同的图像指令参数对应的功能不同。
132.确定模块302,用于根据图像指令参数的参数类型从至少一个图像指令参数中确定当前的目标图像指令参数。
133.确定模块302在获取到目标游戏的图像渲染数据后,会得到图像渲染数据数据中的图像渲染指令。其中,图像渲染指令中包括至少一个图像指令参数以opengl的图像渲染
指令为例进行具体说明,比如,opengl的着色器指令glshadersource,其包括如下图像指令参数,分别为:“gluint shader”和“glchar**string”,其中“gluint shader”为长整型的参数类型,而“glchar**string为字符串的参数类型,对于数值类型(如长整型、短整型、整型以及字节型)的图像指令参数,确定模块302可以将其压缩成预定格式的图像指令参数。
134.压缩模块303,用于根据所述目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
135.压缩模块303可以根据接口实际参数的值大小动态决定占用内存的大小,参数值越小占用的内存就越小,可以大幅减少每条图像渲染指令要传输的数据量。
136.可选的,在一些实施例中,压缩模块303具体可以包括:
137.获取单元,用于获取目标图像指令参数的参数值;
138.确定单元,用于确定目标图像指令参数所分配的缓存序列;
139.压缩单元,用于基于目标图像指令参数的参数值和分配的缓存序列,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数。
140.可选的,在一些实施例中,压缩单元具体可以包括:
141.确定子单元,用于基于目标图像指令参数的参数值,确定缓存所述目标图像指令参数所需的字节数,得到目标字节流;
142.删除子单元,用于在目标图像指令参数分配的缓存序列中,删除未占用字节对应的数值,得到删除后数据序列;
143.压缩子单元,用于将删除后数据序列的数据压缩至目标字节流中,生成符合预定格式的数据序列,以得到处理后指令参数。
144.可选的,在一些实施例中,压缩子单元具体可以用于:检测目标图像指令参数的参数值的符号类型;在目标字节流的最高位中,填充与符号类型对应的数值;基于所述删除后数据序列的数据,生成符合预定格式的数值序列;以填充后的目标字节流的次高位为基准,依次将数值序列添加至填充后的目标字节流中,以得到处理后指令参数。
145.融合模块304,用于对处理后指令参数进行融合处理,得到融合后图像渲染指令。
146.融合模块304可以基于多个处理后指令参数对游戏画布的画布数据进行修改,得到修改后画布数据,以生成融合后图像渲染指令,即,可选的,在一些实施例中,融合模块304具体可以包括:
147.调用单元,用于调用目标游戏的游戏画布;
148.修改单元,用于处理后指令参数对所述游戏画布的画布数据进行修改,得到修改后画布数据;
149.生成单元,用于生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
150.可选的,在一些实施例中,生成单元具体可以用于:将修改后画布数据保存至缓存空间中,当接收到图像绘制请求时,则生成与修改后画布数据对应的图像渲染指令,得到融合后图像渲染指令。
151.可选的,在一些实施例中,请参阅图3b,显示装置具体还可以包括压缩模块306,压缩模块306具体可以用于:将参数类型不为预设参数类型的图像指令参数确定为待压缩图像指令参数,根据待压缩图像指令参数的参数类型,压缩待压缩图像指令参数;
152.融合模块304具体可以用于:对压缩后图像渲染指令以及处理后图像渲染指令进行融合处理,得到融合后图像渲染指令。
153.发送模块305,用于将融合后图像渲染指令发送至终端,以便所述终端根据所述融合后图像渲染指令渲染所述目标游戏的画面。
154.例如,具体的,发送模块305可以基于第三代合作伙伴计划(3rd generation partnership project,3gpp)、长期演进(long term evolution,lte)、全球互通微波访问(worldwide interoperability for microwave access,wimax)的移动通信,或基于tcp/ip协议族(tcp/ip protocol suite,tcp/ip)、用户数据报协议(user datagram protocol,udp)协议的计算机网络通信,将融合后图像渲染指令发送至终端,以便终端显示目标游戏的画面
155.本技术的获取模块301在获取目标游戏的图像渲染指令数据后,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,确定模块302根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,然后,压缩模块303根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,融合模块304对处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,发送模块305将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面,本技术提供的云游戏的画面渲染方案,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
156.此外,本技术还提供一种电子设备,如图4所示,其示出了本技术所涉及的电子设备的结构示意图,具体来讲:
157.该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
158.处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
159.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至
少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
160.电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
161.该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
162.尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
163.获取目标游戏的图像渲染指令数据,根据图像指令参数的参数类型,从至少一个图像指令参数中中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,根据所述目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后图像渲染指令,对处理后指令参数进行融合处理,得到融合后图像渲染指令,将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面。
164.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
165.本技术在获取目标游戏的图像渲染指令数据后,图像渲染指令数据包括至少一个图像渲染指令,图像渲染指令包括至少一个图像指令参数,根据图像指令参数的参数类型,从至少一个图像指令参数中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,然后,根据目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的数据序列,得到处理后指令参数,接着,对处理后指令参数进行融合处理,得到融合后图像渲染指令,最后,将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面,本技术提供的云游戏的画面渲染方案,将预设参数类型的图像指令参数压缩为预定格式的数据序列,并融合多个处理后指令参数,实现对图像渲染指令的压缩,减少了图像渲染指令数据的数据量,从而可以在保证游戏画质不损失的前提下,降低云游戏占用的带宽。
166.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
167.为此,本技术提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术所提供的任一种云游戏的画面渲染方法中的步骤。例如,该指令可以执行如下步骤:
168.获取目标游戏的图像渲染指令数据,根据图像指令参数的参数类型,从至少一个图像指令参数中中将参数类型为预设参数类型的图像指令参数确定为目标图像指令参数,根据所述目标图像指令参数的参数值,将目标图像指令参数的数据序列压缩为预定格式的
数据序列,得到处理后图像渲染指令,对处理后指令参数进行融合处理,得到融合后图像渲染指令,将融合后图像渲染指令发送至终端,以便终端根据融合后图像渲染指令渲染目标游戏的画面。
169.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
170.其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
171.由于该存储介质中所存储的指令,可以执行本技术所提供的任一种云游戏的画面渲染方法中的步骤,因此,可以实现本技术所提供的任一种云游戏的画面渲染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
172.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
173.以上对本技术所提供的一种云游戏的画面渲染方法、装置、电子设备以及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1