查看: 685|回复: 1

osg::PolygonMode 如何关闭

[复制链接]

该用户从未签到

发表于 2014-9-11 16:00:00 | 显示全部楼层 |阅读模式
本帖最后由 rubby 于 2014-9-11 16:02 编辑

各位大哥,如果我用如下的方式 开启了 osg:olygonMode。

  1. osg::PolygonMode* polymode = new osg::PolygonMode;
  2.     polymode->setMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode::LINE);
  3.     stateset->setAttributeAndModes(polymode,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);
  4.    
  5.         osg::Group* wireframe_subgraph = new osg::Group;
  6.         wireframe_subgraph->setStateSet(stateset);
  7.         wireframe_subgraph->addChild(subgraph);
复制代码


请问,如何关闭(不重新创建一个stateset,设置给wireframe_subgraph ,比如 stateset 的callback中根据一定条件关闭PloygonMode):

感觉大致如下,获取attr后,如何关闭PolygonMode?  搜索咱们论坛,尚未发现有解决方法。   请各位大哥赐教。小弟跪谢
  1. osg::StateAttribute* attr = wireframe_subgraph->getOrCreateStateSet()->getAttribute(osg::StateAttribute::POLYGONMODE);

  2. .......
复制代码

该用户从未签到

 楼主| 发表于 2014-9-11 16:14:35 | 显示全部楼层
自己解决了:

  1.         osg::StateAttribute* attr = wireframe_subgraph->getOrCreateStateSet()->getAttribute(osg::StateAttribute::POLYGONMODE);
  2.         osg::PolygonMode* pm = dynamic_cast<osg::PolygonMode*>(attr);
  3.         if(!pm)
  4.                 std::cout<<"ERROR, pm is null"<<std::endl;
  5.         else{
  6.                 pm->setMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode::FILL);
  7.         }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表