一种图像绘制方法、装置、设备及介质与流程

专利2026-08-26  7


本发明涉及图像处理,尤其是涉及一种图像绘制方法、装置、设备及介质。


背景技术:

1、在三维设计软件的视图渲染中,正常情况下物体按距离相机的距离,物体之间保持正确的遮挡关系,只把“看得见”的像素渲染在屏幕上。底层图形渲染引擎,如opengl一般通过深度缓存及深度测试(depth testing)技术来实现此目的。

2、但在某些应用中,需要对场景“分层渲染”。例如三维结构设计软件中的楼层平面视图中,需要引用建筑软件同层的场景视图,并置于“底层”显示,而自身的场景要覆盖建筑场景。该类需求即希望能定义不同的图层,同一图层内仍保持正常遮挡关系渲染,不同的图层间是直接覆盖的关系。如图1中,定义了三个图层,顶层场景不考虑深度直接覆盖普通层,普通层场景又覆盖底层场景。

3、在opengl等底层三维引擎中,为了能渲染出正确遮挡效果的帧画面,需要用到深度缓冲和深度测试技术来防止被遮挡的面渲染到其它面的前面。目前,渲染视图过程中,是将位于上方图层的场景先绘制到帧缓冲中,在屏幕上正常绘制完底层的场景视图后,再将帧缓冲作为纹理绘制到场景中,若有多张则按覆盖顺序继续绘制,该方法由于渲染时每一图层都需要创建一个帧缓冲,若存在多个图层或屏幕是高分辨率时,则将消耗大量内存及显卡资源,性能较差。


技术实现思路

1、本发明提供了一种图像绘制方法、装置、设备及介质,以解决多图层渲染绘制过程中需要消耗大量资源的问题,具体地,公开了如下技术方案:

2、第一方面,本发明实施例提供了一种图像绘制方法,该方法包括:

3、获取待绘制图像,所述待绘制图像中包含n个图层,每个图层包括一个或多个图元,每个图元包含若干个像素,每个像素对应一个颜色值和一个深度值,n≥2且为正整数;

4、在每两个图层之间创建一个中间节点,其中每个所述中间节点被配置为始终朝向屏幕,且和屏幕完全重合的四边形,以及设置每个所述中间节点在绘制时总是通过深度测试;

5、开启深度测试,在深度测试函数为less模式的情况下,绘制第一图层上的所有图元,并将所述所有图元的颜色值写入颜色缓存区,将所述所有图元的深度值写入深度缓存区,且写入的位置关系一一对应,所述第一图层是所述n个图层中的底层图层;

6、对创建的所述第一图层和第二图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,保持所述颜色缓存区的颜色值不变;

7、按照对所述第一图层和所述中间节点的绘制方法,依次绘制所述第二图层至第n图层上的所有图元,得到绘制后图像,其中所述绘制后图像中,所述第n图层上所有图元的像素值写入到所述颜色缓存区,所述第n图层上所有图元的深度值写入到所述深度缓存区。

8、结合第一方面,在一种可能的实施方式中,上述对创建的所述第一图层和第二图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,包括:调用预设接口执行所述中间节点上挂的片元着色器代码,按照设置的总是通过深度测试的规则,将所述深度缓存区中的每个深度值复位为初始值。

9、结合第一方面,在另一种可能的实施方式中,当n=3时,所述按照对所述第一图层和所述中间节点的绘制方法,依次绘制所述第二图层至第n图层上的所有图元,得到绘制后图像,包括:

10、绘制第二图层上的所有图元,并将所述第二图层上的所有图元的颜色值写入到所述颜色缓存区,与所述第一图层上的颜色值相融合,将所述第二图层上的所有图元的深度值写入所述深度缓存区,且写入的位置关系一一对应,所述第二图层是所述3个图层中的中间图层;

11、对创建的所述第二图层和第三图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,保持所述颜色缓存区的颜色值不变;

12、绘制第三图层上的所有图元,并将所述第三图层上的所有图元的颜色值写入到所述颜色缓存区,与所述第二图层上的颜色值相融合,以及将所述第三图层上的所有图元的深度值写入所述深度缓存区,且写入的位置关系一一对应,第三图层是3个图层中的顶层图层。

13、结合第一方面,在又一种可能的实施方式中,对创建的所述第二图层和第三图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,包括:调用预设接口执行所述中间节点上挂的片元着色器代码,按照设置的总是通过深度测试的规则,将所述深度缓存区中的每个深度值复位为初始值。

14、结合第一方面,在又一种可能的实施方式中,在每两个图层之间创建一个中间节点,每个所述中间节点被配置为始终朝向屏幕,且和屏幕完全重合的四边形,以及设置每个所述中间节点在绘制时总是通过深度测试,包括:

