查看: 1534|回复: 5

关于一个灰常简单的问题的求助

[复制链接]

该用户从未签到

发表于 2012-6-13 13:24:38 | 显示全部楼层 |阅读模式
本帖最后由 liuzhiyu123 于 2012-6-13 13:27 编辑

请教一个大家认为灰常简单的问题。
在osgManipulator中,TranslateAxisDragger的setupDefaultGeometry函数中,有这样的设置
  1. // Create a line.
  2.     osg::Geode* lineGeode = new osg::Geode;
  3.     {
  4.         osg::Geometry* geometry = new osg::Geometry();
  5.         
  6.         osg::Vec3Array* vertices = new osg::Vec3Array(2);
  7.         (*vertices)[0] = osg::Vec3(0.0f,0.0f,0.0f);
  8.         (*vertices)[1] = osg::Vec3(0.0f,0.0f,1.0f);

  9.         geometry->setVertexArray(vertices);
  10.         geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,2));

  11.         lineGeode->addDrawable(geometry);
  12.     }

  13.     // Turn of lighting for line and set line width.
  14.     {
  15.         osg::LineWidth* linewidth = new osg::LineWidth();
  16.         linewidth->setWidth(2.0f);
  17.         lineGeode->getOrCreateStateSet()->setAttributeAndModes(linewidth, osg::StateAttribute::ON);
  18.         lineGeode->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
  19.     }//[color=Red]这里已经对这个geode节点关闭了光照[/color]

  20. 但是使用了这个函数
  21. void osgManipulator::setMaterialColor(const osg::Vec4& color, osg::Node& node)
  22. {
  23.     osg::Material* mat = dynamic_cast<osg::Material*>(node.getOrCreateStateSet()->getAttribute(osg::StateAttribute::MATERIAL));
  24.     if (! mat)
  25.     {
  26.         mat = new osg::Material;
  27.         mat->setDataVariance(osg::Object::DYNAMIC);
  28.         node.getOrCreateStateSet()->setAttribute(mat);
  29.     }
  30.     mat->setDiffuse(osg::Material::FRONT_AND_BACK, color);
  31. }
  32. [color=Red]为什么会起作用?
  33. 还有在那个拖拽轴起作用的时候,它的颜色是怎么改变的?(已经关闭光照)[/color]
复制代码

该用户从未签到

 楼主| 发表于 2012-6-13 13:39:26 | 显示全部楼层
希望有狼友 能解答

该用户从未签到

发表于 2012-6-13 14:12:51 | 显示全部楼层
正在看源代码,希望能解决你的问题。我的应用只是改变了一下拖曳器的形状。

该用户从未签到

 楼主| 发表于 2012-6-13 14:17:18 | 显示全部楼层
david850911 发表于 2012-6-13 14:12
正在看源代码,希望能解决你的问题。我的应用只是改变了一下拖曳器的形状。

哈哈,可以啊,对颜色改变那块不太清楚

该用户从未签到

 楼主| 发表于 2012-6-18 16:14:25 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2012-6-19 13:02:04 | 显示全部楼层
等待基友的回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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