我正在用 C++ 编写一个类来处理绘制 3D 模型(即三角形网格),我想知道如何最好地组织我的数据缓冲区。
到目前为止,这是我所知道的:
使用交错数组可以加快代码速度。它利用空间局部性并增加缓存命中。您可以通过将顶点组织到
struct
s 中来实现这一点,其中每个顶点都struct
包含位置/法线/texcoord/等。该顶点的信息。使用索引数组通过存储每个不同的顶点/法线/texcoord/等来减少内存消耗。仅一次,然后通过对这些数组的引用来定义人脸,而不是为每个人脸冗余地指定所有信息。你也可以用一个索引来实现这个
struct
到顶点属性列表中。
我的问题:我应该如何最好地利用这两者?有可能两者都做吗?我听说两者都应该尽可能地使用它们,但没有发现任何关于同时使用它们或两者兼而有之的东西。
我最初的解决方案:我打算实现一个结构,该结构在数据数组中具有索引,并将这些结构的数组以及数据数组作为 VBO 传递,基本上将两者结合起来。
我在正确的轨道上吗?有一个更好的方法吗?我应该/不应该做什么?有什么我似乎不知道会影响这个决定的事情吗?