|
楼主 |
发表于 2008-5-8 16:14:46
|
显示全部楼层
我做了一下实验,修改了一下“OSG快速入门指南”里面的state的例子。
该例子建立了两个正方形,设置不同的渲染状态并放在场景中四个不同的位置,其中左上角的正方形不改变状态。
我想把左上角的正方形变成透明的,但是并没有效果,请问哪里不对?以下是设置渲染状态属性的代码:
osg::Matrix m;
{
// Upper-left: Render the drawable with default state.
osg::ref_ptr<osg::MatrixTransform> mt = new osg::MatrixTransform;
m.makeTranslate( -2.f, 0.f, 2.f );
mt->setMatrix( m );
root->addChild( mt.get() );
mt->addChild( geode.get() );
// Added code, to change the transparency of the Upper-left model
osg::StateSet* state = mt->getOrCreateStateSet();
osg::BlendColor* bc = new osg::BlendColor(osg::Vec4(1.0, 0, 0, 0));
osg::BlendFunc* bf = new osg::BlendFunc();
bf->setSourceAlpha(osg::BlendFunc::CONSTANT_ALPHA);
bf->setDestinationAlpha(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
state->setAttributeAndModes(bf, osg::StateAttribute::ON );
state->setAttributeAndModes(bc, osg::StateAttribute::ON );
} |
|