查看: 3765|回复: 7

OSG模板测试!!各位大大求教啊!!!!!!!!

[复制链接]

该用户从未签到

发表于 2012-9-19 17:33:22 | 显示全部楼层 |阅读模式
本帖最后由 sunnk 于 2012-9-19 18:53 编辑

我在做对一个地形进行模板测试,隐藏指定的部分区域(在该区域后面绘制了一个盒子),隐藏该区域后显示盒子!由于对不懂模板测试,只能编码试,都修改了一天了!但是一直没能实现! 代码如下:
//创建了一个底面和四个边框面
osg::Geode* side = createSide();
osg::Geode* underside = createUnderside();

osg::Geode* upGroundSide = createUpGroudSide();
osg::Geode* upside = createUpside();
//加入Group节点
m_group_3d->addChild(side);
m_group_3d->addChild(underside);


osg::Stencil* stencil = new osg::Stencil;
stencil->setWriteMask(0);
stencil->setFunction(osg::Stencil::ALWAYS,1,1);
stencil->setOperation(osg::Stencil::KEEP,osg::Stencil::KEEP,osg::Stencil:ECR);

//得到地形节点
osg::Group* s3d = libo::getGlobalViewer().getSceneMgr()->getScene3d();
osg::Group* ground = new osg::Group;
int num = s3d->getNumChildren();
for (int i =0; i <num; ++i)
{
        osg::Node* node = s3d->getChild(i);
        if (node && node->getName() == "地形")
        {
                ground = node->asGroup();
        }
        }
ground->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON);
ground->getOrCreateStateSet()->setAttributeAndModes(stencil,osg::StateAttribute::ON);


stencil->setFunction(osg::Stencil:ESS,1,1);
stencil->setOperation(osg::Stencil::KEEP,osg::Stencil::KEEP,osg::Stencil::REPLACE);
m_group_3d->getOrCreateStateSet()->setAttributeAndModes(stencil,osg::StateAttribute::ON);
求教啊!!!!!!

该用户从未签到

发表于 2012-9-20 08:14:51 | 显示全部楼层
您的方法不对,stencil就作用了一次,怎么能起作用呢

该用户从未签到

发表于 2012-9-20 08:22:17 | 显示全部楼层
参照一下osgReflect这个例子

该用户从未签到

 楼主| 发表于 2012-9-20 09:07:45 | 显示全部楼层


您的方法不对,stencil就作用了一次,怎么能起作用呢
可以具体讲解下嘛???

该用户从未签到

 楼主| 发表于 2012-9-20 09:10:56 | 显示全部楼层
liuzhiyu123 发表于 2012-9-20 08:14
您的方法不对,stencil就作用了一次,怎么能起作用呢

能具讲解下吗?谢谢了!

该用户从未签到

 楼主| 发表于 2012-9-20 09:29:36 | 显示全部楼层
liuzhiyu123 发表于 2012-9-20 08:22
参照一下osgReflect这个例子

找到实例代码了!我去试试!!!嘿嘿!谢谢了啊!

该用户从未签到

 楼主| 发表于 2012-9-20 17:24:47 | 显示全部楼层
通过各位大侠的帮助!特别是liuzhiyu123大侠!我实现了效果!谢谢!!非常感谢!

该用户从未签到

发表于 2013-5-13 19:29:49 | 显示全部楼层
sunnk:说说你的解决方法好不,我也遇到了这样的问题,新手啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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