查看: 1266|回复: 0

求助:给矩形添加轮廓线的时候遇到了问题

[复制链接]

该用户从未签到

发表于 2014-10-17 22:46:29 | 显示全部楼层 |阅读模式
我是个OSG初学者,仿照osgoutline的例子显示box轮廓线正常,代码如下:
  1. int main(int argc, char **argv)
  2. {
  3.         osg::ref_ptr<osg::Geode> geode = new osg::Geode;  
  4.         geode->addDrawable(new osg::ShapeDrawable(new osg::Box(osg::Vec3(), 2)));
  5.        
  6.         osg::ref_ptr<osg::Group> root = new osg::Group;
  7.         osg::ref_ptr<osgFX::Outline> outline = new osgFX::Outline;
  8.         root->addChild(outline.get());
  9.         outline->setWidth(8);
  10.         outline->setColor(osg::Vec4(1,1,0,1));
  11.         outline->addChild(geode.get());

  12.         // must have stencil buffer...
  13.         osg::DisplaySettings::instance()->setMinimumNumStencilBits(1);

  14.         // construct the viewer
  15.         osgViewer::Viewer viewer;
  16.         viewer.setSceneData(root.get());

  17.         // must clear stencil buffer...
  18.         unsigned int clearMask = viewer.getCamera()->getClearMask();
  19.         viewer.getCamera()->setClearMask(clearMask | GL_STENCIL_BUFFER_BIT);
  20.         viewer.getCamera()->setClearStencil(0);
  21.         viewer.setUpViewInWindow(100, 100, 800, 600);
  22.         return viewer.run();
  23. }
复制代码

box

box


但是我想画一个矩形的轮廓线,main函数前两句改为
  1. osg::ref_ptr<osg::Geometry> geom = new osg::Geometry;
  2.         osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array;
  3.         v->push_back(osg::Vec3(1, 1, 1));
  4.         v->push_back(osg::Vec3(2, 1, 1));
  5.         v->push_back(osg::Vec3(2, 2, 1));
  6.         v->push_back(osg::Vec3(1, 2, 1));
  7.         geom->setVertexArray(v.get());
  8.         osg::ref_ptr<osg::DrawElementsUInt> quad = new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
  9.         quad->push_back(0);
  10.         quad->push_back(1);
  11.         quad->push_back(2);
  12.         quad->push_back(3);
  13.         geom->addPrimitiveSet(quad.get());
  14.         osg::ref_ptr<osg::Vec4Array> c = new osg::Vec4Array;
  15.         c->push_back(osg::Vec4(1, 0, 0, 1));
  16.         geom->setColorArray(c.get());
  17.         geom->setColorBinding(osg::Geometry::BIND_OVERALL);
  18.         osg::ref_ptr<osg::Vec3Array> n = new osg::Vec3Array;
  19.         n->push_back(osg::Vec3(0, 0, 1));
  20.         geom->setNormalArray(n.get());
  21.         geom->setNormalBinding(osg::Geometry::BIND_OVERALL);
  22.         osg::ref_ptr<osg::Geode> geode = new osg::Geode;
  23.         geode->addDrawable(geom.get());
复制代码

矩形下方可以正常显示轮廓线,但是矩形上方无法显示

下方

下方

上方

上方


请大家帮我看看问题出在哪里?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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