CN108196835A - 一种游戏引擎中图元存储和渲染的方法 - Google Patents
一种游戏引擎中图元存储和渲染的方法 Download PDFInfo
- Publication number
- CN108196835A CN108196835A CN201810085651.3A CN201810085651A CN108196835A CN 108196835 A CN108196835 A CN 108196835A CN 201810085651 A CN201810085651 A CN 201810085651A CN 108196835 A CN108196835 A CN 108196835A
- Authority
- CN
- China
- Prior art keywords
- vertex
- pixel
- layer
- rendering
- attribute
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
Abstract
本发明涉及一种游戏引擎中图元存储和渲染的方法,对顶点存储和渲染方式分别进行优化,包括以下步骤:1)对图元顶点数据进行处理,完成顶点属性的自动设定,通过顶点索引指定顶点的绘制顺序,避免顶点的重复存储;2)将需要渲染的物体传入引擎,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,减少绘制时DrawCall的调用。本发明将场景中的物体进行分层,确保层次间的前后关系,再对层次内的物体进行从后往前的渲染,实现了批量渲染,使用大的缓冲区存储需要渲染的顶点,能够有效减少绘制时对于DrawCall的调用,使引擎系统的渲染性能得到了大幅度提升。
Description
技术领域
本发明涉及一种计算机图形学渲染领域,具体为一种游戏引擎中图元存储和渲染的方法。
背景技术
多年以前,电子游戏和街机游戏被大多数成年人认为仅仅是玩具而已,而游戏的软件和硬件都是为其本身而高度定制的。如今游戏已成为上百亿美元收入的主流产业,无论市场规模还是受众程度都达到了前所未有的高度。而支持这些无处不在三维世界的软件便是游戏引擎,尽管各个游戏引擎的结构和实现细节千差万别,但是无论是公开授权的游戏引擎,还是公司内部私有的游戏引擎,几乎所有的游戏引擎都包含一套常见的核心组件。
采用传统方式渲染时,需要对每个顶点的属性都进行手动设定,同时三角形重叠位置的顶点会被重复存储。通过对比分析可知,由于传统的绘制方法是当有一个图元处理完毕就将该图元进行绘制,发现传统渲染的系统性能瓶颈在于绘制调用(DrawCall)。
以顶点属性作为输入,可以指定任意形式的顶点属性,充分的利用自定义顶点属性的灵活性。以顶点属性作为渲染操作处理的基本单位,虽然能够提供很强的灵活性,但是同时也意味着必须对每一个顶点的属性进行手动的指定。当顶点拥有较多属性值,同时场景中有很多不同的物体时,手动指定的方式会变得相当繁琐。同时,传统的渲染方式,为了确保遮挡关系,需要将全部要渲染的物体进行排序之后再进行绘制,当渲染物体较多时会对系统性能产生较大的影响。
渲染中所有的物体都是同三角形面的不断绘制,并将这些面覆盖到物体表面,以达到绘制物体的目的。这样就会产生一个问题,例如当绘制一个矩形时,正常情况下需要使用四个顶点,但是如果划分为三角形后在进行绘制,对角线上的两个顶点会被重复存储。当物体表面具有大量三角形时,大量的顶点将会被重复存储。
当使用索引绘制相同物体时,每一次都需要绘制都需要绑定索引缓冲(IBO),当绘制较多的相同物体时,这也是一件繁琐的事情。
对于渲染,采用传统不分层的方式,为了确保遮挡关系,需要将全部要渲染的物体进行排序之后再进行绘制。当一个画面中有大量物体时,需要手动判断物体间的遮挡关系,这是一个比较繁琐的过程。渲染多个图层时采用从后往前的渲染顺序,当渲染人物层时可能在相同的像素点位置处已经渲染了背景像素点,传统的方式采用上一层图层覆盖掉背景图层的像素点,虽然可以解决物体之间的遮挡关系,但是会造成低层图层不必要的渲染。
发明内容
针对现有技术中游戏引擎中图元存储和渲染方法中三角形面大量的顶点被重复存储、低层图层存在不必要的渲染导致过程繁琐等不足,本发明要解决的问题是提供一种可使引擎系统的渲染性能得到大幅度提升的游戏引擎中图元存储和渲染的方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明一种游戏引擎中图元存储和渲染的方法,对顶点存储和渲染方式分别进行优化,包括以下步骤:
1)对图元顶点数据进行处理,完成顶点属性的自动设定,通过顶点索引指定顶点的绘制顺序,避免顶点的重复存储;
2)将需要渲染的物体传入引擎,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,减少绘制时DrawCall的调用。
步骤1)中,对图元顶点数据进行处理包括以下步骤:
101)顶点属性的自动设定:将顶点数据的顶点属性布局写入到一个顶点属性数组之中,其中每一个顶点属性数组的属性指针记录顶点中一个属性的步长,通过这些步长来对顶点中的属性进行划分,即将顶点缓冲数组和顶点属性数组进行绑定;
102)索引缓冲:只对不同顶点进行存储,即将索引缓冲存储在顶点属性数组中,同时进行顶点属性划分,索引信息绑定到相同类型的顶点上,通过索引按照指定的顶点顺序对物体进行绘制。
步骤2)中,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,包括以下步骤:
201)在渲染前将物体由深到浅分为1~N层,所有最深层即第1层的物体自动放置在次深层即第2层的物体后面,所有第1层、第2层物体都在第3层后面,以此类推,第N层放在最上面;N≤10。
202)对1~N层各层级上的绘制顺序单独进行排序;
203)对层次内物体一次性进行从底层到顶层的渲染。
步骤201)中,1~N层包含任意数量的需要渲染的物体。
步骤203)中,渲染还包括以下步骤:
先将顶点信息存于缓冲区之中,当缓冲区被填满,或者纹理资源管理器的纹理内存被分配完毕时,将缓冲区中的顶点一次性投入渲染器进行绘制,同时清空缓冲区和纹理资源管理器。
本发明还包括以下步骤:
204)当渲染1~(N-1)层中任何一层时,如果在相同的像素点位置处不同层间物体是有遮挡,则被遮挡的物体的像素点不需绘制。
每次在相同像素点位置处理物体的像素时,如果当前要渲染的像素距离观察点更近,则将距离更新为新的像素点的更近的距离,对位于同一像素点位置的顶点,根据它们距离观察点摄像机的远近来决定是否绘制。
如果已经渲染了该层的底层像素点,则对同一位置的像素点先进行统一处理,记录该像素点到观察点的距离,同时记录最接近观察点的像素点,并进行最接近观察点的像素点的渲染。
所述观察点为摄像机在3D场景中的位置pos(x,y,z)。
本发明具有以下有益效果及优点:
1.本发明对传统渲染方法进行优化,将场景中的物体进行分层,确保层次间的前后关系,之后再对层次内的物体进行从后往前的渲染,在分层渲染的基础之上,实现了批量渲染,使用大的缓冲区存储需要渲染的顶点,能够有效减少绘制时对于DrawCall的调用,因而使引擎系统的渲染性能得到了大幅度提升。
2.本发明方法相比人工手动的对每个顶点的顶点属性进行指定,只需要执行进行一次指定,之后再绘制物体时只需要绑定相应的顶点属性数组即可,通过绑定不同的顶点属性数组,使得对于不同顶点数据的属性绑定变得十分简单,解决了采用传统方式渲染时,需要对每个顶点的属性都进行手动设定,三角形重叠位置的顶点会被重复存储,逐个图元进行绘制问题,可以有效避免重复配置顶点属性。
3.本发明方法当物体间有遮挡关系时,比对这些有遮挡关系的物体距离视点(观察点或屏幕)距离,在遮挡的位置处只需要绘制距离视点最近的物体,不可见的不绘制,可以节省大量系统资源。
附图说明
图1为本发明方法涉及的顶点属性数组图示;
图2为本发明方法涉及的索引缓冲图示;
图3为图元绘制图示;
图4为本发明方法涉及的对场景进行分层绘制图示;
图5为本发明方法涉及的视点到像素点距离示意图;
图6为本发明方法中采用优化策略的引擎渲染流程图;
图7为传统渲染模式性能分析图;
图8为采用传统方法的CPU使用百分率曲线图;
图9为优化后的渲染性能分析直方图;
图10为优化后的CPU使用百分率曲线图;
图11为本发明方法涉及的批量渲染流程图。
具体实施方式
下面结合说明书附图对本发明作进一步阐述。
1)对图元顶点数据进行处理,完成顶点属性的自动设定,通过顶点索引指定顶点的绘制顺序,避免顶点的重复存储;
2)将需要渲染的物体传入引擎,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,减少绘制时DrawCall的调用。
步骤1)中,对图元顶点数据进行处理包括以下步骤:
101)顶点属性的自动设定:将顶点数据的顶点属性布局写入到一个顶点属性数组之中,其中每一个顶点属性数组的属性指针记录顶点中一个属性的步长,通过这些步长来对顶点中的属性进行划分,即将顶点缓冲数组和顶点属性数组进行绑定,此后任何顶点属性调用都存储在顶点缓冲数组之中;
102)索引缓冲:只对不同顶点进行存储,即将索引缓冲存储在顶点属性数组中,同时进行顶点属性划分,索引信息绑定到相同类型的顶点上,通过索引按照指定的顶点顺序对物体进行绘制。
对于顶点数据的处理,如图1所示,顶点属性数组可以将顶点数据的顶点属性的布局写入到一个顶点属性数组(VAO)之中,其中每一个顶点属性数组的属性指针记录顶点中一个属性的步长,通过这些步长来对顶点中的属性进行划分。可以将顶点缓冲和顶点属性数组进行绑定,此后任何的顶点属性调用都会存储在顶点缓冲数组(VAO)之中。相比于人工手动的对每个顶点的顶点属性进行指定,只需要执行进行一次指定,之后再绘制物体时只需要绑定相应的VAO就可以了。通过绑定不同的顶点属性数组,使得对于不同顶点数据的属性绑定变得十分简单。
本发明方法只对不同顶点进行存储,即将索引缓冲存储在顶点属性数组中,同时进行顶点属性划分,索引信息绑定到相同类型的顶点上,通过索引按照指定的顶点顺序对物体进行绘制。
如图2所示,当使用索引绘制相同物体时,每一次都需要绘制都需要绑定索引缓冲(IBO),当绘制较多的相同物体时非常繁琐。基于此,将索引缓冲存储在顶点属性数组(VAO)中,由于顶点属性数组记录了所有相同属性顶点的属性划分依据,这样将索引缓冲存储在顶点属性数组中后,只需要绑定顶点属性数组。这样绑定之后,同时进行了顶点属性划分,也将索引信息绑定到相同类型的顶点上,之后通过索引按照指定的顶点顺序对物体进行绘制。
例如,对于如图3所示的四边形图元,只需要四个顶点就能够对矩形进行绘制。传统的绘制方式是通过绘制两个三角形拼接而成。首先绘制左下的三角形使用了0,1,2三个顶点,之后绘制右上的三角形使用了0,2,3三个顶点。可以发现对角线的两个顶点0,2由于重叠的原因被重复存储了两次,这样就造成了存储空间的浪费。因此为每个顶点创建一个索引,同时使用索引缓冲来记录每个顶点的索引,之后当绘制图元的时候通过索引来决定应该使用哪些顶点进行绘制。先将顶点信息存储在缓冲区之中,当使用索引的方式来绘制图元时,只需要通知渲染器所需的顶点的索引即可。如下图,当绘制这个矩形图元时,通过告知渲染器需要0,1,2号顶点绘制左下三角形,需要0,2,3号顶点绘制右上三角形,这样只需要存储一份顶点信息,之后通过索引来获取需要绘制的顶点信息,降低了内存空间的的损耗。
步骤2)中,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,包括以下步骤:
201)在渲染前将物体由深到浅分为1~N层,所有最深层即第1层的物体自动放置在次深层即第2层的物体后面,所有第1层、第2层物体都在第3层后面,以此类推,第N层放在最上面;N≤10。
202)对1~N层各层级上的绘制顺序单独进行排序;
203)对层次内物体一次性进行从底层到顶层的渲染。即层次内的排列是物体距离视点(屏幕)距离由远到近。
步骤201)中,1~N层包含任意数量的需要渲染的物体。本实施例中,N=3,即在渲染前将物体分为第1~3层,分别是背景层、角色层和UI层,所有背景层的物体自动放置在角色层的物体后面,所有背景层、角色层物体都在UI层后面;
步骤202)中,对背景层、角色层和UI层各层级上的绘制顺序单独进行排序;
步骤203)中,对层次内物体一次性进行底层到顶层的渲染。
本发明使用分层结合批量渲染的方式,通过对顶点的分层处理来确定顶点之间的遮挡关系,从而避免低层顶点的重复绘制,保证引擎渲染效率。同时通过批量渲染来减少对于性能产生最重要影响的DrawCall(绘制调用),以此提高了引擎整体的渲染效率。
如图6所示,当需要渲染的物体传入到引擎后,首先将这些物体进行分层处理,确定哪些物体在背景层,哪些物体在人物层,哪些物体在UI层。经过分层处理之后,所有的物体都位于它对应的层次,只需要确保层次间的关系,就能保证不同层之间物体的相互关系,通过分层的方式,只用关注每一层中不同物体的关系,不同层间的物体关系,引擎系统会自动进行处理。将物体分层后,需要对物体进行渲染,将层次中的物体顶点信息存入缓冲区之中,只有当缓冲区满或者纹理资源管理器的管理内存分配完时,才一次性将这些顶点的信息传入到渲染器中进行渲染,这样能够充分减少DrawCall的调用,从而显著的提高系统性能。
分层批量渲染:当一个画面中有大量物体时,需要手动判断物体间的遮挡关系,这是一个比较繁琐的过程。如图4所示,本发明在渲染前将物体分层,如背景层、角色层和UI层,每层可以包含任意数量的需要渲染的物体。在本引擎之中所有的背景层的物体都会自动放置在角色层的物体后面,而所有的背景层、角色层物体又都在UI层后面,这样就能够允许场景中的层次任意组合,而每个层次都有一个顺序。
采用分层结构,绘制顺序只需要相对层内的其他物体就可以了。相比于传统方式对所有物体进行排序,分层的渲染方式将物体分为多个层级,再每个层级上单独进行排序,这样对排序的规模进行了缩减,实现了性能上的优化。
经过进一步分析,当通过排序从后往前绘制时,发现位于低层被遮挡的部分会被多次绘制。为此本发明还具有步骤204),当渲染1~(N-1)层中任何一层时,如果在相同的像素点位置处不同层间物体是有遮挡,则被遮挡的物体的像素点不需绘制。
每次在相同像素点位置处理物体的像素时,如果当前要渲染的像素距离观察点更近,则将距离更新为新的像素点的更近的距离,对位于同一像素点位置的顶点,根据它们距离观察点摄像机的远近来决定是否绘制。已经渲染了该层的底层像素点,则对同一位置的像素点先进行统一处理,记录该像素点到观察点的距离,同时记录最接近观察点的像素点,并进行最接近观察点的像素点的渲染。观察点是指摄像机在3D场景中的位置pos(x,y,z)。
对同一个像素点进行多次绘制会造成系统性能的浪费,可以记录每一个像素点到观察点(图5中的视点,即摄像机)的距离,当要在该像素点位置渲染新的像素点时,当新的像素点距离观察点较近时,更新距离并记录当前像素点。最后在同一个像素点位置只渲染距离观察点最近那个像素点,如图5所示。
本步骤的工作就是判断物体间的遮挡关系,根据前面由后往前绘制的时候,如先绘制了一个小狗,之后在小狗的相同位置的前面绘制了一棵大树,大树会把小狗挡住。当摄像机由大树正前方观察时看不到小狗,这样小狗的绘制操作就是多余的。而本步骤就是将这些被挡住的像素点不要绘制。摄像机会根据玩家的移动不断位移,不断的调整整个的绘制顺序。当移动到大树后方时,小狗会遮挡大树的一部分。
渲染多个图层时采用从后往前的渲染顺序,当渲染人物层时可能在相同的像素点位置处已经渲染了背景像素点,传统的方式采用新的图层覆盖掉背景图层的像素点。这样虽然可以解决物体之间的遮挡关系,但是会造成低层图层不必要的渲染。本引擎采用的方式是对同一位置的像素点先进行统一处理,记录该点到观察点的距离,同时记录最接近观察点的像素点,只需要渲染最近的这个点,不用对低层的像素点进行不必要的渲染。
depth=min{l1,l2,…,ln} (1)
其中,depth为像素点到观察点的最近距离,l1,l2…ln代表n个物体在屏幕上的一个像素点位置处各自的像素点距离观察点的距离。
屏幕在一个位置只绘制一个像素点,如大树和小狗,如果这两个物体有互相遮挡,在屏幕上的一个像素点位置处只能绘制其中一个像素点。l1,l2…ln就是小狗、大树等等物体在屏幕上这一个像素点位置处它们各自的像素点距离观察点(摄像机)的距离。距离近的会将距离远的挡住,所以只用绘制近的。
由式(1)看出,只需要关心距离观察点最近的像素点,每次在相同像素点位置处理物体的像素时,如果当前的要渲染的像素距离观察点更近,那么就将距离更新为新的像素点的更近的距离,采用这种渲染方式对位于同一像素点位置的顶点,根据它们距离观察者的远近来决定是否绘制,这样就避免了对于低层图层像素点的重复绘制。
随后采用批量渲染,将需要渲染的物体的顶点数据存储于一个大的缓冲区之中,一次性进行渲染。这样相比于传统渲染每次都将处理好的图元进行绘制,批量渲染可以有效地减少DrawCall的调用,从而对引擎的渲染性能有大幅提升。
本实施例以绘制大量2D精灵(Sprite)为例,以此来观察优化方案对于系统性能的改进提升。对57600个精灵(Sprite)进行绘制,通过VS性能分析工具,发现限制渲染效率的主要因素是绘制调用(DrawCall)。
如图7所示,图中独占样本表示不包含子函数执行时间的函数体执行时间。图中可以看出DrawCall占用了最多的时间,达到一半以上,足以见得程序将大部分的处理时间都花费在DrawCall之上,这是系统瓶颈的关键。如图8所示,传统的渲染在100秒内只采样了4454个样本,CPU使用百分率不稳定。
采用优化的渲染模式可以看出影响系统性能的主要操作已经变成了系统调用和相关内存分配的操作。如图9所示,在优化后的系统中DrawCall的样本占用大概在20位左右,这充分说明了优化策略的可行性。同时如图10对比发现,使用批量渲染CPU的使用百分率能够保持在一个稳定的范围。因此,本引擎才将会采用这种批量渲染的方式。
渲染的最小图形是三角形,通常的渲染方式是每当产生一个三角形(三个顶点),就将这三个顶点投入到渲染器之中进行绘制,当绘制较少物体时,这种方法可以完成绘制任务,但是当有大量物体需要绘制的时候,每三个顶点调用一次DrawCall就会对系统性能产生巨大的影响。人为设定一个大的缓冲区,用于存储顶点信息。当缓冲区满时,才一次性将顶点传送入渲染器进行绘制。在将顶点存储在缓冲区时,需要将顶点的变换矩阵信息保存到顶点信息之中。
如图11所示,为了保证批量渲染的有效,除了当缓冲区被填满时才进行绘制,由于每个顶点有相应的纹理资源信息,还需要考虑在纹理资源管理器达到上限时,也需要将缓冲区中的顶点进行绘制。因此,当要渲染物体时,先将顶点信息存于缓冲区之中,当缓冲区被填满,或者纹理资源管理器的纹理内存被分配完毕时,将缓冲区中的顶点一次性投入渲染器进行绘制,同时清空缓冲区和纹理资源管理器,这样能够保证新的顶点和纹理可以正确的加载到缓冲区和纹理管理器之中。
表1传统渲染和批量渲染对比
通过采用传统渲染和批量渲染的对比试验,能够看出在内存方面当渲染10000左右的贴图时,其内存占用已经到达260M。而当贴图数量达到50000左右时内存占用也达到了接近1G,基本上和贴图增长同比。反观批量渲染,当贴图数量为10000左右时,内存占用只有13M,而当贴图数量达到50000左右时,内存占用也只有20M左右,内存的增长相比传统渲染比较平稳。同时在刷新频率这一项,当渲染贴图较多时,传统渲染的FPS急速下降,这会导致严重的丢帧,玩家会明显感觉到卡顿。而批量渲染在渲染数万贴图时仍能保持较高的FPS(显示器的每秒刷新频率)。
本发明能够很好的解决采用传统方式渲染时,需要对每个顶点的属性都进行手动设定,三角形重叠位置的顶点会被重复存储,逐个图元进行绘制问题。使用顶点属性数组记录顶点属性布局,通过对顶点属性数组的绑定,可以有效避免重复配置顶点属性。同时为顶点创建索引,通过索引来决定顶点的绘制顺序,以此避免顶点的重复存储。在屏幕渲染时使用分层的批量渲染方式,通过对物体进行分层,首先确保层次间的前后关系,之后再对层次内的物体进行从后往前的渲染。同时为了避免被遮挡物体的冗余绘制,只绘制距离观察点最近的顶点。而批量渲染将需要渲染的物体的顶点数据存储于一个大的缓冲区之中,一次性进行渲染。这样相比于传统渲染每次都将处理好的图元进行绘制,批量渲染可以有效地减少DrawCall的调用,从而对引擎的渲染性能有大幅提升。
Claims (9)
1.一种游戏引擎中图元存储和渲染的方法,其特征在于:对顶点存储和渲染方式分别进行优化,包括以下步骤:
1)对图元顶点数据进行处理,完成顶点属性的自动设定,通过顶点索引指定顶点的绘制顺序,避免顶点的重复存储;
2)将需要渲染的物体传入引擎,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,减少绘制时DrawCall的调用。
2.根据权利要求1所述的游戏引擎中图元存储和渲染的方法,其特征在于:步骤1)中,对图元顶点数据进行处理包括以下步骤:
101)顶点属性的自动设定:将顶点数据的顶点属性布局写入到一个顶点属性数组之中,其中每一个顶点属性数组的属性指针记录顶点中一个属性的步长,通过这些步长来对顶点中的属性进行划分,即将顶点缓冲数组和顶点属性数组进行绑定;
102)索引缓冲:只对不同顶点进行存储,即将索引缓冲存储在顶点属性数组中,同时进行顶点属性划分,索引信息绑定到相同类型的顶点上,通过索引按照指定的顶点顺序对物体进行绘制。
3.根据权利要求1所述的游戏引擎中图元存储和渲染的方法,其特征在于:步骤2)中,将场景中的物体进行分层,将层次中的物体顶点信息存满缓冲区后,一次性将这些顶点的信息传入到渲染器中进行批量绘制,包括以下步骤:
201)在渲染前将物体由深到浅分为1~N层,所有最深层即第1层的物体自动放置在次深层即第2层的物体后面,所有第1层、第2层物体都在第3层后面,以此类推,第N层放在最上面;N≤10。
202)对1~N层各层级上的绘制顺序单独进行排序;
203)对层次内物体一次性进行从底层到顶层的渲染。
4.根据权利要求3所述的游戏引擎中图元存储和渲染的方法,其特征在于:步骤201)中,1~N层包含任意数量的需要渲染的物体。
5.根据权利要求3所述的游戏引擎中图元存储和渲染的方法,其特征在于步骤203)中,渲染还包括以下步骤:
先将顶点信息存于缓冲区之中,当缓冲区被填满,或者纹理资源管理器的纹理内存被分配完毕时,将缓冲区中的顶点一次性投入渲染器进行绘制,同时清空缓冲区和纹理资源管理器。
6.根据权利要求3所述的游戏引擎中图元存储和渲染的方法,其特征在还包括以下步骤:
204)当渲染1~(N-1)层中任何一层时,如果在相同的像素点位置处不同层间物体是有遮挡,则被遮挡的物体的像素点不需绘制。
7.根据权利要求6所述的戏引擎中图元存储和渲染的方法,其特征在于:每次在相同像素点位置处理物体的像素时,如果当前要渲染的像素距离观察点更近,则将距离更新为新的像素点的更近的距离,对位于同一像素点位置的顶点,根据它们距离观察点摄像机的远近来决定是否绘制。
8.根据权利要求6所述的戏引擎中图元存储和渲染的方法,其特征在于:如果已经渲染了该层的底层像素点,则对同一位置的像素点先进行统一处理,记录该像素点到观察点的距离,同时记录最接近观察点的像素点,并进行最接近观察点的像素点的渲染。
9.根据权利要求6所述的戏引擎中图元存储和渲染的方法,其特征在于:所述观察点为摄像机在3D场景中的位置pos(x,y,z)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810085651.3A CN108196835A (zh) | 2018-01-29 | 2018-01-29 | 一种游戏引擎中图元存储和渲染的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810085651.3A CN108196835A (zh) | 2018-01-29 | 2018-01-29 | 一种游戏引擎中图元存储和渲染的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108196835A true CN108196835A (zh) | 2018-06-22 |
Family
ID=62591122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810085651.3A Pending CN108196835A (zh) | 2018-01-29 | 2018-01-29 | 一种游戏引擎中图元存储和渲染的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108196835A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109364487A (zh) * | 2018-10-10 | 2019-02-22 | 苏州好玩友网络科技有限公司 | 一种基于移动端手游的自定义物件和场景的展示方法及系统 |
CN109697060A (zh) * | 2018-12-29 | 2019-04-30 | 广州华多网络科技有限公司 | 视频特效软件及其生成方法、装置、设备和存储介质 |
CN109919827A (zh) * | 2019-02-22 | 2019-06-21 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
CN109978981A (zh) * | 2019-03-15 | 2019-07-05 | 广联达科技股份有限公司 | 一种提高建筑模型显示效率的批次渲染方法 |
CN110060325A (zh) * | 2019-04-19 | 2019-07-26 | 成都四方伟业软件股份有限公司 | 屏幕空间渲染方法及装置 |
CN110599391A (zh) * | 2019-06-17 | 2019-12-20 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
CN110738720A (zh) * | 2019-10-08 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 特效渲染方法、装置、终端及存储介质 |
CN110888637A (zh) * | 2018-08-16 | 2020-03-17 | 龙芯中科技术有限公司 | 顶点属性处理方法、装置、设备及计算机可读存储介质 |
CN111145329A (zh) * | 2019-12-25 | 2020-05-12 | 北京像素软件科技股份有限公司 | 模型渲染方法、系统及电子装置 |
CN111309430A (zh) * | 2020-03-16 | 2020-06-19 | 广东趣炫网络股份有限公司 | 一种自动缓存用户交互界面节点的方法和相关装置 |
CN111729304A (zh) * | 2020-05-26 | 2020-10-02 | 广州尊游软件科技有限公司 | 一种展示海量对象的方法 |
CN111782311A (zh) * | 2020-05-11 | 2020-10-16 | 完美世界(北京)软件科技发展有限公司 | 渲染方法、装置、设备和可读介质 |
CN111798361A (zh) * | 2019-09-20 | 2020-10-20 | 厦门雅基软件有限公司 | 渲染方法、装置、电子设备及计算机可读存储介质 |
CN111968210A (zh) * | 2020-08-17 | 2020-11-20 | 北京像素软件科技股份有限公司 | 物体简化模型创建、显示方法、装置、设备及存储介质 |
CN114494024A (zh) * | 2022-04-13 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、设备及存储介质 |
CN114647476A (zh) * | 2022-03-31 | 2022-06-21 | 北京百度网讯科技有限公司 | 页面渲染方法、装置、设备、存储介质及程序 |
CN115049531A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
WO2023197729A1 (zh) * | 2022-04-14 | 2023-10-19 | 腾讯科技(深圳)有限公司 | 对象渲染方法、装置、电子设备及存储介质 |
CN117291788A (zh) * | 2022-06-17 | 2023-12-26 | 象帝先计算技术(重庆)有限公司 | 图形处理方法、系统、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504185A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种渲染优化方法和装置 |
CN106803278A (zh) * | 2016-12-07 | 2017-06-06 | 珠海金山网络游戏科技有限公司 | 一种虚拟人物半透明分层排序方法及系统 |
WO2017209741A1 (en) * | 2016-05-31 | 2017-12-07 | Ng, Henry | Novel use of microscopes - use of atomic force microscopes and spectra analyses |
-
2018
- 2018-01-29 CN CN201810085651.3A patent/CN108196835A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017209741A1 (en) * | 2016-05-31 | 2017-12-07 | Ng, Henry | Novel use of microscopes - use of atomic force microscopes and spectra analyses |
CN106504185A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种渲染优化方法和装置 |
CN106803278A (zh) * | 2016-12-07 | 2017-06-06 | 珠海金山网络游戏科技有限公司 | 一种虚拟人物半透明分层排序方法及系统 |
Non-Patent Citations (2)
Title |
---|
刘镇等: "面向移动终端的分布并行化渲染", 《中国图象图形学报》 * |
陈剑飞: "分层渲染在CG生产中的应用研究", 《HTTPS://6VIYIJ.SMARTAPPS.CN/PAGES/VIEW/VIEW?_SWEBFR=1&DOCID=7FAD59A2F524CCBFF12 184BC&HOSTNAME=BAIDUBOXAPP》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888637A (zh) * | 2018-08-16 | 2020-03-17 | 龙芯中科技术有限公司 | 顶点属性处理方法、装置、设备及计算机可读存储介质 |
CN110888637B (zh) * | 2018-08-16 | 2023-09-26 | 龙芯中科技术股份有限公司 | 顶点属性处理方法、装置、设备及计算机可读存储介质 |
CN109364487A (zh) * | 2018-10-10 | 2019-02-22 | 苏州好玩友网络科技有限公司 | 一种基于移动端手游的自定义物件和场景的展示方法及系统 |
CN109697060A (zh) * | 2018-12-29 | 2019-04-30 | 广州华多网络科技有限公司 | 视频特效软件及其生成方法、装置、设备和存储介质 |
CN109919827A (zh) * | 2019-02-22 | 2019-06-21 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
CN109978981A (zh) * | 2019-03-15 | 2019-07-05 | 广联达科技股份有限公司 | 一种提高建筑模型显示效率的批次渲染方法 |
CN110060325A (zh) * | 2019-04-19 | 2019-07-26 | 成都四方伟业软件股份有限公司 | 屏幕空间渲染方法及装置 |
CN110599391A (zh) * | 2019-06-17 | 2019-12-20 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
CN110599391B (zh) * | 2019-06-17 | 2024-07-23 | 北京蓝亚盒子科技有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
CN111798361A (zh) * | 2019-09-20 | 2020-10-20 | 厦门雅基软件有限公司 | 渲染方法、装置、电子设备及计算机可读存储介质 |
CN110738720A (zh) * | 2019-10-08 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 特效渲染方法、装置、终端及存储介质 |
CN111145329A (zh) * | 2019-12-25 | 2020-05-12 | 北京像素软件科技股份有限公司 | 模型渲染方法、系统及电子装置 |
CN111145329B (zh) * | 2019-12-25 | 2024-03-22 | 北京像素软件科技股份有限公司 | 模型渲染方法、系统及电子装置 |
CN111309430A (zh) * | 2020-03-16 | 2020-06-19 | 广东趣炫网络股份有限公司 | 一种自动缓存用户交互界面节点的方法和相关装置 |
CN111309430B (zh) * | 2020-03-16 | 2021-12-10 | 广东趣炫网络股份有限公司 | 一种自动缓存用户交互界面节点的方法和相关装置 |
CN111782311A (zh) * | 2020-05-11 | 2020-10-16 | 完美世界(北京)软件科技发展有限公司 | 渲染方法、装置、设备和可读介质 |
CN111729304B (zh) * | 2020-05-26 | 2024-04-05 | 广州尊游软件科技有限公司 | 一种展示海量对象的方法 |
CN111729304A (zh) * | 2020-05-26 | 2020-10-02 | 广州尊游软件科技有限公司 | 一种展示海量对象的方法 |
CN111968210A (zh) * | 2020-08-17 | 2020-11-20 | 北京像素软件科技股份有限公司 | 物体简化模型创建、显示方法、装置、设备及存储介质 |
CN114647476A (zh) * | 2022-03-31 | 2022-06-21 | 北京百度网讯科技有限公司 | 页面渲染方法、装置、设备、存储介质及程序 |
CN114647476B (zh) * | 2022-03-31 | 2024-06-11 | 北京百度网讯科技有限公司 | 页面渲染方法、装置、设备、存储介质及程序 |
CN114494024A (zh) * | 2022-04-13 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、设备及存储介质 |
WO2023197729A1 (zh) * | 2022-04-14 | 2023-10-19 | 腾讯科技(深圳)有限公司 | 对象渲染方法、装置、电子设备及存储介质 |
CN117291788A (zh) * | 2022-06-17 | 2023-12-26 | 象帝先计算技术(重庆)有限公司 | 图形处理方法、系统、装置及设备 |
CN117291788B (zh) * | 2022-06-17 | 2024-10-18 | 象帝先计算技术(重庆)有限公司 | 图形处理方法、系统、装置及设备 |
CN115049531A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
CN115049531B (zh) * | 2022-08-12 | 2022-10-25 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108196835A (zh) | 一种游戏引擎中图元存储和渲染的方法 | |
US7095418B2 (en) | Apparatus and methods for texture mapping | |
US9122646B2 (en) | Graphics processing systems | |
WO2020206669A1 (zh) | 一种自适应的点云条带划分方法 | |
CN112509118B (zh) | 一种可预加载节点和自适应填充的大规模点云可视化方法 | |
CN1609898A (zh) | 使用阴影空间来产生阴影效果的方法与装置 | |
GB2546720B (en) | Method of and apparatus for graphics processing | |
US10198788B2 (en) | Method and system of temporally asynchronous shading decoupled from rasterization | |
CN113947657A (zh) | 目标模型的渲染方法、装置、设备及存储介质 | |
EP1911000A1 (en) | 2d editing metaphor for 3d graphics | |
US7439970B1 (en) | Computer graphics | |
CN116152039B (zh) | 图像渲染的方法 | |
CN107330846B (zh) | 一种基于屏幕块对的双目渲染流水线流程与方法 | |
CN107679150B (zh) | 海量三维数据快速调度方法 | |
CN103164440B (zh) | 面向虚拟现实的空间数据引擎方法 | |
CN117745962A (zh) | 一种地质模型三维可视化方法 | |
CN106067193B (zh) | 一种点云数据的体素化方法和体素的遮挡裁剪方法 | |
CN115049531B (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
Lux et al. | GPU-based ray casting of multiple multi-resolution volume datasets | |
Luo et al. | Quad-tree atlas ray casting: a gpu based framework for terrain visualization and its applications | |
CN1256707C (zh) | 基于多样图的纹理合成方法 | |
CN109829970B (zh) | 一种基于不等尺寸分块的海量数据并行体绘制方法 | |
US11620820B1 (en) | Repetition reduction for real-time tile-based texture synthesis of aerial imagery | |
Kühnert et al. | A Novel Approach to Real-Time Rendering of Large-Scale Terrains Employing Uniform Distance-Dependent Level of Detail and Chunked Clipmaps | |
Verlani et al. | Depth images: Representations and real-time rendering |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180622 |
|
RJ01 | Rejection of invention patent application after publication |