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

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CLStencilTable

简介

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

成员函数

OsdCLStencilTable()

构造函数,创建一个空的Stencil Table对象。

OsdCLStencilTable();

OsdCLStencilTable(OsdCLStencilTable const & src)

拷贝构造函数,用于复制一个Stencil Table对象。

OsdCLStencilTable(OsdCLStencilTable const & src);

~OsdCLStencilTable()

析构函数,用于释放Stencil Table对象。

~OsdCLStencilTable();

bool Create(int numStencils, const int * sizes, const unsigned int * offsets, const int * indices, const float * weights)

创建一个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:控制顶点的权重

void UpdateValues(const float * values)

更新Stencil Table中控制顶点的值。

void UpdateValues(const float * values);
  • values:存放控制顶点值的数组

void UpdateTable(unsigned int const * sizes, unsigned int const * offsets, unsigned short const * indices)

更新Stencil Table的内容。

void UpdateTable(unsigned int const * sizes,
                 unsigned int const * offsets,
                 unsigned short const * indices);
  • sizes:Stencil中的控制顶点数量
  • offsets:数据偏移量
  • indices:控制顶点的索引

void Clear()

清空Stencil Table。

void Clear();

CLStencilTableType GetStencilTableCL() const

返回Stencil Table的CLStencilTableType类型。

CLStencilTableType GetStencilTableCL() const;

int GetNumStencils() const

返回Stencil的数量。

int GetNumStencils() const;

结尾

Osd.CLStencilTable是一个非常有用的类,它可以用于计算Stencil Buffer Operations。本文介绍了Osd.CLStencilTable的成员函数及其用法,希望对大家有所帮助。