osg.Sampler
osg.Sampler类用于指定纹理过滤参数和边缘行为。这些过滤参数和边缘行为可用于确定纹理的采样和插值方式。
构造函数
osg::ref_ptr<osg::Sampler> sampler = new osg::Sampler();
成员函数
setFilter(osg::Sampler::FilterMode mode, osg::Sampler::Filter filter)
设置纹理过滤参数。mode
参数指定纹理类型,filter
参数指定过滤类型,包括几种不同的过滤方式:
- NEAREST:最近邻过滤,选择与采样坐标最邻近的纹素。
- LINEAR:双线性过滤,使用采样坐标周围的4个纹素加权平均值。
- NEAREST_MIPMAP_NEAREST:使用最近邻过滤,同时采样MIPMAP级别以获得不同分辨率的纹素缩放版本,选择级别内与采样坐标最邻近的纹素。
- LINEAR_MIPMAP_NEAREST:使用双线性插值,同时采样MIPMAP级别以获得不同分辨率的纹素缩放版本,选择级别内与采样坐标最邻近的2x2纹素组。
- NEAREST_MIPMAP_LINEAR:使用最近邻过滤,同时采样MIPMAP级别以获得不同分辨率的纹素缩放版本,选择两个级别之间最邻近的级别,然后在这些级别内使用最近邻过滤选择纹素。
- LINEAR_MIPMAP_LINEAR:使用双线性插值,同时采样MIPMAP级别以获得不同分辨率的纹素缩放版本,选择两个级别之间最邻近的级别,然后在这些级别内使用双线性插值选择纹素。
使用示例:
sampler->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR_MIPMAP_LINEAR);
sampler->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
setWrap(osg::Sampler::WrapParameter parameter, osg::Sampler::WrapMode mode)
设置纹理边缘行为。parameter
参数指定需设置的边缘行为,包括S(水平)和T(垂直),mode
参数指定边缘行为类型,包括三种:
- CLAMP_TO_EDGE:采样坐标超出纹理图像的边缘时,使用边缘的纹理值。
- REPEAT:采样坐标超出纹理图像的边缘时,使用纹理环绕。
- MIRRORED_REPEAT:采样坐标超出纹理图像的边缘时,使用反向纹理环绕。
使用示例:
sampler->setWrap(osg::Texture::WRAP_S, osg::Texture::REPEAT);
sampler->setWrap(osg::Texture::WRAP_T, osg::Texture::REPEAT);
参考文献