osg实现透明化

在osg中对对象设置透明化(注意最后一行渲染级别的问题):

osg::StateSet* stateset = _geometryFeild->getOrCreateStateSet();
  //Alpha混合开启
  stateset->setMode(GL_BLEND,osg::StateAttribute::ON);
  //取消深度测试
   stateset->setMode( GL_DEPTH_TEST, osg::StateAttribute::OFF  );
  stateset->setMode( GL_LIGHTING, osg::StateAttribute::OFF | osg::StateAttribute::PROTECTED );
  stateset->setRenderBinDetails(11, "RenderBin");//设置渲染优先级:这个函数有两个传入参数,整型数表示渲染的顺序,以0 为标准,小于0 的渲染状态集(亦即包含了这个StateSet 的StateGraph 状态节点)将排列在前(个人认为是在最前绘制,显示到屏幕后面),大于0 的则排列在后(最后绘制,显示在屏幕最前面);字符串参数“RenderBin”或者“DepthSortedBin”作为名称时有特殊含义,其中“RenderBin”表示在渲染树中新建分支进行渲染,“DepthSortedBin”表示新建分支,并且所有要渲染的数据将按照深度值降序进行排序。

发布了17 篇原创文章 · 获赞 25 · 访问量 5659

猜你喜欢

转载自blog.csdn.net/qq_44894692/article/details/102364455