System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及图像处理,尤其涉及一种用于结构、流体动力学和热仿真场景的图像渲染方法。
技术介绍
1、结构、流体动力学和热仿真场景通常是使用gpu来绘制的,这样保证了绘制的性能和清晰度。gpu的软件接口一般会采用opengl的通用跨平台接口实现。opengl的绘制流程一般为先指定定点数据,纹理坐标数据,纹理数据,光照,以及一些场景矩阵数据,作为输入。然后gpu得到这些数据之后根据opengl pipeline来生成所要显示的图像。这些数据是在cpu里创建的,因此需要由cpu把这些数据传输给gpu。每一次绘制都需要有一次这样的传输,很耗时,nvidia在gdc曾提出,25k batchs/sec会吃满1ghz的cpu,100%的使用率。发挥不出gpu应有的性能,受限于cpu带宽。针对这一瓶颈opengl提出了batch批处理的概念,即当有相同数据(顶点数据纹理坐标数据除外)的绘制时可以合并成一次绘制(draw call),这样就避免了上述提到的问题。但是batch需要满足一定的条件,即刚才提到的,除了顶点数据和纹理坐标数据之外的其他数据要相同才能进行合并。这就要求绘制的物体除了位置不同以外,其他的像纹理数据,场景矩阵数据都要相同,否则就不能合并。即也就还是会有上面提到的问题.仿真场景的模型纹理其他的属性都是相同的,但展示的模型也就是opengl里纹理数据是不同的,这样就无法合并为一个draw call或者说一个batch来处理,也就是说每一个坑位的绘制都要有一次cpu到gpu的数据提交,每一帧每一个坑位都需要做一次draw call
2、现有方案一般是建议绘制的物体尽量使用相同材质的,即尽量使用相同的纹理及相同的图片,这个在各个游戏引擎中都有体现,但这种方法不适合在仿真场景的渲染上,因为仿真场景展示的模型纹理图片肯定不可能是相同的。
3、基于此,本专利技术提出一种用于结构、流体动力学和热仿真场景的图像渲染方法,以使不同材质物体的纹理图片满足可以合并成一个batch的要求。
技术实现思路
1、本专利技术提供了一种用于结构、流体动力学和热仿真场景的图像渲染方法,以使不同材质物体的纹理图片满足可以合并成一个batch的要求。
2、根据本专利技术的一方面,提供了一种用于结构、流体动力学和热仿真场景的图像渲染方法,该方法包括:
3、获取结构、流体动力学和热仿真场景中的多张图片,通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标;
4、将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入cpu内存;
5、合并所有的坑位数据,然后由cpu将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到gpu中,执行一次draw call,完成对所有坑位的绘制渲染。
6、可选的,通过拼图算法拼接为大图,包括:
7、根据图片尺寸进行分类,并将图片尺寸相同的图片通过拼图算法拼接为大图。
8、可选的,通过拼图算法拼接为大图,包括:
9、在拼接图片时,图片之间需要保持1个到2个像素的间隙。
10、可选的,记录下各个图片对应于整个大图的纹理坐标,包括:
11、拼接后的整张所述大图的纹理宽高坐标定为0-1。
12、可选的,该方法,还包括:
13、当对整个大图中结构、流体动力学或者热仿真场景中对应的目标图片进行数据更新时,只更新整个大图中与目标图片对应的区域的图片数据。
14、可选的,当对整个大图中结构、流体动力学或者热仿真场景中对应的目标图片进行数据更新时,只更新整个大图中与目标图片对应的区域的图片数据,包括:
15、当对整个大图中结构、流体动力学或者热仿真场景中对应的目标图片进行数据更新时,采用opengl的接口:gltexsubimage2d(glenum target,glint level,glintxoffset,glint yoffset,glsizei width,glsizei height,glenum format,glenumtype,constvoid*pixels),更新整个大图中与目标图片对应的区域的图片数据;
16、其中,所述opengl的接口gltexsubimage2d中的xoffset代表x方向的偏移值,yoffset代表y方向的偏移值,width代表需要更新图片的宽度,height代表需要更新图片的高度。
17、可选的,在完成对所有坑位的绘制渲染之后,还包括:
18、在显示结构、流体动力学和热仿真场景中图片时,将原始纹理坐标修改为对应整个大图中对应区域的相对纹理坐标,以指定实际绘制图片在整个大图中的所在位置。
19、根据本专利技术的另一方面,提供了一种用于结构、流体动力学和热仿真场景的图像渲染装置,该装置包括:
20、图片拼接模块,用于获取结构、流体动力学和热仿真场景中的多张图片,通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标;
21、图片数据存储模块,用于将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入cpu内存;
22、图片绘制渲染模块,用于合并所有的坑位数据,然后由cpu将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到gpu中,执行一次draw call,完成对所有坑位的绘制渲染。
23、根据本专利技术的另一方面,提供了一种电子设备,所述电子设备包括:
24、至少一个处理器;以及
25、与所述至少一个处理器通信连接的存储器;其中,
26、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术任一实施例所述的用于结构、流体动力学和热仿真场景的图像渲染方法。
27、根据本专利技术的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本专利技术任一实施例所述的用于结构、流体动力学和热仿真场景的图像渲染方法。
28、根据本专利技术的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本专利技术任一实施例所述的用于结构、流体动力学和热仿真场景的图像渲染方法。
29、本专利技术实施例的技术方案,通过获取结构、流体动力学和热仿真场景中的多张图片,通过拼图算法拼接为大图,记录下各个图片对应于整个大图的纹理坐标;将原来每个坑位的顶点坐标和纹理坐标数据更新为对应整张大图的顶点坐标和纹理坐标,存入cpu内存;合并所有的坑位数据,然后由cpu将已经存入的所有坑位顶点和纹理的坐标数据,一次上传到gpu中,执行一次drawcall,完成对所有坑位的绘制渲染,解决了结构、流体动力学和热仿真场景中由于计算量导致图本文档来自技高网...
【技术保护点】
1.一种用于结构、流体动力学和热仿真场景的图像渲染方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,通过拼图算法拼接为大图,包括:
3.根据权利要求1所述的方法,其特征在于,通过拼图算法拼接为大图,包括:
4.根据权利要求1所述的方法,其特征在于,记录下各个图片对应于整个大图的纹理坐标,包括:
5.根据权利要求2所述的方法,其特征在于,还包括:
6.根据权利要求5所述的方法,其特征在于,当对整个大图中结构、流体动力学或者热仿真场景中对应的目标图片进行数据更新时,只更新整个大图中与目标图片对应的区域的图片数据,包括:
7.根据权利要求1所述的方法,其特征在于,在完成对所有坑位的绘制渲染之后,还包括:
8.一种用于结构、流体动力学和热仿真场景的图像渲染装置,其特征在于,包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任
...【技术特征摘要】
1.一种用于结构、流体动力学和热仿真场景的图像渲染方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,通过拼图算法拼接为大图,包括:
3.根据权利要求1所述的方法,其特征在于,通过拼图算法拼接为大图,包括:
4.根据权利要求1所述的方法,其特征在于,记录下各个图片对应于整个大图的纹理坐标,包括:
5.根据权利要求2所述的方法,其特征在于,还包括:
6.根据权利要求5所述的方法,其特征在于,当对整个大图中结构、流体动力学或者热仿真场景中对应的目标图...
【专利技术属性】
技术研发人员:李利民,尹朝卿,周轶凡,
申请(专利权)人:三微电子科技苏州有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。