Osd.CLStencilTable
是OpenSubdiv库中的一个类,用于定义计算在计算机图形学中常用的Stencil Buffer Operations的模板。
namespace OpenSubdiv {
namespace OPENSUBDIV_VERSION {
class OsdCLStencilTable {
public:
typedef cl_int* CLStencilTableType;
OsdCLStencilTable();
OsdCLStencilTable(OsdCLStencilTable const & src);
~OsdCLStencilTable();
bool Create(int numStencils,
const int * sizes,
const unsigned int * offsets,
const int * indices,
const float * weights);
void UpdateValues(const float * values);
void UpdateTable(unsigned int const * sizes,
unsigned int const * offsets,
unsigned short const * indices);
void Clear();
CLStencilTableType GetStencilTableCL() const;
int GetNumStencils() const;
private:
...
};
} // end namespace OPENSUBDIV_VERSION
using namespace OPENSUBDIV_VERSION;
} // end namespace OpenSubdiv
构造函数,创建一个空的Stencil Table对象。
OsdCLStencilTable();
拷贝构造函数,用于复制一个Stencil Table对象。
OsdCLStencilTable(OsdCLStencilTable const & src);
析构函数,用于释放Stencil Table对象。
~OsdCLStencilTable();
创建一个Stencil Table。
bool Create(int numStencils,
const int * sizes,
const unsigned int * offsets,
const int * indices,
const float * weights);
numStencils
:Stencil的数量sizes
:Stencil中的控制顶点数量offsets
:数据偏移量indices
:控制顶点的索引weights
:控制顶点的权重更新Stencil Table中控制顶点的值。
void UpdateValues(const float * values);
values
:存放控制顶点值的数组更新Stencil Table的内容。
void UpdateTable(unsigned int const * sizes,
unsigned int const * offsets,
unsigned short const * indices);
sizes
:Stencil中的控制顶点数量offsets
:数据偏移量indices
:控制顶点的索引清空Stencil Table。
void Clear();
返回Stencil Table的CLStencilTableType类型。
CLStencilTableType GetStencilTableCL() const;
返回Stencil的数量。
int GetNumStencils() const;
Osd.CLStencilTable
是一个非常有用的类,它可以用于计算Stencil Buffer Operations。本文介绍了Osd.CLStencilTable
的成员函数及其用法,希望对大家有所帮助。