在 OpenMesh 中哪里存储 VertexHandle 的 ID?
Where to store the id of a VertexHandle in OpenMesh?
我正在从 OpenMesh 结构构建索引和顶点缓冲区,我将把它们输入到我的渲染引擎中。在这里,我迭代我的元素(未显示)并为我的每个点创建 VertexHandles,然后添加面。
std::vector<Mesh::VertexHandle> vhandles;
for (... 3 triangle points) {
vhandles.push_back(mesh.add_vertex(Mesh::Point(
point->px, point->py, point->pz)));
}
mesh.add_face(face_vhandles);
Point
的顶点缓冲区出现在下面,我将 vhandles 数据复制到这个结构中,然后构建一个数组以提供给图形引擎。
struct Point
{
float px, py, pz; // positions
float nx, ny, nz; // normals
float cx, cy, cz; // diffuse
}
当我在上面构建 vhandles
向量时,我没有向 VertexHandle 添加 index/id。
我需要在某个地方存储并访问带有 VertexHandle iteself 的点的 ID。我要把它存放在哪里?我还没有在 VertexHandle 的源代码中找到用于此目的的字段,但似乎是需要的。
虽然我对 OpenMesh 还只是刚刚熟悉,但在我看来,通过索引访问任何元素是一种不好的做法,因为这些是内部索引,将在垃圾收集时重新排列。 OpenMesh 提供迭代器和循环器来迭代其元素。如果您需要随机访问,您始终可以将与您想要的任何索引关联的句柄存储在容器中。此外,还有 vertex_handle()
、face_handle()
、edge_handle()
函数,它们通过内部索引为您提供网格元素。
我正在从 OpenMesh 结构构建索引和顶点缓冲区,我将把它们输入到我的渲染引擎中。在这里,我迭代我的元素(未显示)并为我的每个点创建 VertexHandles,然后添加面。
std::vector<Mesh::VertexHandle> vhandles;
for (... 3 triangle points) {
vhandles.push_back(mesh.add_vertex(Mesh::Point(
point->px, point->py, point->pz)));
}
mesh.add_face(face_vhandles);
Point
的顶点缓冲区出现在下面,我将 vhandles 数据复制到这个结构中,然后构建一个数组以提供给图形引擎。
struct Point
{
float px, py, pz; // positions
float nx, ny, nz; // normals
float cx, cy, cz; // diffuse
}
当我在上面构建 vhandles
向量时,我没有向 VertexHandle 添加 index/id。
我需要在某个地方存储并访问带有 VertexHandle iteself 的点的 ID。我要把它存放在哪里?我还没有在 VertexHandle 的源代码中找到用于此目的的字段,但似乎是需要的。
虽然我对 OpenMesh 还只是刚刚熟悉,但在我看来,通过索引访问任何元素是一种不好的做法,因为这些是内部索引,将在垃圾收集时重新排列。 OpenMesh 提供迭代器和循环器来迭代其元素。如果您需要随机访问,您始终可以将与您想要的任何索引关联的句柄存储在容器中。此外,还有 vertex_handle()
、face_handle()
、edge_handle()
函数,它们通过内部索引为您提供网格元素。