顶点属性存储的方法及装置与流程

文档序号:12127461阅读:240来源:国知局
顶点属性存储的方法及装置与流程

本发明实施例涉及存储技术,尤其涉及一种顶点属性存储的方法及装置。



背景技术:

在计算机图形学中,图形由多个顶点组成,每个顶点具有不同的属性,例如顶点位置、顶点颜色以及顶点的法向量等。应用程序通过调用开放图形库(Open Graphics Library,简称OpenGL)的显示列表中的函数来组织顶点的属性,并将顶点的属性发送给图形处理器(Graphics Processing Unit,简称GPU),由GPU根据顶点的属性进行渲染并显示该图形。

现有技术中,应用程序通过调用OpenGL的显示列表中的函数来组织顶点的属性,通常采用离散存储的方式。在该方式中,先分配存储空间,然后依次将该顶点的属性写入该存储空间。在具体处理过程中,将一个顶点的所有属性写入存储空间之后,判断存储空间的剩余空间是否可以容纳下一个顶点的所有属性,若是,则继续存储该下一个顶点的所有属性,若否,则再分配存储空间,直至所有顶点的所有属性都存储至存储空间。

然而,现有技术中对于各属性而言,各属性在存储空间中的存储是离散的,导致图形处理器根据顶点的属性,进行渲染并显示该图形时处理性能不佳。



技术实现要素:

本发明实施例提供一种顶点属性存储的方法及装置,以使顶点的属性可连续存储至存储空间,使得图形处理器根据顶点的属性进行渲染并显示该图形时,性能提高。

第一方面,本发明提供一种顶点属性存储的方法,包括:

分配第一存储空间,根据所述第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定所述第一存储空 间能够容纳的所述第一待存储顶点的顶点数量;其中,所述第一待存储顶点中包括多个属性相同的顶点;

根据所述第一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储所述第一待存储顶点的各属性的偏移量,根据所述各属性的偏移量,在所述第一存储空间中,对所述第一待存储顶点中的所有顶点的相同属性进行连续存储;

确定所述第一待存储顶点中的所有顶点的属性存储到所述第一存储空间后,判断所述第一存储空间的剩余存储容量是否大于预设值,若是,根据所述第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将所述第一存储空间中存储的所述第一待存储顶点的属性移动至所述第二存储空间,以使所述第一存储空间存储第二待存储顶点的属性。

第二方面,本发明提供一种顶点属性存储的装置,包括:

分配模块,用于分配第一存储空间,根据所述第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定所述第一存储空间能够容纳的所述第一待存储顶点的顶点数量;其中,所述第一待存储顶点中包括多个属性相同的顶点;

第一存储模块,用于根据所述第一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储所述第一待存储顶点的各属性的偏移量,根据各所述属性的偏移量,在所述第一存储空间中,对所述第一待存储顶点中的所有顶点的相同属性进行连续存储;

处理模块,用于确定所述第一待存储顶点中的所有顶点的属性存储到所述第一存储空间后,判断所述第一存储空间的剩余存储容量是否大于预设值,若是,根据所述第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将所述第一存储空间中存储的所述第一待存储顶点的属性移动至所述第二存储空间,以使所述第一存储空间存储第二待存储顶点的属性。

本实施例提供的顶点属性存储的方法及装置,通过分配第一存储空间,根据第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定第一存储空间能够容纳的第一待存储顶点的顶点数量;其中,第一待存储顶点中包括多个属性相同的顶点;根据第 一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储第一待存储顶点的各属性的偏移量,根据各属性的偏移量,在第一存储空间中,对第一待存储顶点中的所有顶点的相同属性进行连续存储;确定第一待存储顶点中的所有顶点的属性存储到第一存储空间后,判断第一存储空间的剩余存储容量是否大于预设值,若是,根据第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将第一存储空间中存储的第一待存储顶点的属性移动至第二存储空间,以使第一存储空间存储第二待存储顶点的属性,不仅使得顶点属性可以连续存储,提高图形处理器的处理性能,还充分利用了存储空间,提高了空间利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明顶点属性存储的方法实施例一的流程图;