15、根据屏幕大小定义四边形的四个顶点,所述四个顶点的顶点坐标围成的区域与所述屏幕大小相同;设置每个中间节点的渲染状态,所述渲染状态为:绘制时关闭颜色值写入功能,以及设置深度测试为总是通过;根据所述四边形的四个顶点和所述渲染状态,创建n-1个中间节点。

16、结合第一方面,在又一种可能的实施方式中,所述方法还包括:对顶点着色器的参数进行设置,使得设置后的所述参数中深度值变为预设深度值;和/或,对片元着色器中的参数进行设置,使得设置后的所述参数中包含透明度。

17、第二方面,本发明实施例提供了一种图像绘制装置,该装置包括:

18、获取模块,用于获取待绘制图像,所述待绘制图像中包含n个图层,每个图层包括一个或多个图元,每个图元包含若干个像素,每个像素对应一个颜色值和一个深度值,n≥2且为正整数;

19、创建模块,用于在每两个图层之间创建一个中间节点,每个所述中间节点被配置为始终朝向屏幕,且和屏幕完全重合的四边形,以及设置每个所述中间节点在绘制时总是通过深度测试;

20、绘制模块,用于开启深度测试,在深度测试函数为less模式的情况下,绘制第一图层上的所有图元,并将所述所有图元的颜色值写入颜色缓存区,将所述所有图元的深度值写入深度缓存区,且写入的位置关系一一对应,以及对创建的所述第一图层和第二图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,保持所述颜色缓存区的颜色值不变,所述第一图层是所述n个图层中的底层图层;

21、所述绘制模块,还用于按照对所述第一图层和所述中间节点的绘制方法,依次绘制所述第二图层至第n图层上的所有图元,得到绘制后图像,其中所述绘制后图像中,所述第n图层上所有图元的像素值写入到所述颜色缓存区,所述第n图层上所有图元的深度值写入到所述深度缓存区。

22、第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式所述的图像绘制方法。

23、第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式所述的图像绘制方法。

24、另外,本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或其对应的任一实施方式所述的图像绘制方法。

25、本发明提供的图像绘制方法、装置及设备,预先在每两个图层之间创建中间节点,该中间节点覆盖范围与屏幕完全重合,且深度测试总是通过,当正常开启深度测试后,按图层覆盖的先后顺序从底层图层开始进行绘制,每绘制一个图层后,利用创建的中间节点将上一图层绘制写入到深度缓存区中的深度值清空,而写入到颜色缓存区中的颜色值保持不变,这样在绘制下一图层时,可将深度值继续写入到被清空的深度缓存区中,本方法只需要一份帧缓存,从而避免为每个图层渲染创建自己的帧缓存,导致耗费额外的内存及显卡资源,本方法不需要耗费额外的内存及显卡资源,同时又能保证图层内部的遮挡关系,进而提升图像绘制效率,节约资源。


技术特征:

1.一种图像绘制方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述对创建的所述第一图层和第二图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,包括:

3.根据权利要求1所述的方法,其特征在于,当n=3时,所述按照对所述第一图层和所述中间节点的绘制方法,依次绘制所述第二图层至第n图层上的所有图元,得到绘制后图像,包括:

4.根据权利要求3所述的方法,其特征在于,所述对创建的所述第二图层和第三图层之间的中间节点进行绘制,将所述深度缓存区中的深度值清空,包括:

5.根据权利要求1-4任一项所述的方法,其特征在于,所述在每两个图层之间创建一个中间节点,每个所述中间节点被配置为始终朝向屏幕,且和屏幕完全重合的四边形,以及设置每个所述中间节点在绘制时总是通过深度测试,包括:

6.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:

7.一种图像绘制装置,其特征在于,所述装置包括:

8.一种电子设备,其特征在于,包括存储器和处理器,所述存储器和所述处理器相连接;

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的图像绘制方法。

10.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的图像绘制方法。


技术总结
本发明涉及图像处理技术领域,具体公开一种图像绘制方法、装置、设备及介质,该方法包括:获取待绘制图像,在每两个图层之间创建一个中间节点,开启深度测试,在深度测试函数为LESS模式的情况下,绘制第一图层上的所有图元,并将所有图元的颜色值写入颜色缓存区,将深度值写入深度缓存区,对创建的第一图层和第二图层之间的中间节点进行绘制,将深度缓存区中的深度值清空,保持颜色缓存区的颜色值不变;按照对第一图层和中间节点的绘制方法,依次绘制第二图层至第N图层上的所有图元得到绘制后图像。本方法只需要一份帧缓存,避免了为每个图层渲染创建自己的帧缓存,所以不需要耗费额外的内存及显卡资源,进而节约资源、提升图像绘制效率。

技术研发人员:朱晓峰
受保护的技术使用者:广联达科技股份有限公司
技术研发日:
技术公布日:2024/7/25
转载请注明原文地址: https://bbs.8miu.com/read-444342.html

最新回复(0)