查看: 2679|回复: 2

奇怪的DrawArray,求教

[复制链接]

该用户从未签到

发表于 2009-8-29 15:31:51 | 显示全部楼层 |阅读模式
  1.         osg::Geode* geode = new osg::Geode;
  2.         osg::Geometry* nowGeom = new osg::Geometry;
  3.         nowGeom->addPrimitiveSet(new osg::DrawArrays(GL_POINTS,0,2));

  4.         osg::Vec3Array* color2 = new osg::Vec3Array;
  5.         color2->push_back(osg::Vec3(0.0,1.0,1.0));
  6.         nowGeom->setColorBinding(osg::Geometry::BIND_OVERALL);
  7.         nowGeom->setColorArray(color2);

  8.         osg::Vec3Array* vertex = new osg::Vec3Array;
  9.         nowGeom->setVertexArray(vertex);
  10.         vertex->push_back(osg::Vec3(600,600,0));
  11.         vertex->push_back(osg::Vec3(600,400,0));
  12.         nowGeom->setDataVariance(osg::Object::DYNAMIC);

  13.         osg::StateSet* state2 = nowGeom->getOrCreateStateSet();
  14.         osg::Point* point = new osg::Point;
  15.         point->setSize(5.0);
  16.         state2->setAttributeAndModes(point);
  17.         state2->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);

  18.         geode->addDrawable(nowGeom);
复制代码
我将它设置成2个顶点确实可以看到两个顶点.
而修改成一个顶点的时候的即:
  1. nowGeom->addPrimitiveSet(new osg::DrawArrays(GL_POINTS,0,1));
复制代码
应当是会绘制一个顶点的啊?可是却没有绘制出来?
如下图: 附件
而我在OpenGL里 使用glDrawArray(GL_POINTS,0,1)绘制一个顶点确实可以绘制的出来
twoPoint.jpg
onePoint.jpg

该用户从未签到

发表于 2009-8-29 20:19:34 | 显示全部楼层
OSG有一个默认的“细节裁减”设定,就是单个顶点会被自动裁减掉,因为它们对于场景显示很可能是不必要的。可以关闭这个设定,例如:
viewer.getCamera()->setCullingMode( viewer.getCamera()->getCullingMode() & ~osg:: CullStack:: SMALL_FEATURE_CULLING);

该用户从未签到

发表于 2009-8-29 21:23:34 | 显示全部楼层
2# array


学习了。。。。呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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