图2为本发明顶点属性存储的方法实施例二的流程图;

图3为本发明顶点属性存储的装置实施例一的结构示意图;

图4为本发明顶点属性存储的装置实施例二的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在实际应用场景中,当应用程序需要绘图时,应用程序需要准备待绘制图形的所有的顶点的属性,由开放图形库(Open Graphics Library,简称OpenGL)通过显示列表组织属性,然后发送给图形处理器,由图形处理器根据顶点的属性进行渲染并图形。其中,OpenGL相当于一个中转站,因此, 需要为OpenGL准备存储空间来缓存顶点的属性。

本实施例的存储方法具体可以应用到OpenGL技术中,本领域技术人员可以理解,本实施例的存储方法不仅可以应用到OpenGL技术中,还可以应用到其它方面,本实施例此处不再赘述。下面对本实施例提供的顶点属性存储的方法进行详细说明。

图1为本发明顶点属性存储的方法实施例一的流程图。本实施例提供的方法可由存储装置实现,该存储装置可由任意的软件和/或硬件实现。该存储装置还可以嵌入到终端设备中,以使终端设备实现本实施例的顶点属性存储的方法。如图1所示,本实施例的方法包括:

步骤101、分配第一存储空间,根据第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定第一存储空间能够容纳的第一待存储顶点的顶点数量;其中,第一待存储顶点中包括多个属性相同的顶点;

步骤102、根据第一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储第一待存储顶点的各属性的偏移量,根据各属性的偏移量,在第一存储空间中,对第一待存储顶点中的所有顶点的相同属性进行连续存储;

步骤103、确定第一待存储顶点中的所有顶点的属性存储到第一存储空间后,判断第一存储空间的剩余存储容量是否大于预设值,若是,根据第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将第一存储空间中存储的第一待存储顶点的属性移动至第二存储空间,以使第一存储空间存储第二待存储顶点的属性。

在具体实现过程中,在步骤101中,先分配第一存储空间,确定第一存储空间能够容纳的顶点数量。在本实施例中,第一存储空间用于存储第一待存储顶点的属性。因此,在具体实现过程中,可以根据第一存储空间的存储容量,第一待存储顶点中任一顶点每个属性所占的存储空间的大小,确定第一存储空间能够容纳的第一待存储顶点的顶点数量。

具体地,待绘制图形包括多个顶点,该多个顶点组成了第一待存储顶点,第一待存储顶点包括多个属性相同的顶点。第一待存储顶点的属性包括:顶点位置、顶点颜色、顶点法向量、顶点大小、顶点漫反射色等。第一待存储 顶点中的所有顶点可以为一幅计算机图形的所有顶点,也可以为一幅计算机图形的部分顶点,本实施例此处不做具体限定。

在获取第一存储空间能够容纳的顶点数量时,由于第一待存储顶点中的顶点属性均相同,因此,可获取第一待存储顶点中任一顶点的每个属性所占的存储空间的大小;根据所述任一顶点的每个属性所占的存储空间的大小,得到任一顶点的所有属性占用的存储空间;根据第一存储空间的存储容量、以及任一顶点的所有属性占用的存储空间,确定第一存储空间能够容纳的顶点数量。本领域技术人员可以理解,本实施例确定的第一存储空间能够容纳的顶点数量,是指第一存储空间自身的容量理论上能够容纳的第一待存储顶点的数量。

例如,获取应用程序准备的待绘制图形的多个属性对应的属性的数量为5,根据各属性所占的空间的大小,得到每个顶点的所有属性占用的存储空间,即5个属性占用的存储空间之和。第一存储空间的存储容量与每个顶点的所有属性占用的存储空间的比值,即为第一存储空间可以容纳的第一待存储顶点的顶点数量。

