CN110599391B - 一种图形绘制方法、装置及计算机可读介质、设备 - Google Patents

一种图形绘制方法、装置及计算机可读介质、设备 Download PDF

Info

Publication number
CN110599391B
CN110599391B CN201910520061.3A CN201910520061A CN110599391B CN 110599391 B CN110599391 B CN 110599391B CN 201910520061 A CN201910520061 A CN 201910520061A CN 110599391 B CN110599391 B CN 110599391B
Authority
CN
China
Prior art keywords
vertex
special
vertex data
elements
data
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
Application number
CN201910520061.3A
Other languages
English (en)
Other versions
CN110599391A (zh
Inventor
谢成鸿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Lanya Box Technology Co ltd
Original Assignee
Beijing Lanya Box Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Lanya Box Technology Co ltd filed Critical Beijing Lanya Box Technology Co ltd
Priority to CN201910520061.3A priority Critical patent/CN110599391B/zh
Publication of CN110599391A publication Critical patent/CN110599391A/zh
Application granted granted Critical
Publication of CN110599391B publication Critical patent/CN110599391B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本申请实施例公开了一种图形绘制方法、装置及计算机存储介质、设备。该方法包括:确定至少一个顶点缓存区;将待绘制的目标图形中包括异形元素在内的元素的各个顶点数据缓存到所述顶点缓存区内,所述顶点数据包括构成所述元素的顶点的位置坐标信息,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;当图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制。本申请实施例提高了图形绘制效率。

Description

一种图形绘制方法、装置及计算机可读介质、设备
技术领域
本说明书涉及计算机技术领域,尤其涉及一种对包含异形元素的目标图形绘制方法、装置及计算机可读介质、设备。
背景技术
随着计算机技术的发展,人们通过依托于计算机的图形绘制技术,可以绘制(或渲染)出满足各种需要的电子图形(或图像)。比如,在一些实时性较强的网络游戏中,需要通过不断的图形绘制来展示各种人物、环境、场景等游戏要素的变化。图形绘制的速度快慢,将直接影响到用户对多媒体视频、游戏、广告视频等产品的体验,从而波及到产品的运营。
为增强层次感、现实感,传统的2D图形绘制逐渐过渡到3D图形绘制。但无论是2D图形绘制,还是3D绘制图形,在进行绘制时,均是由处理设备的CPU(中央处理单元)来执行绘制指令。考虑到GPU的强渲染能力,现实中CPU接收到绘制指令后,并非自己直接完成指令执行任务,而是转为调用图形编程接口(比如,DrawCall函数),命令GPU完成图形渲染。在每次调用图形编程接口前,CPU组织好绘制所需要的各种数据、渲染状态及各种绘制指令,然后提交给GPU具体完成绘制工作。
通常,被绘制的2D或3D图形由最小的绘制基本单位组成,且这些基本单位均为正方体(以下简称正方体元素),而这些元素少则上千,多则上万,甚至十万或更多。按照上述绘制方法,在绘制目标图形时,每绘制一个正方体元素均需调用图形编程接口,组成目标图形的元素越多,该调用次数将越多,由此大大降低了图形绘制的效率,严重影响用户体验。
发明内容
有鉴于此,本说明书实施例提供了一种图形绘制方法、装置及计算机可读介质,用于解决现有技术中图形绘制效率低下的问题。
一方面,本说明书实施例提供的一种图形绘制方法,包括:
确定至少一个顶点缓存区;
将待绘制的目标图形中包括异形元素在内的元素的各个顶点数据缓存到所述顶点缓存区内,所述顶点数据包括构成所述元素的顶点的位置坐标信息,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;
当图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制。
优选地,所述非异形元素为立方体元素,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据,具体包括:
对异形元素中顶点个数少于非异形元素的一个面的顶点个数的面,将该异形元素的面的顶点数据进行重复,直至重复后所述异形元素的该面的顶点数据个数为立方体元素一个面的顶点个数,将重复后得到的异形元素的该面的顶点数据确定为所述异形元素该面的顶点数据;
对异形元素中顶点个数多余非异形元素的一个面的顶点个数的面,将该异形元素的面的顶点数据进行重复,直至重复后所述异形元素的该面的顶点数据个数为立方体元素一个面的顶点个数的倍数,将重复后得到的异形元素的该面的顶点数据确定为所述异形元素该面的顶点数据。
优选地,所述目标图形中的元素包括至少两个元素,所述至少两个元素包括本次绘制之前已绘制过的至少一个元素和本次绘制新加入的至少一个元素。
优选地,当本次绘制有新加入元素时,判断所述新加入的元素的各个顶点数据是否已存储在所述顶点缓存区中;如果是,则记录所述新加入元素中顶点数据已存储在所述顶点缓存区的顶点在所述顶点缓存区的位置,不将该顶点的顶点数据缓存到所述顶点缓存区。
优选地,当本次绘制有新加入异形元素时,判断所述新加入异形元素中能够构成面的至少三个顶点构成的面与该新加入元素相邻且为非异形元素中至少三个顶点构成的面之间的关系;如果有不可见的面,则删除所述异形元素中不可见的面对应的顶点数据,或者当图形绘制被触发时,不对所述异形元素中不可见的面对应的顶点数据进行渲染。
优选地,所述删除所述异形元素中不可见的面对应的顶点数据,具体包括:
将所述顶点缓存区中由至少三个顶点构成的存储于顶点缓存区中最末尾的面的顶点数据,覆盖所述不可见的面对应的顶点数据。
优选地,所述顶点数据包括顶点色数据;当本次绘制有新加入元素时,判断所述新加入元素中能够构成面的至少三个顶点构成的面与该新加入元素的邻居元素中至少三个顶点构成的面之间的关系;如果有被光线影响产生阴影的面,则对所述被光线影响产生阴影的面对应顶点的顶点色数据进行调整使其变暗。
优选地,当需要删除目标图形中的元素时,将所述顶点缓存区中存储于最末尾的元素的各个顶点数据,覆盖所述需要删除的目标图形中元素对应的各个顶点数据。
优选地,所述方法还包括:确定至少一个顶点索引区,所述顶点索引区用于存储所述元素的顶点数据在所述顶点缓存区中的位置;
所述对所述顶点缓存区内缓存的多个顶点数据进行一次新渲染,具体包括:
确定目标图形中元素的各个顶点在顶点索引区中的数值;
根据所述顶点索引区中的数值从顶点缓存区中确定目标图形中元素相应的顶点数据;
对所述目标图形中元素相应的顶点数据进行一次性渲染。
又一方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上述任一项所述的方法。
再一方面,本申请实施例还提供了一种用于在用户设备端进行信息处理的设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行上述任一项所述的方法。
又一方面,本申请实施例提供了一种图形绘制装置,该装置包括:
顶点缓存区,用于缓存图形中元素的顶点数据,所述顶点数据包括构成所述元素的顶点的位置坐标信息;
缓存单元,用于将待绘制的目标图形中包括异形元素在内的元素的各个顶点数据缓存到所述顶点缓存区内,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;
渲染单元,用于在图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制。
优选地,所述装置还包括第一判断单元,用于当本次绘制有新加入元素时,判断所述新加入的元素的各个顶点数据是否已存储在所述顶点缓存区中;如果是,则记录所述新加入元素中顶点数据已存储在所述顶点缓存区的顶点在所述顶点缓存区的位置,不将该顶点的顶点数据缓存到所述顶点缓存区。
优选地,所述装置还包括第二判断单元,用于当本次绘制有新加入异形元素时,判断所述新加入元素中能够构成面的至少三个顶点构成的面与该新加入元素相邻且为非异形元素中至少三个顶点构成的面之间的关系;如果有不可见的面,则删除所述异形元素中不可见的面对应的顶点数据,或者当图形绘制被触发时,不对所述不可见的面对应的顶点数据进行渲染。
优选地,所述装置还包括第三判断单元,用于当本次绘制有新加入元素时,判断所述新加入元素中至少三个顶点构成的面与该新加入元素的邻居元素中至少三个顶点构成的面之间的关系;如果有被光线影响产生阴影的面,则对所述被光线影响产生阴影的面对应顶点的顶点色数据进行调整使其变暗。
本说明书实施例采用的上述至少一个技术方案将待绘制的目标图形中的元素的各个顶点数据缓存到预先确定的顶点缓存区中,然后在图形绘制被触发时,一次性地将顶点缓存区中的顶点数据提交渲染,避免了一个元素的渲染进行一次提交操作和渲染操作,减少了提交操作的次数,提高了图形绘制效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例中的异形元素的示例性结构;
图1b为本申请的图形绘制方法实施例流程图;
图2a为按照本申请实施例绘制的一个示意性实例的效果图;
图2b为本申请实施例中删除异形元素重合面的一个示意性实例;
图2c为本申请实施例中删除异形元素重合面的又一个示意性实例;
图3a为未经过处理的目标图形中相邻元素的仰视状态图和前视状态图;
图3b为经过处理的目标图形中相邻元素的仰视状态图和前视状态图;
图4a为删除B元素之前顶点缓存区的状态图;
图4b为删除B元素之后顶点缓存区的状态图;
图5为本说明书实施例中图形绘制装置示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案执行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如前所述,在现有技术中绘制一个目标图形时,由于每进行一次绘制,便需要CPU调用图形编程接口,向GPU提交该目标图形中众多元素的顶点数据,而目标图形中通常存在成百上千,乃至上万个元素,使得调用过程也将进行成百上千,乃至上万次,由此大大降低了图形绘制的效率。这种技术上的缺陷,在使用目标图形的用户看来,图形绘制过程过于缓慢,画面不流畅,显得“卡”。这在一些实时性要求较高的产品中,本该数秒或更短时间内完成,却在几秒或更长的时间内才得以完成,简直“难易忍受”,从而严重影响到用户的体验。如果是偶尔出现图形绘制延迟,尚可“原谅”,但是,在一个目标图形使用过程中,基于处理设备的刷新率,将不断地进行刷新操作,每次刷新便是一次图像重新绘制过程,一次重新绘制需要进行成百上千的数据提交,那么进行连续不断的刷新操作,将由于一次的延迟而变得次次延长,从而引发图形绘制的“雪崩效应”,这是一个严重的后果。
为了解决上述技术上的问题,本申请说明书实施例提供一种全新的包含异形元素在内的图形绘制方案。在对该方案进行详细介绍之前,为理解的便利,这里先对一些基本的概念予以说明。
在本申请的各种实施例中,将涉及“元素”及“顶点”概念。元素是相对于整体而言,如果将待绘制的目标图形作为一个整体,那么构成该目标图形的一个个最小的基本单元,便是元素。最小基本单元不是单单从目标图形的组成本身而言的,而更多的是从绘制目标图像的绘制操作而言的。比如,一个大型的3D建筑场景,单从该场景的组成来看,整个3D建筑场景是由一间间房屋组成的,但从绘制3D建筑场景而言,则是通过绘制一个一个小立方体(Cube)等结构才得以绘制出一个建筑单元(砖块),一个个建筑单元的组合才构成一个房间,进而才得到一个完整的3D建筑场景,由此,这里将一个个小立方体或其他类似结构看着“元素”更合适。也就是说,“元素”是绘制的基本单元,在某些时候可能与场景的构成基本单元相同,在某些时候可能又不相同。在这样的理解之下,那么元素便可进一步“内窥”。假如目标图形是由绘制一个个小立方体而完成(当然,也可以是其他结构体,比如立锥体、圆柱体等),那么为完成对“小立方体”(Cube)的绘制,则是通过对组成该Cube的8个顶点的顶点数据的处理而得到的。如果在另一种实现方式中,对最小基本单元的绘制是通过对组成该Cube的6个面的面数据的处理而得到,那么对“元素”概念的“内窥”,则可以止于面数据。为简便期间,只要不妨碍发明目的的实现,本申请中的顶点数据,将作为纯粹一个点的点数据以及某些情况下一个面的面数据的统称。
在本申请各种实施例中,元素为构成整体的最基本单元,该元素在前述例示性说明中,更多的体现为立方体,立方体是一种“边、角、顶点”等要素均较为规范性的元素,这里称为非异形元素,但是,在一些实施例中,绘制图形过程中同样可以包括大量的异形元素,即结构不像立方体那样规则的元素。参见图1a,该图示出了几种较为常见的异形元素,包括四棱锥、三棱柱、直三棱柱、正梯形柱、小四棱锥、正梯形等。这些异形元素的共同特点是:形状不同于立方体,但均以立方体为最大外切面,可以被分解或补齐为立方体,以及同样具有顶点数据,但顶点的个数可能少于或多余立方体的顶点个数。这些特点构成了本申请后续信息处理的基础。
在本申请各种实施例中,会涉及“图形”这一基本术语。图形是通过执行指令而得出的一个执行结果,对于观察图形的观察者而言,它并非一定表现为一副美妙的图画,可以仅仅是素描、线条组合、线点组合等,它也并非一定是一个2D或3D的图形,在上述3D建筑场景中,建筑所坐落的地面看着是一个2D平面,但它可能是由多个小立方体(Cube)或者其他异性元素紧密排列形成。此外,本申请也不严格去区分“图形”与“图像”有何种细微上的差异。由此,“图形绘制”便是一个较为广泛的概念,从计算机的角度,实现了对目标对象的渲染便是完成了图形绘制。
在本申请各种实施例中,还将涉及“缓存区”的用语。缓存(Buffer)是用于临时存放数据,但在本申请中仅仅是就“缓存”的这一基本功能进行使用,对于“缓存”究竟存储某个数据要多久才称为“缓”存,并非需要着重讨论的问题,它是相对于永久性存储而言,因而在对缓存使用的范畴内,便成立“缓存”。比如,当前正进行一款游戏应用的操作,在该游戏整个运行过程中,存在一定空间大小的用于存储游戏过程产生的数据的存储区,当该游戏应用退出或者该游戏应用的某一局结束,则该存储区内的数据将消失,变得“空白”而可以再次写入数据,那么,这种具有数据写入和数据消失时间的存储区便可理解为缓存。同样地,本申请中也不着重讨论缓存的形成、大小、数量等内涵:缓存可能来自处理设备中专门指定的内存的一部分,也可以来自处理设备之外但与该处理设备连接的其他专用于数据临时读写的存储块;缓存的大小可基于实际存储数据的需要而设定,当不足以满足当前数据写入的需要时,可以通过删除重复数据或过期数据等形式收回缓存空间,也可以通过自由而动态扩展的方式再行增加缓存空间;缓存的数量同样是基于实际业务的需要,如果说几条业务并行,可以分别设定缓存区,或者即便是针对同一个业务,为了增强对缓存的控制,也可以多设定个缓存区,从而使得缓存“短小精干”,易于访问、管理及控制。
对几个基本术语予以简要说明后,回到本申请实施例中来。参见图1b,图1b示出了解决现有技术问题的一种图形绘制方法实施例的流程。该流程包括:
S101:确定至少一个顶点缓存区;
该步骤的顶点缓存区用于缓存目标图形中元素的各个顶点数据。前述提及,一个待绘制的目标图形可能有多个元素,一个元素可能有多个顶点,一个顶点可能有从不同角度描述它的顶点数据。以构成目标图形的元素为小立方体为例,一个小立方体有8个顶点,一个顶点具有位置坐标数据,如在设定的坐标系中(比如,以目标图形所在的虚拟世界中某个基点为原点的坐标系)的长、宽、高值,还可以包括颜色值(顶点色)数据,如以RGB表达的颜色分量值,以及VB等数据。确定顶点缓存区,具体可以在预先准备的内存块中划分出一个区域作为顶点缓存区(VertexBuffer)。如果根据业务或数据存储需要,该划分出来的顶点缓存区不足,则可以进一步动态扩展,扩展缓存区的方向可以是对一个已有缓存区的空间加大,也可以是另行开辟一个独立缓存区。在多条业务线(线程)并行处理的情况下,可以同时存在多个顶点缓存区。
S102:将待绘制的目标图形中包括异形元素在内的元素的各个顶点数据缓存到所述顶点缓存区内,所述顶点数据包括构成所述元素的顶点的位置坐标信息,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;
通过前述步骤确定出顶点缓存区后,便为顶点数据找到了“落脚之地”,随后将待绘制的目标图形中的元素的各个顶点数据缓存到顶点缓存区内。由于目标图形中包含很多元素,那么可以采取更果断的方式,将目标图形的全部元素的全部顶点数据存储于确定的顶点缓存区内;也可以采取更柔和与兼容的方式,将目标图形的部分元素的全部顶点数据存储于顶点缓存区内,而将目标图形中的其他元素的全部顶点数据按照现有技术的处理方式进行处理,如直接提交到GPU完成绘制,至于哪些元素作为“果断措施”的对象,哪些元素作为“柔和措施”的对象,可以按照元素在目标图形中的重要性、元素在目标图像中的展示位置等因素来区分。尽管如此,作为一种全新的技术方案,可以优选将目标图形的全部元素的全部顶点数据缓存到顶点缓存区。不过,在对目标图形进行绘制时,在连续接收多个元素的情况下,采取所谓“果断措施”,则可能需要等到全部元素的顶点数据存储到缓存区后,才能进行如后续步骤的一次性绘制,因而如果对这种时间的等待无法容忍时,则可以选择将部分先接收的元素按照现有技术的做法,一个一个提交GPU渲染,其它能够接受“时间等待”的元素留待后续一次新提交渲染。由于是对目标图形众多元素中的“一部分”而非全部采取上述措施,既能兼顾到图形绘制的速度,也能使得渲染结果更快呈现,由此体现出“局部优势”。
需要说明的是,在将顶点数据缓存到顶点缓存区后,在每个元素的属性中,还可以在内存中另外开辟一个存储区记录元素各个面在顶点缓存区中的位置,具体实现时,可以通过记录构成各个面的顶点数据在顶点缓存区的位置来实现,即建立起元素的面与构成该面的几个顶点数据在顶点缓存区中位置之间的对应关系,这样当需要对元素的面进行操作时,一方面确保指令的参数不用细化到顶点数据这个层级,减少指令的复杂度,另一方面又能在具体执行指令时获取到顶点数据,完成目标操作。由于记录了各个元素的面,这样就便于对单个元素进行移动、删除以及二次编辑等目标操作,操作时仅修改顶点缓存区中的数值即可实现目标。
还值得说明的是,前述描述似乎没有障碍,但是,在对元素处理过程中如果包含异形元素,则存在可能的特殊之处:某些异形元素的面可能包含的顶点个数不足立方体一个面的4个顶点或者超过4个顶点,这样前述的顶点数据便可能不足8个顶点数据或者超过8个顶点数据,为此,需要以立方体为标准,对其进行“规范”:
对于异形元素中顶点个数少于单个立方体的一个面的顶点个数的那些面,针对每个面,将该面内的顶点数据进行重复(可以重复该面中的任何一个顶点数据,比如,一个面中有A、B、C三个顶点数据,那么可以重复A,以表现为【A、A、B、C】四个顶点,也可以重复B,以表现为【A、B、B、C】四个顶点),直至重复后的顶点数据个数为一个立方体元素的一个面的顶点个数,即四个顶点数据,然后将重复后得到的异形元素的顶点数据确定为该异形元素的这个面的顶点数据;
对于异形元素中顶点个数多余单个立方体元素的一个面的顶点个数,但又不是立方体的倍数的那些面,针对每个面,则可以对该面内的顶点数据进行重复,直至重复后的顶点数据个数为一个立方体元素的一个面的顶点个数的倍数,该倍数值范围通常大于1,即如果顶点个数在(4,8)之间的,通过重复补足为8个,顶点个数在(8,12)之间的,通过重复补足为12个,以此类推。
上述两种情形在实际过程中,就某个异形元素而言,可能仅仅表现为第一种情形,即每个面的顶点个数均少于立方体元素的一个面的顶点个数,也可能表现为第二种情形,即每个面的顶点个数均多余立方体元素的一个面的顶点个数,但还可能表现为“混合型”,即在该异形元素中既有顶点个数多余立方体的,也有少于立方体的,在这种情况下,可以分别按照上述第一种情形和第二种情形进行处理。
上述介绍的方式体现出一个重要的思想,即“异形”虽然在结构上不同于立方体,但经过上述平滑处理后,对于信息处理设备而言,则仍然被认为为标准的立方体,从而实现“虽异却同”的技术效果。
S103:当图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制。
基于前述步骤将目标图形的顶点数据缓存到顶点缓存区后,一旦图形绘制被触发,则可以将顶点缓存区内的多个顶点数据一次性提交GPU实现渲染,进而完成目标图形的绘制。图形绘制的触发可以是自动触发也可以是人为触发,比如,通常情况下,用户进行图形绘制处理的设备均具备一定的刷新率,没刷新一次屏幕上的图形就将被重新绘制一次,因而“刷新”的进行便起到触发图形绘制的作用,刷新率越大,在单位时间内绘制的次数就越多,画面也就越清晰、鲜活;也可以设置定时任务,当定时任务中的时间被触发时,也就触发了图形绘制操作。在一些应用场景中,通过设置刷新按钮、触发按钮,亦可实现目标图形绘制的触发。
在上述介绍的完整实施例中,没有“火急火燎”地将接收到的目标图形每个元素立即提交GPU渲染,而是“缓半步”,将多个元素的顶点数据缓存到确定的顶点缓存区,然后再以“顶点缓存区”为整体,将其中缓存的顶点数据集中式一次性地提交GPU渲染,完成目标图形的绘制。由于仅仅是一次性提交,待绘制的目标图形的元素较少时,与一次一提交的模式相比,有效果但不明显,但当待绘制的目标图形的元素越来越多,从整体上节约绘制时间的效果将非常明显的体现出来,画面将更流畅,运行效率明显提升,有力地提升了用户体验。而目标图形中元素数量的增加,随着计算机技术的发展,几乎不可否地断言,将是一个必然趋势,本申请实施例的应用前景将更为广阔。图2示出了按照上述技术方案绘制的一个示意性实例的效果图。
在前述实施例中,提交将待绘制的目标图形中的元素的各个顶点数据缓存到顶点缓存区。在该步骤中,由于目标图形的绘制不是单个单个元素的绘制,而是一旦触发目标图形绘制,将涵盖既往历史元素的全部重新渲染,因而被缓存的元素,可能是在本次绘制之前已绘制过的元素,也有可能是本次绘制新加入的元素。基于这种元素时间性差异的特点,为进一步优化上述方案提供了可能。如前所述,无论一个元素是已经绘制过的元素,还是新加入的元素,均需要将其顶点数据存储到顶点缓存区,这就将造成一种可能:新加入到目标图形中的元素,由于可能与已经存在的元素存在相同的顶点数据,将造成同一个顶点数据的再次缓存,这显然导致存储空间和操作时间的“双重”耗费。为此,可以考虑一种“去重”的方案:当本次绘制新加入元素时,先判断新加入的元素的各个顶点数据是否已存储在顶点缓存区中,如果找到了同样数值的顶点数据,那说明顶点缓存区中已有该顶点数据,这样可以仅仅记录该新加入元素中顶点数据已存储在顶点缓存区的顶点在顶点缓存区的位置,然后不将该顶点的顶点数据缓存到顶点缓存区。
通过上述这种处理方式,使得顶点缓存区内的顶点数据各不相同,没有重复的顶点数据,从而节约了有限的缓存空间。另外一个伴随的效果是,不再出现重复“面”:由于面由点构成,没有重复的顶点数据,那么自然没有构成元素的重复的“面”,其已被“合二为一”了。值得说明的是:上述处理方式是从顶点的角度进行的判断,实际上从另一个视角来考虑,其也可以通过判断不同元素之间相邻关系来实现,因为只有那些相邻的元素才有可能出现相同的顶点数据,两个相隔甚远的元素,不可能存在相同的顶点数据。
在前述的改进优化方案中,尽管避免了顶点缓存区中存储同样的元素的面,但是,可以想见,在实际应用过程中,不存储同样的面,并不意味着不会绘制同样的面,即在绘制具有一个或多个相同顶点数据的元素后,具有该相同顶点数据的另一个元素也需要根据记录的该顶点的位置再绘制一遍,以便绘制出自己本身这个元素。比如,元素A与元素B均具有顶点X这个顶点,那么在绘制元素A时要使用一次X这个顶点的顶点数据,绘制元素B时也要使用X这个顶点的顶点数据。实际上,具有相同的顶点,尤其是具有相同的三个顶点以上的两个元素(比如两个立方体紧邻之处),往往意味着有相同的面,从观察者的角度而言,就是两个“面”发生了重合,这时这个“面”实际上也就不可见。对于这种不可见的面,对其进行绘制没有多大意义,也浪费绘制资源,为此,一种可行的优化措施是在顶点存储区中删除该不可见面对应的顶点数据,这样绘制时便因无数据而不会再绘制;另一种可行的优化措施是即便在顶点缓存中存储,但当图形绘制被触发时,选择对其予以“漠视”,即不对该不可见面对应的顶点数据进行渲染。
剔除这种顶点缓存区中的不可见面,既节约了顶点缓存区的存储资源,又避免了绘制操作的资源消耗,可谓“两全”。要对“不可见面”进行删除,可以有多种方法。比如,从顶点缓存区中确定出某个面为不可见面时,直接予以删除,然后将存储于该“不可见面”之后的顶点数据前移,以保障顶点缓存区不出现“空隙”。然而,这种方式是一种“霸王硬上弓”的“鲁莽”,尤其是该“不可见面”位于顶点缓存区的前端时,将牵一发而动全身,需要改写其后所有的元素各个顶点数据的存储位置,其数量可能不小,由此“动静”过大,造成大量计算资源的耗费。为使得删除操作“平滑而悄无声息”,节约计算资源,可以采取“交换方案”,即将顶点缓存区中由至少三个顶点构成的存储于顶点缓存区中最末尾的面的顶点数据,覆盖掉该“不可见面”对应的顶点数据,这种仅仅涉及顶点缓存区最末端的“面”与“不可见面”两个面,与其他“面”无涉,从而顺利完成对“不可见面”的删除。
上述内容有必要进一步探讨。实际上,在包含异形元素的图形绘制过程中,可能存在三种情形:一是非异形元素与非异形元素之间存在重合面的情形;二是非异形元素和异形元素之间存在重合面的情形;三是异形元素和异形元素之间存在重合面的情形。下面简要地逐一讨论:
对于第一种情形,由于均为非异形元素,在判断新加入的非异形元素和已存在的非异形元素是否存在重合面(不可见面)时,只需要判断顶点数据是否存在至少三个相同即能实现,如果判断出来存在重合面,由于两者均为规范结构,可直接将该重合面删除。
对于第二种情形,由于存在异形元素,其各个面可能不规则,有些可能与非异形元素完全重合,有些则可能与非异形元素存在大小之差,因此便不能通过简单的顶点数据相同与否的方式进行判断,这种情况下需要考虑异形元素的法线方向、物理位置等信息。比如,先通过异形元素和非异形元素之间的物理位置关系判断两者是否相邻(即是否相差一个元素空间的位置),如果不相邻(即两个元素之间隔了至少一个其他元素),则没有必要继续进行判断,因为该情况下不可能产生重合面;如果相邻,则进一步判断异形元素和非异形元素的相邻面之间的法线信息,如果非异形元素的法线方向与异形元素的法线方向相向且相互平行但不重合(即相反向量),那么可以认为两者存在重合面。在判断出来存在重合面的情况下,不能像第一种情形那样直接删除不可见面(重合面),由于异形元素为不规则结构,异形元素和非异形元素之间的重合可能是部分重合,而不是完全重合,这种情况下需要删除的是异形元素中不可见面,而保留非异形元素中相应的面,基于非异形元素的面为最大的面的实际情况,删除异形元素的不可见面将不会影响到整体的显示效果,而要是删除非异形元素的不可见面,则可能出现“镂空”,影响到显示效果。下面举例说明:参见图2b,当左边cube(立方体)与右边三棱柱相邻时,cube的2号面会与三棱柱的2号面重合,这时候,三棱柱的2号面会因为重合而看不到,便需要剔除掉右面三棱柱的2号面。在这种异形与cube相邻的情况下,将根据异形与cube相邻面的法线信息来判断这个面是否可以剔除,如该图中三棱柱的2号面,该面的法线是与世界坐标的x轴平行,因此此面必然会和cube的面重合,从而可以剔除调异形重合的面。
对于第三种情形,其基本原理与前述相同,但实际可能更为复杂。比如,在进行重合面的删除时,有可能需要判断两个异形元素的面哪个更小一些,从而将更小的面予以删除。下面举例说明:如下图2c所示,在左边三棱柱和右边三棱柱相邻时,两个三棱柱的2号面会重合,这时需要剔除这两个2号面,在这种情况下,将会依据异形面的法线来判断这两个面是否有剔除的可能,如果这两个面的法线互相平行且与世界坐标中的x或y或z轴平行,便认为这两个面满足剔除的一个条件,随后再判断相邻两个异形的具体形状来判断这两个面是否能剔除,如图中两个三棱柱相邻是可以剔除的,但假如两个异形分别是三棱柱和梯形柱,那两个面便是不可剔除的。
与目标图形中元素的面相关的问题,还可以继续探讨。在一个目标图形中存在多个元素,多个元素相互之间将存在近邻关系,这些存在相互近邻关系的元素除了具有前述的面与面重复的问题外,还可能基于“漫反射”的存在,在光线上存在相互的影响,这类现象称为环境光遮蔽(Ambient Occlusion,注:不同于未被光线照射而在物体背后产生的阴影)。从观察者的角度而言,可以看见在一个元素的面与另一个元素的面相邻时,可能会在另一个面上形成一定程度的阴影(注意并非遮挡),从而更能体现空间层次感。为在3D目标图形中呈现出这种效果,解决或改善目标场景中缝隙、褶皱与墙角、角线以及细小物体等表现不清晰的问题,当本次绘制有新加入元素时,可以判断新加入元素中的面与其他相邻元素的面之间的关系,如果有被光线影响而产生阴影的面,则可以对该被光线影响产生阴影的面对应顶点的顶点色数据进行调整,使其变暗。顶点色数据作为顶点数据的一种,也存储在顶点缓存区之中。对顶点色数据进行调整的具体方式可以是,将有影响的面对应的顶点色乘以一个系数(比如,0.7),从而将顶点色变暗。这里需要说明的是,一个元素的面的颜色是由组成该面的顶点的顶点色决定的,一个小立方体的四个顶点的顶点色从自身数值开始,向中心逐渐过渡蔓延,从而填充完整个面,形成“面”色彩。
下面通过图示说明。参见图3a所示,呈现出了未经过处理的目标图形中的多个元素相邻状态下的俯视图和前视图,现在假设该图中的(3,3)位置(以图左上角为为坐标原点)上新加入一个小立方体元素,那么该小立方体在“漫反射”的原理下,将作用于其周边的小立方体。采用如前所述的方法,对其四个顶点(如图中红色点)的顶点色予以调整。调整后呈现的效果如图3b所示。
在前述各种实施例中,重点讨论了新加入元素到目标图形中的情形,但在现实中,还存在删除元素的可能。与前述提及存在重复面的删除同样的道理,这里也可以采取“交换”方案进行不需要元素的删除。参见图4a、4b,假设要删除A、B、C、D四个元素中的B元素,图4a示出了删除B元素之前顶点缓存区的状态;图4b示出了删除B元素之后顶点缓存区的状态。从该图可以看出,为了实现对B元素的删除,并没有必要在删除B之后,将C、D往前移的操作,而是在该顶点缓存区的末尾中选择D元素,然后将D元素移动到B元素除,从而在保持C元素位置不发生变化的情况下实现了对B元素的删除。这种模式可以概括为当需要删除目标图形中的元素时,将所述顶点缓存区中存储于最末尾的元素的各个顶点数据,覆盖需要删除的目标图形中元素对应的各个顶点数据。上述举例时在D元素之间仅有一个C元素,当D元素之前有很多元素时,效果体现更明显,由于D之前的元素特别多,如果采取直接逐个前移以填补被删除元素留下的空白时,将大大导致性能损耗,而采取上述将最末尾元素调换至删除的元素位置处,因仅仅涉及一个元素的移动,从而节约了资源,减少了性能损耗。
前述实施例大概是在同一个方向上完成了对第一个实施例的优化和改进,实际上,本申请实施例的改进和完善可以是多方向、多角度的。下面列举一种方式:在前面实施例中提到将目标图形的顶点数据存储于顶点缓存区中,这种缓存是直接缓存,即将顶点数据本身存储于顶点缓存区,这种方式下,当需要对顶点数据进行改变时,将非常麻烦,尤其影响到对提交该GPU渲染的指令参数。为此,本申请实施例提供一种可将顶点缓存区的数据与指令解耦的方式,那就是再设定一个顶点索引区(IndexBuffer),用于存储顶点数据在顶点缓存区中的位置,在指令的参数中可以直接使用该顶点索引区的数值,而不是顶点数据本身,当需要执行指令时,再根据顶点去顶点索引区中区查询该顶点在顶点缓存区中的位置值,然后根据该位置值从顶点缓存区中找到该顶点的顶点数据本身,用于GPU对目标推行中元素相应顶点数据的渲染。
基于顶点索引区的存在,完全可以将其预先定义在一段固定值,如绘制第一个元素Cube,其顶点索引区(indexBuffer)的值为:
第一面:0、1、2、2、3、0
第二面:4、5、6、6、7、4
第三面:8、9、10、10、11、8
第四面:12、13、14、14、15、12
第五面:16、17、18、18、19、16
第六面:20、21、22、22、23、20
上述“0”“1”等数值指引了某个顶点在顶点缓存区中的位置。由于目标图形中各种场景均由相同式样的元素Cube组成,当有新元素加入目标图形或者需要连续绘制多个元素时,完全可以把上面这个有规律的数据,加上N(绘制的元素个数)*24(顶点数),即将顶点索引区的数值保持不变,通过加上N*24的偏移量,逐个绘制出相应的元素。通过这种方式,可以预先将顶点索引区中的所有值一次性分配好,仅上传一次GPU,然后通过特定的函数(比如,drawElement函数)控制元素个数。由此减少二次修改顶点索引区的次数,又避免了多次将顶点索引区上传到GPU,从而提高运行效率。
前述内容从各个方面详细介绍了本申请的方法实施例,与之对应的本申请还提供了装置实施例。参见图5,该图示出了图形绘制的装置实施例的结构示意图,该装置实施例包括:顶点缓存区U51,用于缓存元素的顶点数据,所述顶点数据包括构成元素的顶点的位置坐标信息;缓存单元U52,用于将待绘制的目标图形中包括异形元素在内的元素的各个顶点数据缓存到所述顶点缓存区内,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;渲染单元U53,用于在图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制。该装置由于预先将目标元素的各个顶点数据缓存到顶点缓存区,然后再以顶点缓存区为整体,对该缓存区内的多个顶点数据进行一次性渲染,该方式避免了现有技术“一个顶点数据一次提交”“单独渲染”的做法,从而节约了资源,提供了图形绘制的效率。
上述实施例中面对的元素可以是新加入的元素,该情况下需要将该新加入的元素连同原来已在目标图形中的元素进行共同绘制;也可以仅仅是原来已经存在的元素,在绘制被触发的情况下进行再次绘制。对于新加入的元素,一种改进的图形绘制装置是增加一个判断单元(第一判断单元U54),用于判断新加入的元素的各个顶点数据是否已存储在所述顶点缓存区中;如果是,则记录所述新加入元素中顶点数据已存储在所述顶点缓存区的顶点在所述顶点缓存区的位置,不将该顶点的顶点数据缓存到所述顶点缓存区。增加这样一个新的单元,可以避免顶点缓存区中存储相同的顶点,从而节约存储资源的目的。
实际上,除了考虑到顶点的重复外,在图形绘制过程中,还可能存在“不可见面”,这些不可见面在观察者角度而言,不能被观察到,如此便没有必要进行绘制,因而上述装置实施例还可以增加第二判断单元U55,判断所述新加入异形元素中能够构成面的至少三个顶点构成的面与该新加入元素相邻且为非异形元素中至少三个顶点构成的面之间的关系;如果有不可见的面,则删除所述异形元素中不可见的面对应的顶点数据,或者当图形绘制被触发时,不对所述异形元素中不可见的面对应的顶点数据进行渲染。在具体删除异形元素中不可见面对应的顶点数据时,可以将顶点缓存区中由至少三个顶点构成的存储于顶点缓存区中最末尾的面的顶点数据,覆盖所述不可见的面对应的顶点数据。与此道理类似,如果在判断所述新加入元素中至少三个顶点构成的面与该新加入元素的邻居元素中至少三个顶点构成的面之间的关系之后,发现有被光线影响产生阴影的面,可以对所述被光线影响产生阴影的面对应顶点的顶点色数据进行调整使其变暗。为和前面的判断单元相互区别,可以将其设定为第三判断单元U56,当然,由同一个单元来实现判断,只不过针对不同的结果有不同的处理走向,也是可行的。
上述的改进方向的技术效果可以参照前述方法实施例的内容,因而并非不能取得相应的技术效果,仅仅是出于避免重复的考虑。进一步地,实际上上述装置实施例还可以按照方法实施例的内容进行其它方面的改进,本领域技术人员应当是知晓的,也不再予以赘言。
从实施的角度,除了上述重点描述的方法实施例,以及对应的装置实施例,本申请的发明创造还可以体现为计算机可读介质和在用户设备端的信息处理设备,当表现为计算机可读介质时,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行前述方法实施例的方法步骤。当表现为用户设备端的信息处理设备时,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行前述方法实施例的方法步骤。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、AtmelAT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤执行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文申描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
应该理解的是,本发明所公开的实施例不限于这里所公开的特定结构、处理步骤或材料,而应当延伸到相关领域的普通技术人员所理解的这些特征的等同替代。还应当理解的是,在此使用的术语仅用于描述特定实施例的目的,而并不意味着限制。
说明书中提到的“一实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一实施例”并不一定均指同一个实施例。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种对包含异形元素的目标图形的绘制方法,其特征在于,包括:
确定至少一个顶点缓存区;
将待绘制的目标图形中包括异形元素、非异形元素在内的全部元素的各个顶点数据缓存到所述顶点缓存区内,所述顶点数据包括构成所述元素的顶点的位置坐标信息,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;所述非异形元素为组成所述目标图形的最基本单元,体现为立方体;
当图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制,所述目标图形是由绘制立方体而完成的;
所述方法还包括:确定至少一个顶点索引区,所述顶点索引区用于存储所述元素的顶点数据在所述顶点缓存区中的位置;
所述对所述顶点缓存区内缓存的多个顶点数据进行一次新渲染,具体包括:
确定目标图形中非异形元素和异形元素的各个顶点在顶点索引区中的数值;
根据所述顶点索引区中的数值从顶点缓存区中确定目标图形中元素相应的顶点数据;
对所述目标图形中元素相应的顶点数据进行一次性渲染。
2.根据权利要求1所述的方法,其特征在于,所述非异形元素为立方体元素,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据,具体包括:
对异形元素中顶点个数少于非异形元素的一个面的顶点个数的面,将该异形元素的面的顶点数据进行重复,直至重复后所述异形元素的该面的顶点数据个数为立方体元素一个面的顶点个数,将重复后得到的异形元素的该面的顶点数据确定为所述异形元素该面的顶点数据;
对异形元素中顶点个数多于非异形元素的一个面的顶点个数的面,将该异形元素的面的顶点数据进行重复,直至重复后所述异形元素的该面的顶点数据个数为立方体元素一个面的顶点个数的倍数,将重复后得到的异形元素的该面的顶点数据确定为所述异形元素该面的顶点数据。
3.根据权利要求2所述的方法,其特征在于,所述目标图形中的元素包括至少两个元素,所述至少两个元素包括本次绘制之前已绘制过的至少一个元素和本次绘制新加入的至少一个元素。
4.根据权利要求3所述的方法,其特征在于,
当本次绘制有新加入元素时,判断所述新加入的元素的各个顶点数据是否已存储在所述顶点缓存区中;如果是,则记录所述新加入元素中顶点数据已存储在所述顶点缓存区的顶点在所述顶点缓存区的位置,不将该顶点的顶点数据缓存到所述顶点缓存区。
5.根据权利要求3所述的方法,其特征在于,
当本次绘制有新加入异形元素时,判断所述新加入的异形元素中能够构成面的至少三个顶点构成的面与该新加入元素相邻且为非异形元素中至少三个顶点构成的面之间的关系;如果有不可见的面,则删除所述异形元素中不可见的面对应的顶点数据,或者当图形绘制被触发时,不对所述异形元素中不可见的面对应的顶点数据进行渲染。
6.根据权利要求5所述的方法,其特征在于,所述删除所述异形元素中不可见的面对应的顶点数据,具体包括:
将所述顶点缓存区中由至少三个顶点构成的存储于顶点缓存区中最末尾的元素的面的顶点数据,覆盖所述异形元素中不可见的面对应的顶点数据。
7.根据权利要求3所述的方法,其特征在于,所述顶点数据包括顶点色数据;
当本次绘制有新加入元素时,判断所述新加入元素中能够构成面的至少三个顶点构成的面与该新加入元素的邻居元素中能够构成面的至少三个顶点构成的面之间的关系;如果有被光线影响产生阴影的面,则对所述被光线影响产生阴影的面对应顶点的顶点色数据进行调整使其变暗。
8.根据权利要求1所述的方法,其特征在于,当需要删除目标图形中的元素时,将所述顶点缓存区中存储于最末尾的元素的各个顶点数据,覆盖所述需要删除的目标图形中元素对应的各个顶点数据。
9.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至8中任一项所述的方法。
10.一种用于在用户设备端进行信息处理的设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1至8中任一项所述的方法。
11.一种图形绘制装置,其特征在于,包括:
顶点缓存区,用于缓存图形中元素的顶点数据,所述顶点数据包括构成所述元素的顶点的位置坐标信息;
顶点索引区,用于存储所述元素的顶点数据在所述顶点缓存区中的位置;
缓存单元,用于将待绘制的目标图形中包括异形元素、非异形元素在内的全部元素的各个顶点数据缓存到所述顶点缓存区内,所述异形元素的顶点数据为按照非异形元素的顶点个数补足后的顶点数据;所述非异形元素为组成所述目标图形的最基本单元,体现为立方体;
渲染单元,用于在图形绘制被触发时,对所述顶点缓存区内缓存的多个顶点数据进行一次性渲染,以完成目标图形的绘制,所述目标图形是由绘制立方体而完成的;具体包括:确定目标图形中非异形元素和异性元素的各个顶点在顶点索引区中的数值;根据所述顶点索引区中的数值从顶点缓存区中确定目标图形中元素相应的顶点数据;对所述目标图形中元素相应的顶点数据进行一次性渲染。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括第一判断单元,用于当本次绘制有新加入元素时,判断所述新加入的元素的各个顶点数据是否已存储在所述顶点缓存区中;如果是,则记录所述新加入元素中顶点数据已存储在所述顶点缓存区的顶点在所述顶点缓存区的位置,不将该顶点的顶点数据缓存到所述顶点缓存区。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括第二判断单元,用于当本次绘制有新加入异形元素时,判断所述新加入的异形元素中能够构成面的至少三个顶点构成的面与该新加入元素相邻且为非异形元素中至少三个顶点构成的面之间的关系;如果有不可见的面,则删除所述异形元素中不可见的面对应的顶点数据,或者当图形绘制被触发时,不对所述异形元素中不可见的面对应的顶点数据进行渲染。
14.根据权利要求11所述的装置,其特征在于,所述装置还包括第三判断单元,用于当本次绘制有新加入元素时,判断所述新加入元素中能够构成面的至少三个顶点构成的面与该新加入元素的邻居元素中能够构成面的至少三个顶点构成的面之间的关系;如果有被光线影响产生阴影的面,则对所述被光线影响产生阴影的面对应顶点的顶点色数据进行调整使其变暗。
CN201910520061.3A 2019-06-17 2019-06-17 一种图形绘制方法、装置及计算机可读介质、设备 Active CN110599391B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910520061.3A CN110599391B (zh) 2019-06-17 2019-06-17 一种图形绘制方法、装置及计算机可读介质、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910520061.3A CN110599391B (zh) 2019-06-17 2019-06-17 一种图形绘制方法、装置及计算机可读介质、设备

Publications (2)

Publication Number Publication Date
CN110599391A CN110599391A (zh) 2019-12-20
CN110599391B true CN110599391B (zh) 2024-07-23

Family

ID=68852747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910520061.3A Active CN110599391B (zh) 2019-06-17 2019-06-17 一种图形绘制方法、装置及计算机可读介质、设备

Country Status (1)

Country Link
CN (1) CN110599391B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116721193A (zh) * 2020-04-27 2023-09-08 北京蓝亚盒子科技有限公司 用于体素模型的存储优化方法、电子设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108196835A (zh) * 2018-01-29 2018-06-22 东北大学 一种游戏引擎中图元存储和渲染的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7218330B1 (en) * 2003-01-07 2007-05-15 Microsoft Corporation Method and system for selecting elements in a graphical user interface
US9965886B2 (en) * 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
JP4584956B2 (ja) * 2007-05-09 2010-11-24 株式会社ソニー・コンピュータエンタテインメント グラフィックスプロセッサおよび描画処理方法
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
US9928621B2 (en) * 2014-07-11 2018-03-27 Autodesk, Inc. Line stylization through graphics processor unit (GPU) textures
EP2993646A3 (en) * 2014-09-05 2016-03-23 Thomson Licensing Device and process for improving efficiency of image rendering
CN108765539B (zh) * 2018-05-24 2022-05-13 武汉斗鱼网络科技有限公司 基于OpenGLES的图像渲染方法、装置、设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108196835A (zh) * 2018-01-29 2018-06-22 东北大学 一种游戏引擎中图元存储和渲染的方法

Also Published As

Publication number Publication date
CN110599391A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
KR102419745B1 (ko) 게임 렌더링 방법, 및 게임 자원 파일 생성 방법, 장치, 및 기기
US11682158B2 (en) Foveated rendering
US11816782B2 (en) Rendering of soft shadows
CN110443893B (zh) 大规模建筑场景渲染加速方法、系统、装置和存储介质
CN109919827A (zh) 一种图形绘制方法、装置及计算机可读介质、设备
US8593475B2 (en) Systems and methods for dynamic procedural texture generation management
TWI479447B (zh) 重新呈現具有明暗變化的訊框之加速
US8817023B2 (en) Method, medium, and system rendering 3D graphic objects with selective object extraction or culling
US20160055608A1 (en) Render target command reordering in graphics processing
TW201432609A (zh) 已分配的拼貼快取
US10403034B2 (en) Image processing method and apparatus for rendering an image based on virtual point light (VPL) samplings
CN109993822B (zh) 一种水墨风格渲染方法和装置
KR20150093689A (ko) 쉘 메쉬에 기초한 최적화된 다각형을 형성하기 위한 방법
CN110599391B (zh) 一种图形绘制方法、装置及计算机可读介质、设备
CN113900797A (zh) 基于虚幻引擎的三维倾斜摄影数据处理方法、装置及设备
KR20220148814A (ko) 효율적인 다중 뷰 래스터화를 위한 방법들 및 장치
CN115315727A (zh) 图形处理单元渲染模式选择系统
CN113926190A (zh) 游戏编辑器中三维模型的控制方法、装置及存储介质
CN114077489A (zh) 一种模型加载方法以及相关装置
CN112837416A (zh) 基于三角剖分的多边形渲染方法、装置及存储介质
US10409359B2 (en) Dynamic bin ordering for load synchronization
US20150054844A1 (en) Methods and systems for generating a polygon mesh
CN114119836A (zh) 渲染方法、装置、电子设备及可读存储介质
KR101598706B1 (ko) 배경 그래픽의 입체적 표시를 위한 컴퓨팅 디바이스 및 컴퓨터 프로그램
CN115588070B (zh) 一种三维图像风格化迁移方法及终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 100094 1301, building 4, area 4, courtyard 81, Beiqing Road, Haidian District, Beijing

Applicant after: Beijing LANYA Box Technology Co.,Ltd.

Address before: 100097 Room 303, 3rd floor, building 1, No. 25, lantianchang South Road, Haidian District, Beijing

Applicant before: SOUYOU NETWORK TECHNOLOGY (BEIJING) Co.,Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant