vcg.tri.Allocator是一个内存分配器类,它用于分配和释放内存,以支持3D几何数据结构的创建和操作。它是VCGLib(一个C++库,用于3D几何处理)中的一个组件。
Allocator(unsigned int e_size, unsigned int v_size, unsigned int f_size)
此构造函数用于初始化几何内存实例。
此方法用于释放内存,将已分配的空间还给操作系统。它将释放Allocator对象占用的所有内存。调用此方法后,Allocator对象不能再使用。
此方法用于分配新的顶点。返回一个VertexPointer类型的对象,该对象表示分配的顶点。
此方法用于释放先前分配的顶点。
此方法用于分配新的面。返回一个FacePointer类型的对象,该对象表示分配的面。
此方法用于释放先前分配的面。
此属性表示顶点数。
此属性表示面数量。
此属性表示边数量。
此属性表示包含顶点坐标数据的指针。
此属性表示包含每个顶点法线数据的指针。
此属性表示包含每个顶点颜色数据的指针。
此属性表示包含每个顶点纹理坐标数据的指针。
这两个属性表示的数据相同,都是用于描述三角形的三个顶点索引(每个索引是一个无符号整数)的指针。Fp() 返回的是无符号整数指针,而F() 返回的是无符号字符指针。
vcg::tri::Allocator<MyMeshType>::Type alloc; // 创建一个allocator对象
alloc.Clear(); // 清除所有已分配的内存
// 分配三个新的顶点
vcg::tri::Allocator<MyMeshType>::VertexPointer v1 = alloc.VertexNew();
vcg::tri::Allocator<MyMeshType>::VertexPointer v2 = alloc.VertexNew();
vcg::tri::Allocator<MyMeshType>::VertexPointer v3 = alloc.VertexNew();
// 分配一个新的面,并为其分配三个顶点
vcg::tri::Allocator<MyMeshType>::FacePointer f1 = alloc.FaceNew(3);
f1->V(0) = v1;
f1->V(1) = v2;
f1->V(2) = v3;
// 释放已经分配的顶点
alloc.VertexFree(v1);
alloc.VertexFree(v2);
alloc.VertexFree(v3);
// 释放已经分配的面
alloc.FaceFree(f1);
// 释放所有内存,并将指针重置为0
alloc.Free();