CN116912395B - 基于OpenGL的图形混合渲染方法、装置及存储介质 - Google Patents
基于OpenGL的图形混合渲染方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116912395B CN116912395B CN202311181266.6A CN202311181266A CN116912395B CN 116912395 B CN116912395 B CN 116912395B CN 202311181266 A CN202311181266 A CN 202311181266A CN 116912395 B CN116912395 B CN 116912395B
- Authority
- CN
- China
- Prior art keywords
- primitive
- dimensional
- graphics
- bounding box
- rendered
- 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.)
- Active
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 118
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000013507 mapping Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明公开了基于OpenGL的图形混合渲染方法、装置及存储介质,方法包括通过对待渲染图形进行图元拆分以得出二维图元和三维图元,并构建对应的图元集合;计算每个图元的矩形包围盒;当三维图元对应的矩形包围盒内存在二维图元时,将对应二维图元加入到三维图元集合中以构建混合图元集合;调用CPU对二维图元集合中的每个二维图元进行渲染及调用GPU对混合图元集合中的每个三维图元和每个二维图元进行渲染;将GPU得出的渲染图像与CPU得出的渲染图像合并得出待渲染图形的渲染图像。本发明通过对图形的拆分,以同时利用CPU和GPU实现对图形的渲染,提高渲染效率的同时还降低了对于显卡性能的要求,进一步降低设备成本。
Description
技术领域
本发明涉及图形渲染,尤其涉及基于OpenGL的图形混合渲染方法、装置及存储介质。
背景技术
由于三维图形在空间上存在前后遮盖的效果,在渲染时相对于二维图形来说需要考虑深度,这种图形的渲染若采用CPU来渲染时其效率较低,因此,目前的三维图形的渲染一般是由编程人员通过OpenGL所提供的大量API接口函数向GPU发送指令以通过硬件加速图形渲染。也即,在使用OpenGL进行图形渲染时,需要依赖于GPU进行渲染,其中, GPU是显卡的核心处理模块,GPU的渲染效率很大程度上依赖于显卡的性能以及驱动适配情况。
近年来众多国产显卡完成研发并投入市场,国产显卡的用户群体不断扩张,国产显卡的价格较为便宜,越来越多的人开始使用国产显卡,使用国产显卡进行OpenGL图形渲染的过程中,随着图形规模的不断增长,其渲染效率会逐渐下降,影响用户的使用。因此,对于一些企业,在显卡设备的选择上,若选择价格较为昂贵的主流显卡来实现图形渲染时会增加企业的成本,同时也存在信息安全和可靠性的隐患;若选择国产显卡,图形规模的扩充会导致图形的渲染效率大大降低,影响用户的使用,甚至还会增加后续的维护成本。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供基于OpenGL的混合图形渲染方法,其能够解决现有技术中因三维图形的渲染效率取决于显卡的性能时会导致企业选择的显卡设备的成本高或渲染效率低下等问题。
本发明的目的之二在于提供基于OpenGL的混合图形渲染装置,其能够解决现有技术中因三维图形的渲染效率取决于显卡的性能时会导致企业选择的显卡设备的成本高或渲染效率低下等问题。
本发明的目的之三在于提供一种存储介质,其能够解决现有技术中因三维图形的渲染效率取决于显卡的性能时会导致企业选择的显卡设备的成本高或渲染效率低下等问题。
本发明的目的之一采用如下关键结构技术方案实现:
基于OpenGL的图形混合渲染方法,包括:
图元获取步骤:获取待渲染图形并对所述待渲染图形进行图元拆分以得出若干个二维图元和若干个三维图元,以及根据若干个二维图元构成二维图元集合、根据若干个三维图元构建三维图元集合;
包围盒计算步骤:遍历所述三维图元集合中的每个三维图元以得出每个三维图元的矩形包围盒,以及遍历所述二维图元集合中的每个二维图元以得出每个二维图元的矩形包围盒;所述每个三维图元的矩形包围盒至少包括三维图元的所有点在XY平面上的投影,所述每个二维图元的矩形包围盒至少包括二维图元的所有点;
二维映射步骤:根据每个二维图元的矩形包围盒和每个三维图元的矩形包围盒依次判断每个三维图元的矩形包围盒内是否存在二维图元,若是,将对应二维图元加入到所述三维图元集合,进而构建得出混合图元集合;所述混合图元集合包括所述三维图元集合中的每个三维图元和新添加到所述三维图元集合中的二维图元;
渲染步骤:调用CPU对所述二维图元集合内的每个二维图元进行渲染以及调用GPU对所述混合图元集合中的每个三维图元和每个二维图元进行渲染;
合并步骤:将GPU得出的渲染图像与CPU得出的渲染图像合并后得出待渲染图形的渲染图像。
进一步地,所述图元获取步骤包括:首先对所述待渲染图形进行图元拆分以得出若干个图元,然后对每个图元进行类型判断;其中,当一个图元所构建的点集内,所有点的Z坐标均为0,则该图元为二维图元;当一个图元所构建的点集内,存在至少一个点的Z坐标不为0,则该图元为三维图元。
进一步地,所述包围盒计算步骤包括:对于每个图元,首先计算得出该图元的所有点中能够取到的最大X坐标值、最大Y坐标值、最小X坐标值和最小Y坐标值,并根据能够取到的最大X坐标值的点、能够取到的最大Y坐标值的点、能够取到的最小X坐标值的点和能够取到的最小Y坐标值的点构建得出基于XY平面水平竖直方向的矩形包围盒;其中,图元为二维图元或三维图元。
进一步地,所述包围盒计算步骤还包括:当一个三维图元的矩形包围盒与另一个三维图元的矩形包围盒重叠,并且重叠部分占上述两个三维图元中的任一个三维图元的矩形包围盒的总面积的比例超过预设比例时,将这两个三维图元的矩形包围盒合并以得出新的三维图元的新的矩形包围盒;以及将这两个三维图元从所述三维图元集合中删除以及将新的三维图元添加到所述三维图元集合中;所述预设比例的取值范围为[0.5,1]。
进一步地,所述二维映射步骤具体包括:当一个三维图元的矩形包围盒内至少存在二维图元的一点时,则该三维图元的矩形包围盒内存在对应二维图元。
进一步地,所述渲染步骤还包括:调用CPU对所述二维图元集合内的每个二维图元进行渲染时,将CPU的渲染视口设为待渲染图形的整幅图像;调用GPU对所述混合图元集合内的每个三维图元和每个二维图元进行渲染时,将GPU的渲染视口设为待渲染图形的整幅图像。
进一步地,所述合并步骤包括:首先获取CPU渲染得出的整幅图像和获取GPU渲染得出的整幅图像,然后将GPU渲染得出的整幅图像中每个三维图元的矩形包围盒的所有像素点按照坐标值复制粘贴到CPU渲染得出的整幅图像中的对应位置,以得出所述待渲染图形的渲染图像。
进一步地,所述图元获取步骤还包括:根据图元拆分算法对所述待渲染图形进行图元拆分;其中,所述图元拆分算法包括Delaunay三角剖分算法、Catmull-Clark曲面细分算法和RDP算法。
本发明的目的之二采用如下关键结构技术方案实现:
基于OpenGL的图形混合渲染装置,包括存储器和处理器,所述存储器上存储有在处理器上运行的图形混合渲染程序,所述图形混合渲染程序为计算机程序,所述处理器执行所述图形混合渲染程序时实现如本发明的目的之一采用的基于OpenGL的图形混合渲染方法的步骤。
本发明的目的之三采用如下关键结构技术方案实现:
一种计算机可读存储介质,其上存储有图形混合渲染程序,所述图形混合渲染程序为计算机程序,所述图形混合渲染程序被处理器执行时实现如本发明的目的之一采用的基于OpenGL的图形混合渲染方法的步骤。
相比现有技术,本发明的有益效果在于:
本发明通过对三维图形进行拆分以使得三维图形拆分为二维图元和三维图元,然后分别采用CPU对二维图元进行渲染,采用GPU对三维图元进行渲染,解决了现有的CPU渲染三维图形效率低下的问题,还解决了GPU在对三维图元渲染时其效率需要依赖于显卡导致企业成本增加等的问题。
附图说明
图1为本发明提供的渲染图形拆分后得出的图元1、图元2、图元3、图元4以及图元5的矩形包围盒的示意图;
图2为图1中三维图元1与三维图元2合并后的矩形包围盒以及图元3、图元4以及图元5的矩形包围盒的示意图;
图3为本发明提供的基于OpenGL的混合图形渲染方法流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
实施例一
本发明提供一种基于OpenGL的图形混合渲染方法,如图3所示,包括:
步骤S1、获取待渲染图形并对待渲染图形进行图元拆分以得出若干个二维图元和若干个三维图元,以及根据若干个二维图元构建二维图元集合、根据若干个三维图元构建三维图元集合。
一般来说,多维图形均是由一些诸如点、线、三角面片等基本图形组合而成的,这些基本图形也称为图元,一个多维图形均可以拆分为若干个图元。对于三维图形来说,由于CPU渲染三维图形的能力有限,因此,本发明需要对三维图形进行图元拆分并对拆分后的图元进行分类,包括二维图元和三维图元。对于拆分得出的二维图元可采用CPU进行渲染,对拆分出的三维图元可采用GPU进行渲染,通过利用CPU和GPU的并行渲染方式,可大大提高三维图形的渲染效率。这样,对于企业来说,选择国产显卡时,既可避免因图形扩充而导致图形渲染效率低的问题,同时还可降低企业成本、保证信息的安全性和可靠性。
同时,本发明通过利用CPU和GPU进行并行渲染,既解决了CPU实现三维图形渲染效率低下的问题,也解决了完全采用GPU渲染大规模二三维图形时效率不高的问题,进一步提高了图形渲染的效率。
更为优选地,本发明中的图元拆分一般采用图元拆分算法来实现,比如:Delaunay三角剖分算法、Catmull-Clark曲面细分算法和RDP(Ramer-Douglas-Peucker)算法。
更为进一步地,如果一个图形的所有点都处于同一平面上,则该图形为二维图形;相反,如果图形的所有点不处于同一平面上,则该图形为三维图形。也即,三维图形可以包含二维图形,而二维图形不能包含三维图形。
同样地,对于图元的类型也包括二维图元和三维图元。其中,当一个图元构建的点集内,所有点的Z坐标均为0,则该图元为二维图元;当一个图元构建的点集内,存在至少一个点的Z坐标不为0,则该图像为三维图元。本发明通过上述方式可实现对拆分出的图元进行类型判断,以区分二维图元和三维图元,以便根据不同类型的图元采用不同的渲染方式进行渲染。具体地,如图1所示,本发明所给出的待渲染图形经过图元拆分后可得出5个图元,其中,图元1、图元2为三维图元,图元3、图元4、图元5为二维图元。
步骤S2、遍历三维图元集合中的每个三维图元以得出每个三维图元的矩形包围盒,遍历二维图元集合中的每个二维图元以得出每个二维图元的矩形包围盒。图元的矩形包围盒至少包括对应图元的所有点。也即,三维图元的矩形包围盒至少包括三维图元的所有点在XY平面上的投影,二维图元的矩形包围盒至少包括二维图元的所有点。具体地,对于每个图元来说,首先计算得出该图元的所有点中能够取到的最大X坐标值、最大Y坐标值、最小X坐标值和最小Y坐标值,并根据能够取到的最大X坐标值的点、能够取到的最大Y坐标值的点、能够取到的最小X坐标值的点和能够取到的最小Y坐标值的点构建基于XY平面水平竖直方式的矩形包围盒,也称为AABB包围盒。
基于上述方法可分别计算得出每个三维图元的矩形包围盒和每个二维图元的矩形包围盒。如图1中的各个矩形框实际上是指对应各个图元的矩形包围盒的范围。
步骤S3、根据每个二维图元的矩形包围盒和每个三维图元的矩形包围盒判断每个三维图元的矩形包围盒内是否存在二维图元,若是,将执行步骤S4。
实际上,由于三维图元的矩形包围盒内不仅包括三维图元,同时还可能包括二维图元,并且二维图元与三维图元之间还可能存在相互覆盖的可能。因此,为了保证后续合并时的准确性,在对三维图元进行渲染时,还需要对三维图元的矩形包围盒内的二维图元进行渲染。也即,判断每个三维图元的矩形包围盒内是否存在二维图元。
具体,如图1所示中的图元1的矩形包围盒内存在图元3的点,图元2的矩形包围盒内也存在图元3的点,需要将图元3添加到三维图元集合中。也即,当一个三维图元的矩形包围盒内存在任意二维图元的一个或多个点时,则认为该矩形包围盒内存在二维图元。
步骤S4、将对应二维图元加入到三维图元集合中,进而构建得出混合图元集合。
也即,将步骤S3中得出的存在于三维图元的矩形包围盒内的每个二维图元添加到三维图元集合中,以构建得出混合图元集合。其中,混合图元集合包括三维图元集合中的每个三维图元和新添加到三维图元集合中的二维图元。
若每个三维图元的矩形包围盒内均不存在二维图元,则直接执行步骤S5,进行下一步的渲染操作。
步骤S5、调用CPU对二维图元集合中的每个二维图元进行渲染以及调用GPU对混合图元集合中的每个二维图元和每个三维图元进行渲染。
本发明通过采用CPU对二维图元集合中的每个二维图元进行渲染,同时采用GPU实现对混合图元集合中的每个三维图元和二维图元的渲染作为补充,在保留CPU渲染效率的同时,还保留了GPU对三维图元渲染的准确性,有效提升图形的整体渲染效率。同时,本发明采用CPU和GPU结合的渲染方式,也使得大规模二三维图形的渲染效率不再局限于显卡的性能,解决了现有采用CPU实现三维图形渲染效率低下的问题,也解决现有采用国产显卡进行OpenGL图形渲染时,在图形规模达到一定程序时导致渲染效率变差的问题。通过本发明可解决国产显卡处理三维图形的缺陷,在不影响图形渲染效率的前提下,大大节省企业的设备成本。
更为优选地,本发明通过采用CPU和GPU实现对图形渲染,也即采用多线程的方式对图形进行并行,进一步提高了渲染效率。
更为优选地,在调用CPU渲染二维图元集合内的每个二维图元时,本发明还将CPU的渲染视口设为待渲染图形的整幅图像,这样,在进行二维图元渲染时,会一次性对二维图元集合中的所有二维图元的图形进行渲染,避免系统频繁调用CPU进行多次渲染,影响系统性能。同理,在调用GPU渲染混合图元集合内的每个图元时,将GPU的渲染视口设为待渲染图形的整幅图像,在进行图元渲染时,一次性对混合图元集合中的所有三维图元的图形和所有二维图元的图形进行渲染,避免频繁调用GPU进行多次渲染,影响系统性能。如图1所示,图元3、图元4、图元5是由CPU进行渲染,图元1、图元2、图元3是由GPU进行渲染的。
步骤S6、将GPU得出的渲染图像与CPU得出的渲染图像合并后得出待渲染图形的渲染图像。
具体地,获取CPU渲染得出的整幅图像和获取GPU渲染得出的整幅图像,将GPU渲染得出的整幅图像中每个三维图元的矩形包围盒的所有像素点,按照坐标值复制粘贴到CPU渲染得出的整幅图像中的对应位置以得出待渲染图形的渲染图像。
本发明通过对待渲染图形的图元拆分以得出二维图元和三维图元,并根据三维图元的矩形包围盒对二维图元进行映射以构建混合图元集合,然后由GPU对混合图元集合中的每个图元进行渲染,由CPU渲染所有的二维图元,最后将二者的渲染结果重新组装成一帧完整图像,以解决CPU无法处理三维图形渲染的问题以及在图形规模达到用一定程度时采用GPU渲染三维图形导致渲染性能下降都问题。本发明通过由CPU来分担绘制二维图元的任务,由GPU保证三维图元带深度绘制的正确性,在保证渲染正确的情况下,大大提高了图形渲染的效率。
优选地,由于不同的三维图元的矩形包围盒可能存在重叠,为减少后续渲染图形合并时的冗余操作,本发明还对存在重叠的三维图元进行合并。
也即,步骤S3还包括:当一个三维图元的矩形包围盒与另一个三维图元的矩形包围盒重叠,并且重叠部分占上述两个三维图元中的任一个三维图元的矩形包围盒的总面积的比例超过预设比例时,将这两个三维图元的矩形包围盒合并以得出新的三维图元的新的矩形包围盒。同时,将这两个三维图元从三维图元集合中删除以及将新的三维图元添加到三维图元集合中。
如图1所示,由于图元1与图元2的矩形包围盒存在重叠部分,并且,重叠部分占据了图元2的大部分,则将图元1与图元2合并得出新的图元12,并且新的图元12的矩形包围盒由图元1的矩形包围盒和图元2的矩形包围盒得出,具体如图2所示。
也即,本发明还通过三维图元的合并,以将重叠部分超过预设规定的图元合并,以减少后续贴图时的冗余操作。在实际的使用过程中,预设比例的具体数据可根据实际的需求进行调整。一般来说,预设比例一般选取为0.6,也即,当两个三维图元的重叠部分,占任意一个三维图元的矩形包围盒的总面积的比例达到0.6时,将这两个三维图元合并。预设比例的取值范围为[0,1]。在实际的使用过程中,预设比例的取值范围优选为[0.5,1]。
实施例二
本发明还提供一种基于OpenGL的图形混合渲染装置,包括存储器和处理器,所述存储器上存储有在处理器上运行的图形混合渲染程序,所述图形混合渲染程序为计算机程序,所述处理器执行所述图形混合渲染程序时实现以下步骤:
图元获取步骤:获取待渲染图形并对所述待渲染图形进行图元拆分以得出若干个二维图元和若干个三维图元,以及根据若干个二维图元构成二维图元集合、根据若干个三维图元构建三维图元集合;
包围盒计算步骤:遍历所述三维图元集合中的每个三维图元以得出每个三维图元的矩形包围盒,以及遍历所述二维图元集合中的每个二维图元以得出每个二维图元的矩形包围盒;所述每个三维图元的矩形包围盒至少包括三维图元的所有点在XY平面上的投影,所述每个二维图元的矩形包围盒至少包括二维图元的所有点;
二维映射步骤:根据每个二维图元的矩形包围盒和每个三维图元的矩形包围盒依次判断每个三维图元的矩形包围盒内是否存在二维图元,若是,将对应二维图元加入到所述三维图元集合,进而构建得出混合图元集合;所述混合图元集合包括所述三维图元集合中的每个三维图元和新添加到所述三维图元集合中的二维图元;
渲染步骤:调用CPU对所述二维图元集合内的每个二维图元进行渲染以及调用GPU对所述混合图元集合中的每个三维图元和每个二维图元进行渲染;
合并步骤:将GPU得出的渲染图像与CPU得出的渲染图像合并后得出待渲染图形的渲染图像。
进一步地,所述图元获取步骤包括:首先对所述待渲染图形进行图元拆分以得出若干个图元,然后对每个图元进行类型判断;其中,当一个图元所构建的点集内,所有点的Z坐标均为0,则该图元为二维图元;当一个图元所构建的点集内,存在至少一个点的Z坐标不为0,则该图元为三维图元。
进一步地,所述包围盒计算步骤包括:对于每个图元,首先计算得出该图元的所有点中能够取到的最大X坐标值、最大Y坐标值、最小X坐标值和最小Y坐标值,并根据能够取到的最大X坐标值的点、能够取到的最大Y坐标值的点、能够取到的最小X坐标值的点和能够取到的最小Y坐标值的点构建得出基于XY平面水平竖直方向的矩形包围盒;其中,图元为二维图元或三维图元。
进一步地,所述包围盒计算步骤还包括:当一个三维图元的矩形包围盒与另一个三维图元的矩形包围盒重叠,并且重叠部分占上述两个三维图元中的任一个三维图元的矩形包围盒的总面积的比例超过预设比例时,将这两个三维图元的矩形包围盒合并以得出新的三维图元的新的矩形包围盒;以及将这两个三维图元从所述三维图元集合中删除以及将新的三维图元添加到所述三维图元集合中;所述预设比例的取值范围为[0.5,1]。
进一步地,所述二维映射步骤具体包括:当一个三维图元的矩形包围盒内至少存在二维图元的点时,则该三维图元的矩形包围盒内存在对应二维图元。
进一步地,所述渲染步骤还包括:调用CPU对所述二维图元集合内的每个二维图元进行渲染时,将CPU的渲染视口设为待渲染图形的整幅图像;调用GPU对所述混合图元集合内的每个三维图元和每个二维图元进行渲染时,将GPU的渲染视口设为待渲染图形的整幅图像。
进一步地,所述合并步骤包括:首先获取CPU渲染得出的整幅图像和获取GPU渲染得出的整幅图像,然后将GPU渲染得出的整幅图像中每个三维图元的矩形包围盒的所有像素点按照坐标值复制粘贴到CPU渲染得出的整幅图像中的对应位置,以得出所述待渲染图形的渲染图像。
进一步地,所述图元获取步骤还包括:根据图元拆分算法对所述待渲染图形进行图元拆分;其中,所述图元拆分算法包括Delaunay三角剖分算法、Catmull-Clark曲面细分算法和RDP算法。
实施例三
基于实施例一,本发明还提供一种计算机可读存储介质,其上存储有图形混合渲染程序,所述图形混合渲染程序为计算机程序,所述图形混合渲染程序被处理器执行时实现以下步骤:
图元获取步骤:获取待渲染图形并对所述待渲染图形进行图元拆分以得出若干个二维图元和若干个三维图元,以及根据若干个二维图元构成二维图元集合、根据若干个三维图元构建三维图元集合;
包围盒计算步骤:遍历所述三维图元集合中的每个三维图元以得出每个三维图元的矩形包围盒,以及遍历所述二维图元集合中的每个二维图元以得出每个二维图元的矩形包围盒;所述每个三维图元的矩形包围盒至少包括三维图元的所有点在XY平面上的投影,所述每个二维图元的矩形包围盒至少包括二维图元的所有点;
二维映射步骤:根据每个二维图元的矩形包围盒和每个三维图元的矩形包围盒依次判断每个三维图元的矩形包围盒内是否存在二维图元,若是,将对应二维图元加入到所述三维图元集合,进而构建得出混合图元集合;所述混合图元集合包括所述三维图元集合中的每个三维图元和新添加到所述三维图元集合中的二维图元;
渲染步骤:调用CPU对所述二维图元集合内的每个二维图元进行渲染以及调用GPU对所述混合图元集合中的每个三维图元和每个二维图元进行渲染;
合并步骤:将GPU得出的渲染图像与CPU得出的渲染图像合并后得出待渲染图形的渲染图像。
进一步地,所述图元获取步骤包括:首先对所述待渲染图形进行图元拆分以得出若干个图元,然后对每个图元进行类型判断;其中,当一个图元所构建的点集内,所有点的Z坐标均为0,则该图元为二维图元;当一个图元所构建的点集内,存在至少一个点的Z坐标不为0,则该图元为三维图元。
进一步地,所述包围盒计算步骤包括:对于每个图元,首先计算得出该图元的所有点中能够取到的最大X坐标值、最大Y坐标值、最小X坐标值和最小Y坐标值,并根据能够取到的最大X坐标值的点、能够取到的最大Y坐标值的点、能够取到的最小X坐标值的点和能够取到的最小Y坐标值的点构建得出基于XY平面水平竖直方向的矩形包围盒;其中,图元为二维图元或三维图元。
进一步地,所述包围盒计算步骤还包括:当一个三维图元的矩形包围盒与另一个三维图元的矩形包围盒重叠,并且重叠部分占上述两个三维图元中的任一个三维图元的矩形包围盒的总面积的比例超过预设比例时,将这两个三维图元的矩形包围盒合并以得出新的三维图元的新的矩形包围盒;以及将这两个三维图元从所述三维图元集合中删除以及将新的三维图元添加到所述三维图元集合中;所述预设比例的取值范围为[0.5,1]。
进一步地,所述二维映射步骤具体包括:当一个三维图元的矩形包围盒内至少存在二维图元的点时,则该三维图元的矩形包围盒内存在对应二维图元。
进一步地,所述渲染步骤还包括:调用CPU对所述二维图元集合内的每个二维图元进行渲染时,将CPU的渲染视口设为待渲染图形的整幅图像;调用GPU对所述混合图元集合内的每个三维图元和每个二维图元进行渲染时,将GPU的渲染视口设为待渲染图形的整幅图像。
进一步地,所述合并步骤包括:首先获取CPU渲染得出的整幅图像和获取GPU渲染得出的整幅图像,然后将GPU渲染得出的整幅图像中每个三维图元的矩形包围盒的所有像素点按照坐标值复制粘贴到CPU渲染得出的整幅图像中的对应位置,以得出所述待渲染图形的渲染图像。
进一步地,所述图元获取步骤还包括:根据图元拆分算法对所述待渲染图形进行图元拆分;其中,所述图元拆分算法包括Delaunay三角剖分算法、Catmull-Clark曲面细分算法和RDP算法。
上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
Claims (10)
1.基于OpenGL的图形混合渲染方法,其特征在于,包括:
图元获取步骤:获取待渲染图形并对所述待渲染图形进行图元拆分以得出若干个二维图元和若干个三维图元,以及根据若干个二维图元构成二维图元集合、根据若干个三维图元构建三维图元集合;
包围盒计算步骤:遍历所述三维图元集合中的每个三维图元以得出每个三维图元的矩形包围盒,以及遍历所述二维图元集合中的每个二维图元以得出每个二维图元的矩形包围盒;所述每个三维图元的矩形包围盒至少包括三维图元的所有点在XY平面上的投影,所述每个二维图元的矩形包围盒至少包括二维图元的所有点;
二维映射步骤:根据每个二维图元的矩形包围盒和每个三维图元的矩形包围盒依次判断每个三维图元的矩形包围盒内是否存在二维图元,若是,将对应二维图元加入到所述三维图元集合,进而构建得出混合图元集合;所述混合图元集合包括所述三维图元集合中的每个三维图元和新添加到所述三维图元集合中的二维图元;
渲染步骤:调用CPU对所述二维图元集合内的每个二维图元进行渲染以及调用GPU对所述混合图元集合中的每个三维图元和每个二维图元进行渲染;
合并步骤:将GPU得出的渲染图像与CPU得出的渲染图像合并后得出待渲染图形的渲染图像。
2.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述图元获取步骤包括:首先对所述待渲染图形进行图元拆分以得出若干个图元,然后对每个图元进行类型判断;其中,当一个图元所构建的点集内,所有点的Z坐标均为0,则该图元为二维图元;当一个图元所构建的点集内,存在至少一个点的Z坐标不为0,则该图元为三维图元。
3.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述包围盒计算步骤包括:对于每个图元,首先计算得出该图元的所有点中能够取到的最大X坐标值、最大Y坐标值、最小X坐标值和最小Y坐标值,并根据能够取到的最大X坐标值的点、能够取到的最大Y坐标值的点、能够取到的最小X坐标值的点和能够取到的最小Y坐标值的点构建得出基于XY平面水平竖直方向的矩形包围盒;其中,图元为二维图元或三维图元。
4.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述包围盒计算步骤还包括:当一个三维图元的矩形包围盒与另一个三维图元的矩形包围盒重叠,并且重叠部分占上述两个三维图元中的任一个三维图元的矩形包围盒的总面积的比例超过预设比例时,将这两个三维图元的矩形包围盒合并以得出新的三维图元的新的矩形包围盒;以及将这两个三维图元从所述三维图元集合中删除以及将新的三维图元添加到所述三维图元集合中;所述预设比例的取值范围为[0.5,1]。
5.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述二维映射步骤具体包括:当一个三维图元的矩形包围盒内存在二维图元的至少一点时,则该三维图元的矩形包围盒内存在对应二维图元。
6.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述渲染步骤还包括:调用CPU对所述二维图元集合内的每个二维图元进行渲染时,将CPU的渲染视口设为待渲染图形的整幅图像;调用GPU对所述混合图元集合内的每个三维图元和每个二维图元进行渲染时,将GPU的渲染视口设为待渲染图形的整幅图像。
7.根据权利要求6所述的基于OpenGL的图形混合渲染方法,其特征在于,所述合并步骤包括:首先获取CPU渲染得出的整幅图像和获取GPU渲染得出的整幅图像,然后将GPU渲染得出的整幅图像中每个三维图元的矩形包围盒的所有像素点按照坐标值复制粘贴到CPU渲染得出的整幅图像中的对应位置,以得出所述待渲染图形的渲染图像。
8.根据权利要求1所述的基于OpenGL的图形混合渲染方法,其特征在于,所述图元获取步骤还包括:根据图元拆分算法对所述待渲染图形进行图元拆分;其中,所述图元拆分算法包括Delaunay三角剖分算法、Catmull-Clark曲面细分算法和RDP算法。
9.基于OpenGL的图形混合渲染装置,包括存储器和处理器,所述存储器上存储有在处理器上运行的图形混合渲染程序,所述图形混合渲染程序为计算机程序,其特征在于,所述处理器执行所述图形混合渲染程序时实现如权利要求1-8中任意一项所述的基于OpenGL的图形混合渲染方法的步骤。
10.一种计算机可读存储介质,其上存储有图形混合渲染程序,其特征在于,所述图形混合渲染程序为计算机程序,所述图形混合渲染程序被处理器执行时实现如权利要求1-8中任一项所述的基于OpenGL的图形混合渲染方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311181266.6A CN116912395B (zh) | 2023-09-14 | 2023-09-14 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311181266.6A CN116912395B (zh) | 2023-09-14 | 2023-09-14 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116912395A CN116912395A (zh) | 2023-10-20 |
CN116912395B true CN116912395B (zh) | 2024-01-12 |
Family
ID=88353480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311181266.6A Active CN116912395B (zh) | 2023-09-14 | 2023-09-14 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116912395B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038740A (zh) * | 2015-11-18 | 2017-08-11 | 三星电子株式会社 | 图形处理设备和执行图形管线的方法 |
CN109508212A (zh) * | 2017-09-13 | 2019-03-22 | 深信服科技股份有限公司 | 图形渲染方法、设备及计算机可读存储介质 |
CN110443893A (zh) * | 2019-08-02 | 2019-11-12 | 广联达科技股份有限公司 | 大规模建筑场景渲染加速方法、系统、装置和存储介质 |
CN113256779A (zh) * | 2021-07-05 | 2021-08-13 | 广州中望龙腾软件股份有限公司 | 一种基于OpenGL指令的渲染运行方法及系统 |
WO2022095714A1 (zh) * | 2020-11-09 | 2022-05-12 | 中兴通讯股份有限公司 | 图像渲染的处理方法和装置、存储介质及电子设备 |
CN114549714A (zh) * | 2022-01-04 | 2022-05-27 | 江西航天鄱湖云科技有限公司 | 基于WebGL三维风向图可视化的渲染方法 |
WO2022143367A1 (zh) * | 2020-12-28 | 2022-07-07 | 华为技术有限公司 | 一种图像渲染方法及其相关设备 |
CN116704088A (zh) * | 2023-05-10 | 2023-09-05 | 北京睿呈时代信息科技有限公司 | 三维模型渲染方法和装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7184038B2 (en) * | 1999-09-24 | 2007-02-27 | Sun Microsystems, Inc. | Using render bin parallelism for rendering scene graph based graphics data |
US9177351B2 (en) * | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
US8917281B2 (en) * | 2012-11-05 | 2014-12-23 | Rightware Oy | Image rendering method and system |
US9547932B2 (en) * | 2013-06-10 | 2017-01-17 | Nvidia Corporation | Splitting bounding volumes of primitives |
US9773340B2 (en) * | 2015-06-12 | 2017-09-26 | Qualcomm Incorporated | Rendering using ray tracing to generate a visibility stream |
EP3206190A1 (en) * | 2016-02-15 | 2017-08-16 | Thomson Licensing | Device and process for improving efficiency of image rendering |
US9818221B2 (en) * | 2016-02-25 | 2017-11-14 | Qualcomm Incorporated | Start node determination for tree traversal for shadow rays in graphics processing |
-
2023
- 2023-09-14 CN CN202311181266.6A patent/CN116912395B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038740A (zh) * | 2015-11-18 | 2017-08-11 | 三星电子株式会社 | 图形处理设备和执行图形管线的方法 |
CN109508212A (zh) * | 2017-09-13 | 2019-03-22 | 深信服科技股份有限公司 | 图形渲染方法、设备及计算机可读存储介质 |
CN110443893A (zh) * | 2019-08-02 | 2019-11-12 | 广联达科技股份有限公司 | 大规模建筑场景渲染加速方法、系统、装置和存储介质 |
WO2022095714A1 (zh) * | 2020-11-09 | 2022-05-12 | 中兴通讯股份有限公司 | 图像渲染的处理方法和装置、存储介质及电子设备 |
WO2022143367A1 (zh) * | 2020-12-28 | 2022-07-07 | 华为技术有限公司 | 一种图像渲染方法及其相关设备 |
CN113256779A (zh) * | 2021-07-05 | 2021-08-13 | 广州中望龙腾软件股份有限公司 | 一种基于OpenGL指令的渲染运行方法及系统 |
CN114549714A (zh) * | 2022-01-04 | 2022-05-27 | 江西航天鄱湖云科技有限公司 | 基于WebGL三维风向图可视化的渲染方法 |
CN116704088A (zh) * | 2023-05-10 | 2023-09-05 | 北京睿呈时代信息科技有限公司 | 三维模型渲染方法和装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
一种CPU-GPU协同计算的三维地形实时渲染算法;郭向坤;林浒;刘继申;王鸿亮;;小型微型计算机系统(第04期);203-207 * |
王志科,黄长伟.大规模城市场景数据在Unity 3D中加载及渲染技术的应用.电力与能源.2023,254-259. * |
Also Published As
Publication number | Publication date |
---|---|
CN116912395A (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110368694B (zh) | 游戏场景的数据处理方法、装置、设备及可读存储介质 | |
CN111369656B (zh) | 一种基于WebGL可编辑大场景渐进式实时渲染方法 | |
US9123168B2 (en) | Output ordering of domain coordinates for tessellation | |
US8217962B2 (en) | Single-pass bounding box calculation | |
CN111127623B (zh) | 模型的渲染方法、装置、存储介质及终端 | |
KR101281157B1 (ko) | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 | |
CN108009978B (zh) | 一种非阻塞并行三角形光栅化单元结构 | |
KR101635334B1 (ko) | 대칭적 에지 스플릿팅에 의한 표면 테셀레이션 | |
CN105894551B (zh) | 图像绘制方法及装置 | |
US10535188B2 (en) | Tessellation edge shaders | |
CN105574931A (zh) | 一种电子地图道路绘制方法及装置 | |
CN109544658B (zh) | 地图的渲染方法和装置、存储介质、电子装置 | |
US11113878B2 (en) | Screen tile pair-based binocular rendering pipeline process and method | |
US20220375186A1 (en) | Method and apparatus for generating bounding box, device and storage medium | |
CN108022202A (zh) | 一种超前消隐几何引擎结构 | |
CN115375823A (zh) | 三维虚拟服饰生成方法、装置、设备及存储介质 | |
CN114241151A (zh) | 三维模型简化方法、装置、计算机设备和计算机存储介质 | |
US20140347355A1 (en) | Ray tracing core and method for processing ray tracing | |
CN116912395B (zh) | 基于OpenGL的图形混合渲染方法、装置及存储介质 | |
JP4001733B2 (ja) | 幾何学面上の注釈を簡略化する装置、システム、および方法 | |
CN115937470A (zh) | 图形处理单元及其细分点处理方法、存储介质 | |
KR101281156B1 (ko) | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 | |
CN110619675B (zh) | 基于OsgEarth的面矢量数据的加载方法 | |
CN115880127A (zh) | 一种渲染格式选择方法及其相关设备 | |
KR20000068191A (ko) | 영상 프리미티브의 고속 처리 |
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 |