在步骤102中,根据第一存储空间理论上可以容纳的第一待存储顶点的顶点数量,确定用于存储第一待存储顶点的各属性的偏移量。根据各属性的偏移量,至所述第一存储空间中,对第一待存储顶点中的所有顶点的相同属性进行连续存储。具体地,在本实施例中,属性的数量为5时,将第一存储空间分为5个连续的空间,根据第一个属性的偏移量,第一个连续空间用于存储所有顶点的第一个属性,根据第二个属性的偏移量,第二个连续空间用于存储所有顶点的第二个属性,依次类推。

在步骤103中,在确定第一待存储顶点中的所有顶点的属性存储到第一存储空间后,判断第一存储空间的剩余存储容量是否大于预设值。该预设值可根据经验参数确定,例如,该预设值可以为第一存储空间的10%或5%的空间的大小。

本领域技术人员可以理解,第一待存储顶点中的所有顶点的属性能够存储到第一存储空间中,则说明第一存储空间理论上可以容纳的第一待存储顶点的顶点数量,大于第一待存储顶点中实际的顶点数量。

在判断第一存储空间的剩余存储容量小于预设值时,则确定第一存储空 间的存储容量达到饱和状态,流程结束。

在判断第一存储空间的剩余存储容量大于预设值时,则表示第一存储空间没有达到饱和状态,空间利用率低。此时,根据第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将第一存储空间中存储的所有顶点的属性移动至第二存储空间,以使第一存储空间存储第二待存储顶点。在本实施例中,为了充分利用存储空间,第二存储空间的存储容量与第一待存储顶点中的所有顶点的属性所占的空间大小相同。

通过本实施例的存储方法,在实现顶点属性存储,性能提高的前提下,还保证了存储空间的充分利用,特别是在第一待存储顶点中的属性与第二待存储顶点中的属性不同,第一待存储顶点中的属性没有充分利用第一存储空间时,将第一存储空间中存储的所有顶点的属性存储至第二存储空间,使得第二待存储顶点中的属性可以存储至第一存储空间中,避免了第一存储空间的空间浪费,提高了空间利用率。

本实施例提供的顶点属性存储的方法,通过分配第一存储空间,根据第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定第一存储空间能够容纳的第一待存储顶点的顶点数量;其中,第一待存储顶点中包括多个属性相同的顶点;根据第一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储第一待存储顶点的各属性的偏移量,根据各属性的偏移量,在第一存储空间中,对第一待存储顶点中的所有顶点的相同属性进行连续存储;确定第一待存储顶点中的所有顶点的属性存储到第一存储空间后,判断第一存储空间的剩余存储容量是否大于预设值,若是,根据第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将第一存储空间中存储的第一待存储顶点的属性移动至第二存储空间,以使第一存储空间存储第二待存储顶点的属性,不仅使得顶点属性可以连续存储,提高图形处理器的处理性能,还充分利用了存储空间,提高了空间利用率。

下面采用具体的实施例,来详细说明步骤102中,在第一存储空间中,对顶点属性进行连续存储的过程进行详细说明。

在具体实现过程中,根据第一存储空间能够容纳的顶点数量,确定用于存储第一待存储顶点的第M个属性的偏移量为(M-1)*N,1≤M≤第一 待存储顶点的属性的数量,N为第一存储空间能够容纳的第一待存储顶点的顶点数量;

根据各属性的偏移量,将第一待存储顶点中的第一个顶点的第一个属性存储至第一存储空间中的[1,N]存储空间中的第一个位置,将第一待存储顶点中的第一个顶点的第二个属性存储至第一存储空间中的[N+1,2N]存储空间中的第一个位置,将第一待存储顶点中的第一个顶点的第M个属性存储至第一存储空间中的[(M-1)*N+1,MN]存储空间中的第一个位置,直至将第一待存储顶点中的第一个顶点的所有属性存储至第一存储空间,依次处理每个顶点,直至将第一待存储顶点中的所有顶点的属性存储至第一存储空间或第一存储空间存满。

