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操作。