如果指定颜色,而不是背景色,则需要用const_
目标是指定颜色,源是要加的模型(比如点云)。
float backColorAlpha = 0.6;
osg::BlendColor* backColor = new osg::BlendColor(osg::Vec4(1.0, 1.0, 1.0, backColorAlpha));
stateset->setAttributeAndModes(backColor, osg::StateAttribute::ON);
osg::BlendFunc*bf = new osg::BlendFunc();
stateset->setAttributeAndModes(bf, osg::StateAttribute::ON);
bf->setSourceAlpha(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA); //点云的alpha,由1-backColorAlpha决定
bf->setDestinationAlpha(osg::BlendFunc::CONSTANT_ALPHA);//背景颜色的alpha,由backColorAlpha决定
bf->setDestinationRGB(osg::BlendFunc::CONSTANT_COLOR);
alpha混合(包含指定颜色)
最新推荐文章于 2025-11-17 12:30:23 发布
文章介绍了在osg库中如何设置颜色混合,特别是当指定颜色而非背景色时的操作。通过创建BlendColor和BlendFunc对象,设置了源和目标颜色的混合方式,以实现点云等模型与背景的透明度效果。其中,floatbackColorAlpha用于控制背景颜色的透明度,而BlendFunc则定义了源和目标颜色的混合模式。

1353

被折叠的 条评论
为什么被折叠?