本领域技术人员可以理解,本实施例中的[1,N]存储空间,并不代表存储空间的存储容量,其中,1代表[1,N]存储空间的第一个位置,2代表[1,N]存储空间的第二个位置,N代表[1,N]存储空间的第N个位置,而具体的位置的存储容量,可根据各属性所占的存储空间确定。例如,[1,N]存储空间用于存储第一个属性、[N+1,2N]存储空间用于存储第二个属性,[1,N]存储空间的容量由第一个属性所占的存储空间确定,[N+1,2N]存储空间存储空间的容量由第二个属性所占的存储空间确定。因此,[1,N]存储空间的存储容量与[N+1,2N]存储空间的存储容量可能相同,也可能不同。

以一个具体的例子为例,第一存储空间可存储8个顶点,第一待存储顶点中包括5个顶点,该5个顶点的属性相同,一共是3个属性,则[1,8]存储空间用于存储第一个属性,[9,16]用于存储第2个属性,[17,24]存储空间用于存储第三个属性。第一个属性的偏移量为0,第二个属性的偏移量为8,第三属性的偏移量为16。

在具体存储过程中,将第一个顶点的第一个属性存储至[1,8]存储空间中的第一个位置,将第一个顶点的第二个属性存储至[9,18]存储空间中的第一个位置,将第一个顶点的第三个属性存储至[17,24]存储空间中的第一个位置,将第二个顶点的第一个属性存储至[1,8]存储空间中的第二个位置,将第二个顶点的第二个属性存储至[9,18]存储空间中的第二个位置,将第二个顶点的第三个属性存储至[17,24]存储空间中的第二个位置, 依次类推,直至第五个顶点的第三个属性存储至[17,24]存储空间的第三个位置。

由于第一待存储顶点中的顶点数量5小于第一存储空间可存储的顶点数8,所以,在将第一待存储顶点中的顶点的所有属性存储至第一存储空间之后,判断第一存储空间的剩余存储容量大于10%,则将第一存储空间中存储的所有顶点的属性移动至第二存储空间,释放第一存储空间中存储的属性,以达到提高空间利用率。

进一步地,在上述的各实施例中,确定第一存储空间存满,第一待存储顶点中存在未被第一存储空间容纳的顶点后,分配第三存储空间,在第三存储空间中,对未被第一存储空间容纳的第一待存储顶点的相同属性进行连续存储。

在具体实现过程中,在确定第一存储空间存满,第一待存储顶点中存在未被第一存储空间容纳的顶点后,此时说明第一存储空间理论上能够容纳的第一待存储顶点的顶点数量小于第一待存储顶点的实际顶点数量,说明第一存储空间不足以存储所有的第一待存储顶点中的顶点的属性,此时,分配第三存储空间,在第三存储空间中,对未被第一存储空间容纳的第一待存储顶点的相同属性进行连续存储。本领域技术人员可以理解,第三存储空间存储该部分第一待存储顶点的顶点属性的存储方式,与第一存储空间存储顶点属性的存储方式相同,本实施例此处不再赘述。

图2为本发明顶点属性存储的方法实施例二的流程图。本实施例在上述实施例的基础上,对存储方法的具体实现过程进行说明。如图2所示,本实施例提供的存储方法,包括:

步骤201、分配第一存储空间;

步骤202、获取第一待存储顶点的各属性所占的空间的大小;

具体地,获取待存储的第一待存储顶点的多个属性对应的属性的数量以及各属性所占的空间的大小,得到任一顶点的所有属性占用的存储空间。

步骤203、确定第一存储空间能够容纳的第一待存储顶点的顶点数量;

具体地,根据第一存储空间的存储容量、以及任一顶点的所有属性占用的存储空间,确定所述第一存储空间能够容纳的顶点数量。

步骤204、确定用于存储各属性的偏移量;

根据第一存储空间能够容纳的第一待存储顶点的顶点数量,确定第一待存储顶点的各属性的偏移量。

步骤205、判断第一待存储顶点的顶点属性是否全部存储至第一存储空间,若是,执行步骤209,若否,执行步骤206;

步骤206、将未存储至第一存储空间的第一待存储顶点的属性存储至第一存储空间中;

具体的存储方式,可参见上述实施例,本实施例此处不再赘述。

