Osd.PatchArray
是OpenSubdiv库中的一个类,用于存储所有细分后的面片网格数据。该类维护了包括面片索引、面片类型、以及其他面片相关的数据。使用该类可以方便地操作面片数据。
PatchArray()
: 创建一个空的PatchArray对象。void Resize(int numElements)
: 调整PatchArray对象的大小。void Clear()
: 清空PatchArray对象。int GetNumPatches() const
: 获取PatchArray对象中包含的面片的数量。PatchDescriptor GetPatchDescriptor() const
: 获取PatchArray对象中面片的描述符,包括面片类型和控制点个数等信息。void SetPatchDescriptor(const PatchDescriptor& desc)
: 设置PatchArray对象中面片的描述符。void SetPatchArray(void* ptr)
: 设置PatchArray对象中面片数据的指针。void* GetPatchArray() const
: 获取指向PatchArray对象中面片数据的指针。void SetIndexArray(void* ptr)
: 设置PatchArray对象中面片索引的指针。void* GetIndexArray() const
: 获取指向PatchArray对象中面片索引的指针。void SetHolesArray(unsigned char* ptr)
: 设置PatchArray对象中面片是否是孔的标志数组的指针。unsigned char* GetHolesArray() const
: 获取指向PatchArray对象中面片是否是孔的标志数组的指针。void SetPatchParamArray(void* ptr)
: 设置PatchArray对象中面片参数的指针。void* GetPatchParamArray() const
: 获取指向PatchArray对象中面片参数的指针。void SetFVarIndexArray(void* ptr)
: 设置PatchArray对象中自由变量(FVar)面片索引的指针。void* GetFVarIndexArray() const
: 获取指向PatchArray对象中自由变量(FVar)面片索引的指针。void SetFVarDataArray(void* ptr)
: 设置PatchArray对象中自由变量(FVar)数据的指针。void* GetFVarDataArray() const
: 获取指向PatchArray对象中自由变量(FVar)数据的指针。#include <opensubdiv/osd/patchArray.h>
// 创建一个PatchArray对象
Osd::PatchArray patchArray;
// 设置PatchArray对象中面片的描述符
Osd::PatchDescriptor desc;
desc.SetType(Osd::PatchDescriptor::REGULAR);
desc.SetNumControlVertices(4);
desc.SetSubdivisions(2);
patchArray.SetPatchDescriptor(desc);
// 调整PatchArray对象的大小
const int numPatches = 4;
patchArray.Resize(numPatches);
// 获取PatchArray对象中面片的数量
const int numPatchesInArray = patchArray.GetNumPatches();
// 设置PatchArray对象中面片数据的指针
void* patchData = // ...
patchArray.SetPatchArray(patchData);
// 获取指向PatchArray对象中面片数据的指针
void* patchDataPtr = patchArray.GetPatchArray();
// 设置PatchArray对象中面片索引的指针
void* patchIndex = // ...
patchArray.SetIndexArray(patchIndex);
// 获取指向PatchArray对象中面片索引的指针
void* patchIndexPtr = patchArray.GetIndexArray();
// 设置PatchArray对象中自由变量(FVar)面片索引的指针
void* fvarIndex = // ...
patchArray.SetFVarIndexArray(fvarIndex);
// 获取指向PatchArray对象中自由变量(FVar)面片索引的指针
void* fvarIndexPtr = patchArray.GetFVarIndexArray();