OSG 透明度

osg 打开透明度

#include <osg/Node>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osg/ShapeDrawable>
osg::ref_ptr<osg::Node>createBoxA()
{
  osg::ref_ptr<osg::Geode>gnode=new osg::Geode;
  osg::ref_ptr<osg::ShapeDrawable>sd=new osg::ShapeDrawable(new osg::Box(osg::Vec3(0,-10,0),15,2,14));
  gnode->addDrawable(sd.get());

  sd->setColor(osg::Vec4(0,0.,0.5,0.3f));
  gnode->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);
  gnode->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
  return gnode;
}
osg::ref_ptr<osg::Node>createBoxB()
{
  osg::ref_ptr<osg::Geode>geode=new osg::Geode;

  osg::ref_ptr<osg::ShapeDrawable>sd=new osg::ShapeDrawable(new osg::Box(osg::Vec3(0,10,0),10,2,15));
  geode->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);
  geode->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
  geode->addDrawable(sd);
  sd->setColor(osg::Vec4(1,0,1.0,0.3));
  return geode;
}
int main(int argc, char *argv[])
{
  osg::ref_ptr<osgViewer::Viewer>viewer =new osgViewer::Viewer;
  osg::ref_ptr<osg::Group>root=new osg::Group;
  root->addChild(osgDB::readNodeFile("cow.osg"));
  root->addChild(createBoxB());
  root->addChild(createBoxA());
  viewer->setSceneData(root.get());
  return viewer->run();
}



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值