【发布时间】:2014-10-02 18:17:21
【问题描述】:
就像this 问题一样,我已经从索引交错的格式 (COLLADA) 加载了一些顶点和索引数据。答案建议使用缓冲区纹理,但也警告我要避免的渲染性能损失。
所以问题是将所有交错的索引和顶点数据合并到多个VBOs和单个索引缓冲区中。
数据是这样给出的
P N P N P N P N P N P N ...
0 0 1 0 2 0 7 1 6 1 5 1 ...
每个P指的是一个位置,每个N指一个法线向量。
解决此问题的一种方法是跟踪列表中的所有元组(在本例中为两个)。如果我读取下一个元组,我会在列表中搜索这个元组,如果它存在,那么我使用这个位置作为新的索引数据,如果不存在,我构造一个新顶点并将元组放在列表中。
当然,这非常慢,因为它包括将这些元组与每个现有的元组进行比较。
有没有更有效的方法来做到这一点?
【问题讨论】:
-
正如@derhass 在下面的答案中所建议的那样,使用比列表更有效的数据结构。我在这里的答案中发布了一些伪代码:stackoverflow.com/questions/23349080/…。