|
我用- geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUAD_STRIP, 0, n));
复制代码 画了一个图形 想让其变成透明的 但是透明效果出不来
代码如下- //使用BlendFunc实现透明效果
- //关闭灯光
- pathOfTask->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF|osg::StateAttribute::PROTECTED);
- //打开混合融合模式
- pathOfTask->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);
- pathOfTask->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON);
- pathOfTask->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
- osg::BlendColor* bc =new osg::BlendColor(osg::Vec4(1.0,1.0,1.0,0.0));
- osg::BlendFunc*bf = new osg::BlendFunc();
- pathOfTask->getOrCreateStateSet()->setAttributeAndModes(bf,osg::StateAttribute::ON);
- bf->setSource(osg::BlendFunc::CONSTANT_ALPHA);
- bf->setDestination(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
- bc->setConstantColor(osg::Vec4(1,1,1,0.5));
复制代码 用上边的代码 图形就显示不出来了 请问应该怎么改 或者有其他方法么? 除了使用材质设置geod的状态集的方法 还有其他方法么? 求指导 谢谢 |
|