2011-02-02 58 views
0

我正在为Android设计一个简单的建模程序概念,而且我遇到了一些问题。存储OpenGL ES多边形和顶点信息

基本上,我保留Java矢量中的顶点和多边形信息(我需要此信息来操纵它们,而不是绘制它们)。

对于绘图我使用VBO的。

每个多边形当前都有一个由它构成的顶点列表。这意味着当填充indice数组时,我需要找出每个顶点有哪些索引,并且如果创建或删除顶点,这些索引可以更改。

我使用Java Vector的indexOf(Vertex v)方法对它进行了快速编码,但显然这很慢,我想知道管理这个的最好方法是什么,以便它不会花费太多处理?

预先感谢您。

回答

0

首先,快速修复可以提高性能:使用ArrayList代替Vector - 您可能不需要同步开销。

主要问题是您正在重新计算每个顶点数组更改的整个索引数组。目前,您需要这样做,因为如果您删除顶点,则列表中删除的顶点之后的每个顶点的索引都会更改。因此,关键是尽量减少对顶点索引的更改,使您能够轻松维护索引数组,而不是完全重新计算索引数组。 所以:而不是使用list.remove()删除一个顶点,替换为列表末尾的顶点。这样只有一个索引发生了变化,所以它可以非常快地遍历索引数组并替换新值。

+0

非常感谢你,这非常有帮助。 – Joru 2011-02-03 14:17:38