步骤207、判断第一存储空间是否存满,若是,执行步骤208,若否,返回执行步骤205;

步骤208、分配第三存储空间;

步骤209、判断第一存储空间的剩余存储容量是否大于预设值,若是,执行步骤210,若否,流程结束;

步骤210、分配第二存储空间;

步骤211、将第一存储空间中存储的所有顶点的属性移动至第二存储空间;

步骤212、释放第一存储空间;

步骤213、流程结束。

本实施例不仅使得顶点属性可以连续存储,从而提高图形处理器的处理性能,还充分利用了存储空间,提高了空间利用率。

图3为本发明顶点属性存储的装置实施例一的结构示意图。本实施例提供的存储装置,包括:

分配模块301,用于分配第一存储空间,根据所述第一存储空间的存储容量、第一待存储顶点中任一顶点的每个属性所占的存储空间的大小,确定所述第一存储空间能够容纳的所述第一待存储顶点的顶点数量;其中,所述第一待存储顶点中包括多个属性相同的顶点;

第一存储模块302,用于根据所述第一存储空间能够容纳的第一待存储顶点的顶点数量,确定用于存储所述第一待存储顶点的各属性的偏移量,根据各所述属性的偏移量,在所述第一存储空间中,对所述第一待存储顶点中的所有顶点的相同属性进行连续存储;

处理模块303,用于确定所述第一待存储顶点中的所有顶点的属性存 储到所述第一存储空间后,判断所述第一存储空间的剩余存储容量是否大于预设值,若是,根据所述第一待存储顶点中的所有顶点的属性所占的空间,分配第二存储空间,将所述第一存储空间中存储的所述第一待存储顶点的属性移动至所述第二存储空间,以使所述第一存储空间存储第二待存储顶点的属性。

本实施例提供的存储装置,可实现本发明提供的存储方法的实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

图4为本发明顶点属性存储的装置实施例二的结构示意图,本实施例在图3实施例的基础上实现,具体如下:

所述分配模块301具体用于:

获取所述第一待存储顶点中任一顶点的每个属性所占的存储空间的大小;

根据所述任一顶点的每个属性所占的存储空间的大小,得到所述任一顶点的所有属性占用的存储空间;

根据所述第一存储空间的存储容量、以及所述任一顶点的所有属性占用的存储空间,确定所述第一存储空间能够容纳的第一待存储顶点的顶点数量。

可选地,所述第一存储模块302具体用于:

根据所述第一存储空间能够容纳的顶点数量,确定用于存储所述第一待存储顶点的第M个属性的偏移量为(M-1)*N,所述1≤M≤第一待存储顶点的属性的数量,所述N为所述第一存储空间能够容纳的所述第一待存储顶点的顶点数量;

根据各所述属性的偏移量,将所述第一待存储顶点中的第一个顶点的第一个属性存储至所述第一存储空间中的[1,N]存储空间中的第一个位置,将所述第一待存储顶点中的第一个顶点的第二个属性存储至所述第一存储空间中的[N+1,2N]存储空间中的第一个位置,将所述第一待存储顶点中的第一个顶点的第M个属性存储至所述第一存储空间中的[(M-1)*N+1,MN]存储空间中的第一个位置,直至将所述第一待存储顶点中的第一个顶点的所有属性存储至所述第一存储空间,依次处理每个顶点,直至将所述第一待存储顶点中的所有顶点的属性存储至第一存储空间或所 述第一存储空间存满。

可选地,还包括:

第二存储模块304,用于确定所述第一存储空间存满,所述第一待存储顶点中存在未被所述第一存储空间容纳的顶点后,分配第三存储空间,在所述第三存储空间中,对未被所述第一存储空间容纳的所述第一待存储顶点的相同属性进行连续存储。

可选地,所述处理模块303还用于:确定所述第一待存储顶点中的所有顶点的属性存储到所述第一存储空间后,判断所述第一存储空间的剩余存储容量是否大于预设值,若否,则确定所述第一存储空间的存储容量达到饱和状态。

本实施例提供的存储装置,可实现本发明提供的存储方法的实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1