OpenSubdiv.OPENSUBDIV_VERSION.Far.StencilTableFactoryReal是一个C++类,它会根据输入的网格表面数据,生成对应的Far.StencilTable。
static Far::StencilTable* Create(Far::TopologyRefiner const& refiner, Far::StencilTable::StencilType type, int maxlevel)
根据访问拓扑细分器(refiner)生成Far::StencilTable对象,并返回其指针。type参数指定为主要的stencil类型。用于计算的最大细分级别由maxlevel参数给出。
如果输入类型被标记为STENCIL_JACOBI,则产生的stencil表将包括用于动态雅各比松弛算法的模板。如果输入类型被标记为STENCIL_GS,则将为用于逐级高斯-赛德尔算法计算的模板生成stencil表。
template <class T> static Far::StencilTable* Create(Far::TopologyRefiner const& refiner, Far::StencilTable::StencilType type, int maxlevel, T const& dispatcher)
在Create函数的基础上,增加dispatcher参数,提供对自定义计算的支持。
Far::TopologyRefiner refiner(*mesh, // 输入的网格数据
Far::TopologyRefiner::Options(options),
FVarLevel ? &FVarDesc : 0);
// 获取一个有限制的SizeRoutine的示例对象
OpenSubdiv::CpuStencilTableT<OpenSubdiv::Stencil, float, Color> stencilTable;
// 创建stencil表
Far::StencilTable * stencil = OpenSubdiv::Far::StencilTableFactory::Create(
refiner, Far::StencilTable::STENCIL_JACOBI, true,
stencilTable );