一种图像渲染方法及装置
技术领域
本申请涉及图像处理技术领域,特别涉及一种图像渲染方法及装置、计算设备和计算机可读存储介质。
背景技术
随着网络技术的发展,游戏行业也随之得以高速发展,游戏中各种效果会带给用户良好的视觉体验,游戏中的效果通常是对图像进行渲染得到的。
目前,为了减少图像渲染的绘制量,多层次细节(LOD)技术得到了广泛的应用,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算,但是在每次进行LOD模型切换时,会将目标模型和目标模型的LOD模型的全部数据进行加载分配,这样会造成巨大的存储消耗,图形引擎的绘制效率会大大降低。
因此,如何解决上述问题,提高图形引擎的绘制效率就成为我们亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种图像渲染方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种图像渲染方法,包括:
获取待渲染模型和所述待渲染模型对应的基础模型的顶点属性信息;
确定所述待渲染模型的顶点坐标和所述待渲染模型的批次索引信息;
创建所述待渲染模型的顶点索引信息;
根据所述待渲染模型的顶点坐标、所述待渲染模型的批次索引信息和所述待渲染模型的顶点索引信息确定所述待渲染模型的顶点渲染索引信息;
获取所述基础模型的贴图内容,根据所述贴图内容、所述待渲染模型的顶点渲染索引信息、所述基础模型的顶点属性信息、所述待渲染模型的批次索引信息对所述待渲染模型进行渲染。
根据本申请实施例的第二方面,提供了一种图像渲染装置,包括:
第一获取模块,被配置为获取待渲染模型和所述待渲染模型对应的基础模型的顶点属性信息;
第一确定模块,被配置为确定所述待渲染模型的顶点坐标和所述待渲染模型的批次索引信息;
创建模块,被配置为创建所述待渲染模型的顶点索引信息;
第二确定模块,被配置为根据所述待渲染模型的顶点坐标、所述待渲染模型的批次索引信息和所述待渲染模型的顶点索引信息确定所述待渲染模型的顶点渲染索引信息;
渲染模块,被配置为获取所述基础模型的贴图内容,根据所述贴图内容、所述待渲染模型的顶点渲染索引信息、所述基础模型的顶点属性信息、所述待渲染模型的批次索引信息对所述待渲染模型进行渲染。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述图像渲染方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述图像渲染方法的步骤。
本申请实施例中,通过获取待渲染模型和所述待渲染模型对应的基础模型的顶点属性信息;确定所述待渲染模型的顶点坐标和所述待渲染模型的批次索引信息;创建所述待渲染模型的顶点索引信息;根据所述待渲染模型的顶点坐标、所述待渲染模型的批次索引信息和所述待渲染模型的顶点索引信息确定所述待渲染模型的顶点渲染索引信息;获取所述基础模型的贴图内容,根据所述贴图内容、所述待渲染模型的顶点渲染索引信息、所述基础模型的顶点属性信息、所述待渲染模型的批次索引信息对所述待渲染模型进行渲染。通过预先存储所述待渲染模型对应的基础模型的顶点属性信息,创建所述待渲染模型的顶点渲染索引信息,在渲染过程中,获取待渲染模型的顶点渲染索引信息,通过顶点渲染索引信息找到待渲染模型对应的基础模型的顶点的属性信息,在进行LOD模型切换时,只需再次加载LOD模型的顶点渲染索引信息,通过顶点渲染索引信息查找到顶点属性信息,再对LOD模型进行渲染,无需重新耗费内存,极大的提高了图像渲染效率,节省资源。
附图说明
图1是本申请实施例提供的计算设备的结构框图;
图2是本申请实施例提供的图像渲染方法的流程图;
图3是本申请实施例提供的确定待渲染模型的顶点坐标和批次索引信息的方法的示意图;
图4是本申请实施例提供的确定待渲染模型的顶点渲染索引信息的方法的示意图;
图5是本申请实施例提供的对待渲染模型进行渲染的方法的示意图;
图6是本申请实施例提供的图像渲染装置的结构示意图;
图7是本申请实施例提供的第二确定模块的结构示意图;
图8是本申请实施例提供的渲染模块的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
中央处理器(CPU):是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
图形处理器(GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上图像运算工作的微处理器。
DrawCall:就是CPU调用图形编程接口,来命令GPU进行渲染的操作。
多细节层次(LOD):指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
多边形网格(Mesh):是计算机图形学中用于为各种不规则物体建立模型的一种数据结构,为了在计算机中构建模型,计算机内部使用了大量的小面片组成了模型。这样的小面片的集合就被称作Mesh。
基础模型顶点数据块(PNGT):用于存储基础模型的顶点属性信息,基础模型的顶点属性信息包括:模型顶点的空间坐标(Pos)、模型顶点的法线方向(Normal)、模型顶点的切线方向(Tangant)、模型顶点的贴图坐标(TextureUV)等信息。
待渲染模型的顶点索引信息(IndexBuffer):用于存储待渲染模型的顶点的索引信息,包括:所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号、所述待渲染模型的顶点所属的部分的标号。
顶点渲染索引数据结构(MID):用于存储所述待渲染模型的顶点数据索引、贴图标号、所述待渲染模型的模型索引信息。顶点渲染索引数据结构可以采用16字节格式,存放顶点的相关索引数据。在本申请中,提供了一种图像渲染方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示图像渲染方法中的步骤。图2示出了根据本申请一实施例的图像渲染方法的流程图,包括步骤202至步骤210。
步骤202:获取待渲染模型和所述待渲染模型对应的基础模型的顶点属性信息。
渲染是电脑绘图中使用软件从模型生成图像的过程,模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理、照明等信息。等待被渲染的模型即为待渲染模型,模型渲染被广泛运用于游戏,家装等领域。
待渲染模型即为等待被渲染的模型,所述待渲染模型除了模型本身外,还包括模型对应的多层次细节(LOD)模型。
待渲染模型对应的基础模型位于世界坐标的原点,基础模型是待渲染模型的基础,待渲染模型根据所述基础模型进行渲染。
同时获取与待渲染模型对应的基础模型的顶点属性信息,基础模型的顶点属性信息包括基础模型自身顶点属性信息和基础模型对应的多层次细节模型的顶点属性信息,基础模型的顶点属性信息被存储于一个基础模型顶点数据块(PNGT)中,基础模型的顶点属性信息包括:模型顶点的空间坐标(Pos)、模型顶点的法线方向(Normal)、模型顶点的切线方向(Tangant)、模型顶点的贴图坐标(TextureUV)等信息。
在本申请实施例中,以船帆的模型为例,待渲染模型为船帆的模型本身和船帆的模型对应的LOD1模型和LOD2模型。同时获取待渲染模型对应的基础模型的顶点属性信息,假设船帆的模型的顶点数为12441个,LOD1模型的顶点数为10000个,LOD2模型的顶点数为6000个,则基础模型的顶点属性信息表示为PNGT[12441+10000+6000],每个模型只记录一次,基础模型的顶点属性信息的数量不受待渲染模型数量的影响。
步骤204:确定所述待渲染模型的顶点坐标和所述待渲染模型的批次索引信息。
其中,所述待渲染模型包括多个多边形网格(Mesh),当在图形处理器(GPU)中对所述待渲染模型进行LOD切换时,只需要保留所述待渲染模型中与当前LOD模型相关的多边形网格(Mesh)。
所述待渲染模型的顶点坐标用于表示该顶点在模型所在地图中的位置;所述待渲染模型的批次索引信息用于存储待渲染模型的索引信息和处理批次信息。
在本申请的实施例中,确定所述待渲染模型的批次索引信息就是确定所述待渲染模型中多边形网格的批次索引信息。
可选的,参见图3,步骤204可以通过下述步骤302至步骤310实现。
步骤302:接收预设参数,根据所述预设参数对所述待渲染模型分组,获得所述待渲染模型的至少一个待渲染部分。
接收预先设置的待渲染模型的分组参数,根据分组参数对所述待渲染模型进行分组,将有相同材质的部分分为一组,获取分组后的待渲染部分(Subset),如果待渲染模型只有一个分组,则待渲染模型为一个待渲染部分,如大山,河流等,如果待渲染模型有至少两个分组,则将待渲染模型按照材质的不同分为多个渲染部分,如人物,船帆等。
在本申请的实施例中,以船帆的模型为例,接收到美工人员传入的分组参数,将船帆的模型分为两个部分(Subset):桅杆和帆布。两者的材质不同,桅杆为木头,帆布为布料,因此待渲染模型的待渲染部分为桅杆和帆布。
步骤304:获取待渲染部分的多边形网格。
现实世界存在的实物都能以使用无数多边形网格(Mesh)来组成物体的方式建模,获取待渲染部分的多边形网格(Mesh)。在实际的渲染过程中,因为可能需要处理的数据量巨大,所以将待渲染模型按照预设的参数进行分簇,当簇数积累到预定参数时,进行一次中央处理器(CPU)传输给图形处理器(GPU)的计算。
在本申请提供的实施例中,由于当前GPU可并行处理的数据为一次处理256个任务,因此可以将待渲染模型的多边形网格(Mesh)进行编号,将编好号之后的多边形网格(Mesh)按照每256个多边形网格(Mesh)进行分簇,即每256个多边形网格(Mesh)为一个簇,每积累2048个簇就执行一次中央处理器(CPU)传输给图形处理器(GPU)的计算,将多边形网格(Mesh)中每个顶点的对应的多边形网格(Mesh)的编号信息记录到所述待渲染模型的批次索引信息中。
步骤306:根据多边形网格的位置确定所述待渲染模型的顶点坐标。
根据多边形网格(Mesh)的位置,可以确定所述待渲染模型的顶点坐标,所述待渲染模型的顶点坐标只是某一个多边形网格(Mesh)的顶点,不考虑共有顶点的情况。
在本申请的实施例中,以船帆模型为例,多边形网格(Mesh)以三角网格为例,船帆模型由16343个三角网格组成,船帆模型对应的LOD1模型由10672个三角网格组成,船帆模型对应的LOD2模型由8448个三角网格组成,因此待渲染模型的三角网格的个数就是船帆模型和船帆模型对应的LOD1模型和LOD2模型的三角网格的和,即35463个三角网格,按照每256个三角网格进行分簇,该模型共有139个簇。
本申请提供的实施例中,在图形处理器(GPU)中进行LOD模型切换,当由船帆模型切换至船帆模型对应的LOD1模型时,剔除所述船帆模型中与LOD1模型无关的三角网格,保留剩余有效的三角网格作为LOD1模型的三角网格。同样的,在切换至LOD2模型时,操作同理,在此就不再赘述。在图形处理器(GPU)中进行LOD切换的操作会提高图形处理器(GPU)的使用率,降低中央处理器(CPU)的负载。
步骤308:获取多边形网格在所述待渲染模型中的索引信息、多边形网格在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引。
获取多边形网格(Mesh)在所述待渲染模型中的索引信息、多边形网格(Mesh)在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引和多边形网格(Mesh)的编号信息。多边形网格(Mesh)在所述待渲染模型中的索引信息为实际进行渲染的模型,除去待渲染模型本身外还包括待渲染模型对应的LOD模型;多边形网格(Mesh)在所述待渲染模型中的偏移索引为多边形网格(Mesh)在所述待渲染模型中的偏移索引信息;所述待渲染模型的模型索引为绘制模型的索引信息。
步骤310:根据多边形网格在所述待渲染模型中的索引信息、多边形网格在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引,确定所述待渲染模型中多边形网格的批次索引信息。
将获取的多边形网格(Mesh)在所述待渲染模型中的索引信息、多边形网格(Mesh)在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引和多边形网格(Mesh)的编号信息作为参数组成待渲染模型中多边形网格的批次索引信息。
步骤206:创建所述待渲染模型的顶点索引信息。
待渲染模型的顶点索引信息(IndexBuffer)会根据实际待渲染模型的数量进行扩展,待渲染模型的顶点索引信息(IndexBuffer)用于存储待渲染模型的顶点的索引信息,根据索引信息可以查找到对应的顶点的属性信息,存储顶点的索引信息占用的存储空间要远小于存储顶点的属性信息占用的存储空间。
在本申请提供的实施例中,以船帆的模型为例,船帆模型的顶点索引数量为49029,船帆模型对应的LOD1模型的顶点索引数量为32016,船帆模型对应的LOD2模型的顶点索引数量为25344,那绘制一个模型的顶点索引信息数量就应该为:49029+32016+25344=106389个,当需要绘制10个模型时,对应的数量为:49029*10+32016*10+25344*10=1063890个,模型的顶点索引信息的存储相比于模型的顶点属性信息的存储会有很大程度的减少,可以节约存储空间。
可选的,步骤206包括S2061至S2062。
S2061:获取所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号。
获取所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号、所述待渲染模型的顶点所属部分的标号。
在一个3D模型中一个点可能要同时处于多个多边形网格(Mesh)上,如果直接把顶点数据放进缓冲区,那么重复的顶点就会占用多余的内存。将顶点的索引存入缓存区,通过顶点的索引查找顶点数据,存储量会有很大程度的减少,可以节约存储空间。
待渲染模型的顶点的相对偏移是指待渲染模型中的顶点与基础模型中的顶点的位置的相对偏移信息。
所述基础模型的顶点属性信息中顶点的读取起始位置记录的是基础模型中独立的多边形网格(Mesh)的顶点的偏移信息,用所述偏移信息可以索引到基础模型顶点数据块(PNGT)中的数据。
所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置是在创建顶点渲染索引数据结构(MID)时,所述待渲染模型的顶点渲染索引信息的写入位置。
所述基础模型的顶点对应的贴图标号是指所述多边形网格(Mesh)贴图的标号,可以在确定了顶点索引时,可以直接获取对应的贴图。
所述待渲染模型的顶点所属部分的标号记录所述待渲染模型的顶点所属的待渲染部分。
S2062:根据所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号,创建所述待渲染模型的顶点索引信息(IndexBuffer)。
将获取的所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号、所述待渲染模型的顶点所属部分的标号作为所述待渲染模型的顶点索引信息的参数,存储于所述待渲染模型的顶点索引信息(IndexBuffer)中。
步骤208:根据所述待渲染模型的顶点坐标、所述待渲染模型的批次索引信息和所述待渲染模型的顶点索引信息确定所述待渲染模型的顶点渲染索引信息。
可选的,参见图4,步骤208可以通过下述步骤402至步骤410实现。
步骤402:根据所述待渲染模型的顶点坐标和多边形网格在所述待渲染模型中的偏移索引,确定所述待渲染模型的顶点索引起始位置。
在本申请提供的实施例中,以船帆模型为例,根据船帆模型的某一个顶点的坐标和存储于多边形网格的批次索引信息中的三角网格的偏移索引信息,确定所述待渲染模型的顶点的位置。
步骤404:根据所述待渲染模型的顶点索引起始位置、所述待渲染模型的顶点的相对偏移和所述基础模型的顶点属性信息中顶点的读取起始位置确定所述待渲染模型的顶点数据索引。
根据上述得到的待渲染模型的顶点位置、存储于所述待渲染模型的顶点索引信息(IndexBuffer)中的待渲染模型的顶点的相对偏移、存储于基础模型的顶点属性信息中顶点的读取起始位置确定所述待渲染模型的顶点数据索引,所述待渲染模型的顶点数据索引可以在图像渲染阶段在基础模型的顶点属性信息中检索顶点属性信息。
在本申请提供的另一实施例中,在步骤404之后,还包括:根据所述待渲染模型的顶点索引起始位置、所述待渲染模型的顶点的相对偏移所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置确定所述待渲染模型的顶点渲染索引信息的写入索引位置。
步骤406:获取所述待渲染模型的顶点索引信息中的贴图标号。
获取所述待渲染模型的顶点索引信息(IndexBuffer)中的贴图标号,贴图标号用于最终的图像渲染时可以直接获取对应的贴图内容。
步骤408:获取所述待渲染模型中多边形网格的批次索引信息中的所述待渲染模型的模型索引。
所述待渲染模型中多边形网格的批次索引信息中的所述待渲染模型的模型索引为绘制模型索引,根据此索引可以获取待渲染模型的世界空间矩阵信息,其中,世界矩阵信息用于记录模型的旋转缩放位置信息。世界矩阵信息用4*4的矩阵表示,每一个待渲染模型都对应有一个相应的世界矩阵信息。
步骤410:根据所述待渲染模型的顶点数据索引、贴图标号、所述待渲染模型的模型索引确定所述待渲染模型的顶点渲染索引信息。
创建顶点渲染索引数据结构(MID),该结构用于存储所述待渲染模型的顶点数据索引、贴图标号、所述待渲染模型的模型索引信息。顶点渲染索引数据结构可以采用16字节格式,存放顶点的相关索引数据。
步骤210:获取所述基础模型的贴图内容,根据所述贴图内容、所述待渲染模型的顶点渲染索引信息、所述基础模型的顶点属性信息、所述待渲染模型的批次索引信息对所述待渲染模型进行渲染。
可选的,参见图5,步骤210可以通过下述步骤502至步骤512实现。
步骤502:根据所述待渲染模型的批次索引信息中的所述待渲染模型的模型索引获取世界矩阵信息。
世界矩阵信息用于记录模型的旋转缩放位置信息。世界矩阵信息用4*4的矩阵表示,每一个待渲染模型都对应有一个相应的世界矩阵信息。
步骤504:根据所述待渲染模型的顶点坐标和所述世界矩阵信息确定所述待渲染模型顶点的世界坐标信息。
在本申请实施例中,所述待渲染模型的某一个顶点的坐标记做(x,y,z,W),其中x,y,z,为待渲染模型的顶点所处的坐标,W为一个空参数,为了便于计算,将其赋值为1,所述待渲染模型对应的世界矩阵信息为待渲染模型的某一个顶点的世界坐标信息可以通过公式(1)获得。
因此(x*Sx,y*Sy,z*Sz,1)即为待渲染模型的某一个顶点的世界坐标信息。
步骤506:根据多边形网格在所述待渲染模型中的索引信息确定所述待渲染模型的顶点索引信息。
对所述待渲染模型进行渲染时,根据多边形网格(Mesh)在所述待渲染模型中的索引信息可以确定所述待渲染模型的顶点索引信息(IndexBuffer)。
可选的,对多边形网格(Mesh)在所述待渲染模型中的索引信息进行剔除,获取所述待渲染模型的筛选多边形网格索引,根据所述待渲染模型的筛选多边形网格索引确定所述待渲染模型的顶点索引信息(IndexBuffer)。
在实际的渲染过程中,在不同的观察角度下模型可被观察到的部分不尽相同,但不会被观察到的面仍然被渲染是没有意义的,还耗费了渲染时间和资源。因此可以对多边形网格(Mesh)在所述待渲染模型中的索引信息进行剔除,保留有效的筛选多边形网格索引,剔除在实际使用过程中没有用到的多边形网格索引,根据保留的有效的筛选多边形网格索引确定所述待渲染模型的顶点索引信息(IndexBuffer)。
可选的,用背面剔除方法和/或视锥剔除方法对所述多边形网格(Mesh)在所述待渲染模型中的索引信息进行剔除。
在对多边形网格(Mesh)在所述待渲染模型中的索引信息进行剔除时,可以利用背面剔除方法和/或锥剔除方法进行剔除,此类方法已有很成熟的技术,在此就不再赘述。
步骤508:根据所述待渲染模型的顶点数据索引和所述基础模型的顶点属性信息获取所述待渲染模型的顶点属性信息。
获取顶点渲染索引数据结构中的所述待渲染模型的顶点数据索引信息,根据所述待渲染模型的顶点数据索引信息和技术模型的顶点属性信息,获取所述待渲染模型的顶点的属性信息。
步骤510:根据所述待渲染模型的顶点渲染索引信息中的贴图标号获取所述待渲染模型的顶点对应的贴图内容。
步骤512:根据所述待渲染模型顶点的世界坐标信息、所述待渲染模型的顶点索引信息、所述待渲染模型的顶点属性信息、贴图内容对所述待渲染模型进行渲染。
可选的,根据所述待渲染模型顶点的世界坐标信息、所述待渲染模型的顶点索引信息(IndexBuffer)、所述待渲染模型的顶点属性信息、贴图内容对所述待渲染模型的多边形网格(Mesh)进行渲染。
根据所述待渲染模型顶点的世界坐标信息,可以确定所述待渲染模型在世界地图中的坐标位置;通过所述待渲染模型在世界地图中的坐标位置和所述待渲染模型的顶点索引信息(IndexBuffer)找到所述待渲染模型等待被渲染的多边形网格(Mesh)的顶点位置,再通过所述待渲染模型的顶点属性信息和待渲染模型的顶点对应的贴图内容对所述待渲染模型的多边形网格(Mesh)进行渲染。
本申请提供的图像渲染方法,通过创建顶点渲染索引数据结构(MID),将待渲染模型和待渲染模型对应LOD模型涉及的多边形网格(Mesh)的顶点数据及对应的索引位置存储于顶点渲染索引数据结构(MID)中,实现了在加载模型过程中,一次同时处理涉及的待渲染模型和待渲染模型对应的LOD模型中的多边形网格索引,再通过索引找到对应顶点的属性信息,在进行LOD模型切换时,只需切换LOD模型的索引信息,根据索引信息找到需要的顶点属性信息,无需重新耗费内存,极大的提高了图像渲染效率,节省资源。
与上述方法实施例相对应,本申请还提供了图像渲染装置实施例,图6示出了本申请一个实施例的图像渲染装置的结构示意图。如图6所示,该装置包括:
第一获取模块601,被配置为获取待渲染模型和所述待渲染模型对应的基础模型的顶点属性信息。
第一确定模块602,被配置为确定所述待渲染模型的顶点坐标和所述待渲染模型的批次索引信息。
创建模块603,被配置为创建所述待渲染模型的顶点索引信息。
第二确定模块604,被配置为根据所述待渲染模型的顶点坐标、所述待渲染模型的批次索引信息和所述待渲染模型的顶点索引信息确定所述待渲染模型的顶点渲染索引信息。
渲染模块605,被配置为获取所述基础模型的贴图内容,根据所述贴图内容、所述待渲染模型的顶点渲染索引信息、所述基础模型的顶点属性信息、所述待渲染模型的批次索引信息对所述待渲染模型进行渲染。
可选的,所述第一确定模块602,进一步被配置为确定所述待渲染模型的顶点坐标和所述待渲染模型中多边形网格的批次索引信息。
可选的,所述第一确定模块602,进一步被配置为接收预设参数,根据所述预设参数对所述待渲染模型分组,获得所述待渲染模型的至少一个待渲染部分;获取待渲染部分的多边形网格;根据多边形网格的位置确定所述待渲染模型的顶点坐标;获取多边形网格在所述待渲染模型中的索引信息、多边形网格在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引;根据多边形网格在所述待渲染模型中的索引信息、多边形网格在所述待渲染模型中的偏移索引、所述待渲染模型的模型索引,确定所述待渲染模型中多边形网格的批次索引信息。
可选的,所述创建模块603,进一步被配置为获取所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号;根据所述待渲染模型中顶点的索引、所述待渲染模型的顶点的相对偏移、所述基础模型的顶点属性信息中顶点的读取起始位置、所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置、所述基础模型的顶点对应的贴图标号,创建所述待渲染模型的顶点索引信息。
可选的,参见图7,所述第二确定模块604,包括:
第一确定子模块6041,被配置为根据所述待渲染模型的顶点坐标和多边形网格在所述待渲染模型中的偏移索引,确定所述待渲染模型的顶点索引起始位置。
第二确定子模块6042,被配置为根据所述待渲染模型的顶点索引起始位置、所述待渲染模型的顶点的相对偏移和所述基础模型的顶点属性信息中顶点的读取起始位置确定所述待渲染模型的顶点数据索引。
第一获取子模块6043,被配置为获取所述待渲染模型的顶点索引信息中的贴图标号。
第二获取子模块6044,被配置为获取所述待渲染模型中多边形网格的批次索引信息中的所述待渲染模型的模型索引。
第三确定子模块6045,被配置为根据所述待渲染模型的顶点数据索引、贴图标号、所述待渲染模型的模型索引确定所述待渲染模型的顶点渲染索引信息。
可选的,所述第二确定模块,还包括:
第四确定子模块,被配置为根据所述待渲染模型的顶点索引起始位置、所述待渲染模型的顶点的相对偏移和所述待渲染模型的顶点渲染索引信息中顶点写入的起始位置确定所述待渲染模型的顶点渲染索引信息的写入索引位置。
可选的,参见图8,所述渲染模块605,包括:
第三获取子模块6051,被配置为根据所述待渲染模型的批次索引信息中的所述待渲染模型的模型索引获取世界矩阵信息和渲染批次信息。
第五确定子模块6052,被配置为根据所述待渲染模型的顶点坐标和所述世界矩阵信息确定所述待渲染模型顶点的世界坐标信息。
第六确定子模块6053,被配置为根据多边形网格在所述待渲染模型中的索引信息确定所述待渲染模型的顶点索引信息。
第四获取子模块6054,被配置为根据所述待渲染模型的顶点数据索引和所述基础模型的顶点属性信息获取所述待渲染模型的顶点属性信息。
第五获取子模块6055,被配置为根据所述待渲染模型的顶点渲染索引信息中的贴图标号获取所述待渲染模型的顶点对应的贴图内容。
渲染子模块6056,被配置为根据所述待渲染模型顶点的世界坐标信息、所述待渲染模型的顶点索引信息、所述待渲染模型的顶点属性信息、贴图内容和所述渲染批次信息对所述待渲染模型进行渲染。
可选的,所述第六确定子模块6053,进一步被配置为对多边形网格在所述待渲染模型中的索引信息进行剔除,获取所述待渲染模型的筛选多边形网格索引;根据所述待渲染模型的筛选多边形网格索引确定所述待渲染模型的顶点索引信息。
可选的,所述第六确定子模块6053,进一步被配置为用背面剔除方法和/或视锥剔除方法对所述多边形网格在所述待渲染模型中的索引信息进行剔除。
可选的,所述渲染子模块6056,进一步被配置为根据所述待渲染模型顶点的世界坐标信息、所述待渲染模型的顶点索引信息、所述待渲染模型的顶点属性信息、贴图内容和所述渲染批次信息对所述待渲染模型的多边形网格进行渲染。
本申请提供的图像渲染装置,通过创建顶点渲染索引数据结构(MID),将待渲染模型和待渲染模型对应LOD模型涉及的多边形网格的顶点数据及对应的索引位置存储于顶点渲染索引数据结构(MID)中,实现了在加载模型过程中,一次同时处理涉及的待渲染模型和待渲染模型对应的LOD模型中的多边形网格索引,再通过索引找到对应顶点的属性信息,在进行LOD模型切换时,只需切换LOD模型的索引信息,根据索引信息找到需要的顶点属性信息,无需重新耗费内存,极大的提高了图像渲染效率,节省资源。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的图像渲染方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述图像渲染方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的图像渲染方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述图像渲染方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。