OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Osd.PatchArray

简介

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();

参考资料