我正在为Android制作一个简单的建模程序概念,我遇到了一些问题。
基本上,我在Java Vectors中保留了Vertex和Polygon信息(我需要这些信息来操作它们,而不是绘制它们)。
对于绘图我正在使用VBO。
每个多边形当前都有一个由它组成的顶点列表。这意味着当填充indice数组时,我需要找出每个顶点具有的索引,如果创建或删除顶点,这些索引可能会改变。
我使用Java Vector的indexOf(Vertex v)方法快速对此进行了编码,但显然这非常慢,我想知道管理它的最佳方法是什么,以便不需要太多处理?
提前谢谢。
答案 0 :(得分:0)
首先,快速修复将稍微提高性能:使用ArrayList而不是Vector - 您可能不需要同步开销。
主要问题是您在每个顶点数组更改时重新计算整个索引数组。目前您需要这样做,因为如果删除顶点,列表中已删除的顶点之后的每个顶点的索引都会更改。因此,关键是尽量减少对顶点索引的更改,使您可以轻松维护索引数组,而不是完全重新计算它。 所以:不是使用list.remove()来移除顶点,而是将其替换为列表末尾的顶点。这样只有一个索引已经改变,因此迭代索引数组并替换新值将非常快速。