OpenSubdiv.OPENSUBDIV_VERSION.Sdc.LocalMask类用于表示顶点的掩码信息。顶点掩码可以用于判断顶点是否需要处理或参与细分等操作。
LocalMask();
LocalMask(const LocalMask& src);
LocalMask(int size, bool defaultValue = false);
LocalMask()
:默认构造函数,新建一个空的掩码。LocalMask(const LocalMask& src)
:拷贝构造函数,复制一个已存在的掩码。LocalMask(int size, bool defaultValue = false)
:按照给定的大小创建一个掩码,defaultValue指定掩码的默认值,默认值为false。void Clear();
void Resize(int size);
bool Get(int index) const;
void Set(int index);
void Unset(int index);
bool IsEmpty() const;
void Or(const LocalMask& mask);
void And(const LocalMask& mask);
void AndNot(const LocalMask& mask);
Clear()
:清空掩码,将所有值重置为默认值。Resize(int size)
:重新调整掩码的大小,如果新的大小比旧的小,则截断多余的部分,如果新的大小比旧的大,则自动扩展。Get(int index) const
:获取给定索引位置的掩码值。Set(int index)
:将给定索引位置的掩码值设置为true。Unset(int index)
:将给定索引位置的掩码值设置为false。IsEmpty() const
:判断掩码是否为空。Or(const LocalMask& mask)
:将自身的掩码值与另一个掩码值做按位或运算,并保存到自身。And(const LocalMask& mask)
:将自身的掩码值与另一个掩码值做按位与运算,并保存到自身。AndNot(const LocalMask& mask)
:将自身的掩码值与另一个掩码值做按位与非运算,并保存到自身。#include <OpenSubdiv/sdc/local.h>
void TestLocalMask()
{
OpenSubdiv::Sdc::LocalMask mask(6, true); // 创建一个大小为6的掩码,并将所有值初始设为true
// 取消第3个和第5个位置的掩码值
mask.Unset(2);
mask.Unset(4);
// 输出掩码的状态
for (int i = 0; i < mask.GetSize(); ++i)
{
printf("%d ", mask.Get(i));
}
// Output: 1 1 0 1 0 1
OpenSubdiv::Sdc::LocalMask mask2(4, false); // 创建一个大小为4的掩码,并且所有值初始设为false
mask2.Set(1);
mask2.Set(3);
// 对两个掩码做按位或运算
mask.Or(mask2);
// 输出结果
for (int i = 0; i < mask.GetSize(); ++i)
{
printf("%d ", mask.Get(i));
}
// Output: 1 1 1 1 0 1
}