一种基于边缘计算3D模拟场景图像的批处理绘制方法技术

技术编号:23768485 阅读:45 留言:0更新日期:2020-04-11 21:09
本发明专利技术涉及图像处理技术领域,具体涉及一种基于边缘计算3D模拟场景图像的批处理绘制方法,包括以下步骤:首先加载图片,再判断是否为单张图片,若为单张图片,则直接进入下一步骤;若为多张图片,则通过拼图算法拼接为大图,再更新顶点坐标和纹理坐标,存入CPU内存,然后由CPU上传到GPU中,执行一次Draw Call,完成对所有坑位的绘制,最后显示到屏幕;本发明专利技术提出了一种拼接图的合并绘制不同材质物体的方法,把所有坑位要显示的纹理图片拼装成一张大的纹理图片,每个坑位都使用这个大纹理图片的一块子区域,这样就保证了每个坑位都有相同的纹理数据,满足了可以合并成一个batch的要求。

A batch rendering method of 3D simulation scene image based on edge computing

【技术实现步骤摘要】
一种基于边缘计算3D模拟场景图像的批处理绘制方法
本专利技术涉及图像处理
,具体涉及一种基于边缘计算3D模拟场景图像的批处理绘制方法。
技术介绍
3D模拟场景通常是使用GPU来绘制的,这样保证了绘制的性能和清晰度,GPU的软件接口一般会采用OpenGL的通用跨平台接口实现,OpenGL的绘制流程一般为先指定定点数据、纹理坐标数据、纹理数据、光照和一些场景矩阵数据作为输入,然后GPU得到这些数据之后根据OpenGLPipeline来生成所要显示的图像,这些数据是在CPU里创建的,因此需要由CPU把这些数据传输给GPU,每一次绘制都需要有一次这样的传输,很耗时。针对这一瓶颈OpenGL提出了batch批处理的概念,即当有相同数据(顶点数据和纹理坐标数据除外)绘制时可以合并成一次绘制(DrawCall),这样就避免了上述提到的问题。但是batch需要满足一定的条件,即刚才提到的,除了顶点数据和纹理坐标数据之外的其他数据要相同才能进行合并,这就要求绘制的物体除了位置不同以外,其他的像纹理数据和场景矩阵数据都要相同,否则就不能合并。3D场景的图标坑位的其他属性都是相同的,但展示的图片也就是OpenGL里的纹理数据是不同的,这样就无法合并为一个DrawCall或者说一个batch来处理,也就是说每一个坑位的绘制都要有一次CPU到GPU的数据提交,每一帧每一个坑位都需要做一次DrawCall,对性能影响很大。现有方案一般是建议绘制的物体尽量使用相同材质的,即尽量使用相同的纹理及相同的图片,这个在各个游戏引擎中都有体现,但这种方法很少用在3D场景渲染上,因为3D场景渲染上不同坑位需要展现不同的图片内容,这种情况下就无法进行合并绘制,所以并不适合用这种方法。基于此,本专利技术设计了一种基于边缘计算3D模拟场景图像的批处理绘制方法,以解决上述问题。
技术实现思路
本专利技术的目的在于提供一种基于边缘计算3D模拟场景图像的批处理绘制方法,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于边缘计算3D模拟场景图像的批处理绘制方法,包括以下步骤:S1:加载图片;S2:判断是否为单张图片,若为单张图片,则直接进入下一步骤;若为多张图片,则通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标,再进入下一步骤;S3:将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入CPU内存;S4:合并所有的坑位数据,然后由CPU将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到GPU中,执行一次DrawCall,完成对所有坑位的绘制。S5:绘制到缓冲区;S6:显示到屏幕。优选的,步骤S2中拼图算法在设计时,为了节省内存,可根据图片size分类,把size相近的图片拼装在一起并尽量保证拼接规整,这样能够避免存在小区域从而造成空间浪费,能够进一步节省内存。优选的,步骤S1中拼接图片时,图片之间需要保持1个到2个像素的间隙。优选的,步骤S2中拼装后的整张大图的纹理宽高坐标定为0-1。优选的,当步骤S2中大图中的某一个个别场景要更新数据时,只需要更新相应的子区域图片数据。优选的,当更新相应的子区域图片数据时可以使用OpenGL的接口:glTexSubImage2D(GLenumtarget,GLintlevel,GLintxoffset,GLintyoffset,GLsizeiwidth,GLsizeiheight,GLenumformat,GLenumtype,constvoid*pixels),用来更新大图对应的子区域。优选的,OpenGL的接口glTexSubImage2D中的xoffset代表x方向的偏移值,yoffset代表y方向的偏移值,width代表需要更新图片的宽度,height代表需要更新图片的高度。优选的,在正确显示图片时,需要把纹理坐标修改为对应大图中的一个子区域,即步骤S2中记录的各个图片对应于整个大图的纹理坐标(0-1),用这个坐标来指定真正需要绘制的图片在大图中所在的位置。与现有技术相比,本专利技术的有益效果是:本专利技术提出了一种拼接图的合并绘制不同材质物体的方法,能解决上面提到的在合并绘制3D场景不同材质坑位时纹理数据不同的问题,具体为把所有坑位要显示的纹理图片都拼装成一张大的纹理图片,每个坑位都使用这个大纹理图片的一块子区域,这样就保证了每个坑位都有相同的纹理数据了,也就满足了可以合并成一个batch的要求,提升了绘制的效率。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术的流程图;图2为本专利技术坑位图片的拼接示意图;图3为本专利技术拼接后图片的宽高坐标示意图;图4为本专利技术接口函数的参数示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。请参阅图1-4,本专利技术提供一种技术方案:一种基于边缘计算3D模拟场景图像的批处理绘制方法,为了实现batch批处理绘制,要满足OpenGLbatch绘制的基本条件,即除了OpenGLpipelineinput数据(顶点数据,纹理坐标数据)之外的其他状态值(纹理数据,变换矩阵)都必须是相同的,这种情况下可以合并为一个batch进行批处理绘制,CPU只需要将数据合并,向GPU提交一次即可,从而优化了绘制效率。在3D场景渲染上通过OpenGL绘制的坑位上展示的图片都不一样,但是其他的数据参数都是满足OpenGL的batch条件的,因此只要把纹理数据统一即可。本方案针对这一思路,采用拼图的方式,即把各个坑位的图片拼接起来,组成一张大图,包括以下步骤:S1:加载图片;S2:判断是否为单张图片,若为单张图片,则直接进入下一步骤;若为多张图片,则通过拼图算法拼接为大图,拼装后的整张大图的纹理宽高坐标定为0-1,记录下各个图片对应于整个大图的纹理坐标,用于指定真正需要绘制的图片在大图中所在的位置,再进入下一步骤;S3:将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入CPU内存;S4:合并所有的坑位数据,然后由CPU将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到GPU中,执行一次DrawCall,完成对所有坑位的绘制。S5:绘制到缓冲区;S6:显示到屏幕。当其中有个别坑位需要更新时,也只需要更新相应的子区域图片数据即可,可以使用OpenGL的本文档来自技高网
...

