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

OpenSubdiv.OPENSUBDIV_VERSION.Osd.MTLContext

简介

OpenSubdiv.OPENSUBDIV_VERSION.Osd.MTLContext是OpenSubdiv的一个上下文对象,用于管理Metal材质的编译和缓存,提高渲染性能。

成员函数

static Osd::MTLContext *Create(const id<MTLDevice> &device)

创建一个新的Osd::MTLContext对象。

参数:

  • device:id<MTLDevice>类型,表示Metal设备。

返回值:

  • Osd::MTLContext *类型,表示新创建的对象。

不抛出异常。

static void destroy(Osd::MTLContext *mtlContext)

销毁一个Osd::MTLContext对象。

参数:

  • mtlContext:Osd::MTLContext *类型,表示待销毁的对象。

返回值:无。

不抛出异常。

MTLComputePipelineState *GetSingleCreaseApplyProgram(TopologyRefiner *refiner, Scheme scheme)

获取一个用于处理单折痕细分的Metal计算管道状态。

参数:

  • refiner:TopologyRefiner *类型,表示该计算管道状态所涉及的拓扑细分器。
  • scheme:Scheme类型,表示拓扑细分的方案类型。

返回值:

  • MTLComputePipelineState *类型,表示该Metal计算管道状态。

可能会抛出异常。

MTLComputePipelineState *GetTriangleSubdivideProgram(TopologyRefiner *refiner, Scheme scheme)

获取一个用于处理三角形细分的Metal计算管道状态。

参数:

  • refiner:TopologyRefiner *类型,表示该计算管道状态所涉及的拓扑细分器。
  • scheme:Scheme类型,表示拓扑细分的方案类型。

返回值:

  • MTLComputePipelineState *类型,表示该Metal计算管道状态。

可能会抛出异常。

void ClearCache()

清除MTL缓存。

返回值:无。

不抛出异常。

注意事项

  • 在使用GetSingleCreaseApplyProgram和GetTriangleSubdivideProgram时,需确保传入的TopologyRefiner对象具有正确的顶点和细分数据。
  • 在使用GetSingleCreaseApplyProgram和GetTriangleSubdivideProgram获取Metal计算管道状态前,需提前对拓扑细分器执行Refine操作。