vcg.tri.Allocator

vcg.tri.Allocator是一个内存分配器类,它用于分配和释放内存,以支持3D几何数据结构的创建和操作。它是VCGLib(一个C++库,用于3D几何处理)中的一个组件。

方法

Constructor

Allocator(unsigned int e_size, unsigned int v_size, unsigned int f_size)
  • e_size:边的数量(uint类型)
  • v_size:顶点数(uint类型)
  • f_size:面的数量(uint类型)

此构造函数用于初始化几何内存实例。

void Free()

此方法用于释放内存,将已分配的空间还给操作系统。它将释放Allocator对象占用的所有内存。调用此方法后,Allocator对象不能再使用。

VertexPointer VertexNew()

此方法用于分配新的顶点。返回一个VertexPointer类型的对象,该对象表示分配的顶点。

void VertexFree(VertexPointer v)

此方法用于释放先前分配的顶点。

  • v:要释放的顶点(VertexPointer类型)

FacePointer FaceNew(int vertices_num)

此方法用于分配新的面。返回一个FacePointer类型的对象,该对象表示分配的面。

  • vertices_num:表示新面顶点数量的整数类型参数。

void FaceFree(FacePointer f)

此方法用于释放先前分配的面。

  • f:要释放的面(FacePointer类型)

属性

unsigned int Vn()

此属性表示顶点数。

unsigned int Fn()

此属性表示面数量。

unsigned int En()

此属性表示边数量。

Point3 *V()

此属性表示包含顶点坐标数据的指针。

Normal3 *VN()

此属性表示包含每个顶点法线数据的指针。

Color4 *VC()

此属性表示包含每个顶点颜色数据的指针。

TextureCoord2 *VT()

此属性表示包含每个顶点纹理坐标数据的指针。

unsigned int *Fp() 和 unsigned char *F()

这两个属性表示的数据相同,都是用于描述三角形的三个顶点索引(每个索引是一个无符号整数)的指针。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();