【技术保护点】
1.一种基于边缘计算3D模拟场景图像的批处理绘制方法,其特征在于,包括以下步骤:/nS1:加载图片;/nS2:判断是否为单张图片,若为单张图片,则直接进入下一步骤;若为多张图片,则通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标,再进入下一步骤;/nS3:将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入CPU内存;/nS4:合并所有的坑位数据,然后由CPU将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到GPU中,执行一次Draw Call,完成对所有坑位的绘制。/nS5:绘制到缓冲区;/nS6:显示到屏幕。/n

【技术特征摘要】
1.一种基于边缘计算3D模拟场景图像的批处理绘制方法,其特征在于,包括以下步骤:
S1:加载图片;
S2:判断是否为单张图片,若为单张图片,则直接进入下一步骤;若为多张图片,则通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标,再进入下一步骤;
S3:将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入CPU内存;
S4:合并所有的坑位数据,然后由CPU将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到GPU中,执行一次DrawCall,完成对所有坑位的绘制。
S5:绘制到缓冲区;
S6:显示到屏幕。


2.根据权利要求1所述的一种基于边缘计算3D模拟场景图像的批处理绘制方法,其特征在于:步骤S2中所述拼图算法在设计时,为了节省内存,可根据图片size分类,把size相近的图片拼装在一起并尽量保证拼接规整,这样能够避免存在小区域从而造成空间浪费,能够进一步节省内存。


3.根据权利要求2所述的一种基于边缘计算3D模拟场景图像的批处理绘制方法,其特征在于:所述步骤S1中拼接图片时,图片之间需要保持1个到2个像素的间隙。


4.根据权利要求1所述的一种基于边缘计算3D模拟场景图像的批处理绘制方法,其特征在于:步骤S2中拼装后的整张所述大图的纹理宽高坐标定为0-1。

【专利技术属性】
技术研发人员:李强李利民马新强秦福建胡晓庆
申请(专利权)人:重庆文理学院
类型:发明
国别省市:重庆;50

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

1