OpenSubdiv是一个高性能、通用和可扩展的细分曲面库,它提供了多种细分方法,支持几乎所有的三维软件。
本文档介绍了OpenSubdiv的Osd.D3D11LegacyGregoryPatchTable,它是OpenSubdiv的一个D3D11实现版本,用于Gregory曲面的细分。
class OsdD3D11LegacyGregoryPatchTable : OsdD3D11PatchTable {
public:
// 构造函数
OsdD3D11LegacyGregoryPatchTable();
// 分配表格内存
bool allocate(int numVertices, int numPtexFaces);
// 获取Gergory曲面的控制点信息
const float* GetGregoryControlVertex(int patchIndex, int rotation);
// 获取Gregory曲面patch的数量
int GetNumGregoryPatches() const;
// 获取一组控制点的数量
int GetNumControlVertices() const;
};
struct Vertex {
short boundary[4];
short edge[4][2][2];
unsigned char vertex[20];
};
构造函数
分配表格内存
返回值:bool类型,表示是否分配成功
获取Gergory曲面的控制点信息
返回值:float类型,表示Gergory曲面的控制点信息
获取Gregory曲面patch的数量
返回值:int类型,表示Gregory曲面patch的数量
获取一组控制点的数量
返回值:int类型,表示一组控制点的数量
OpenSubdiv的Osd.D3D11LegacyGregoryPatchTable用于实现Gregory曲面的细分,提供了一系列操作函数来方便使用。需要注意的是,该类需要D3D11的支持。