查看: 2149|回复: 2

关于点和线的显示问题

[复制链接]

该用户从未签到

发表于 2011-4-27 16:39:23 | 显示全部楼层 |阅读模式
  1. void DrawPoint( osg::ref_ptr<osg::Vec3Array> ptArray, double radius, osg::ref_ptr<osg::Vec4Array> color )
  2. {

  3.         osg::ref_ptr<osg::Geometry> geom = new osg::Geometry;
  4.         osg::ref_ptr <osg::Point> pointSize = new osg::Point;  
  5.         pointSize->setSize(radius);     
  6.         geom->getOrCreateStateSet()->setAttributeAndModes(pointSize.get (),osg::StateAttribute::ON);  

  7.         geom->setVertexArray( ptArray.get() );  

  8.         geom->setColorArray( color.get() );
  9.         geom->setColorBinding( osg::Geometry::BIND_OVERALL );

  10.         //定义法线
  11.         osg::ref_ptr<osg::Vec3Array> n = new osg::Vec3Array;
  12.         geom->setNormalArray( n.get() );  
  13.         geom->setNormalBinding( osg::Geometry::BIND_OVERALL );
  14.         n->push_back( osg::Vec3( 0.0f, 0.0f, 1.0f ) );  
  15.         //设置顶点关联方式
  16.         geom->addPrimitiveSet(         new osg::DrawArrays( osg::PrimitiveSet::POINTS, 0, ptArray->size() ) );

  17.         osg::ref_ptr<osg::Geode> geode = new osg::Geode;
  18.         geode->addDrawable( geom.get() );  

  19.         mRoot->addChild( geode.get() );

  20. }
复制代码


画出来的点显示的时候有个问题,那就是相机移动的时候点的大小并不随着视野的远近变化,是不是点的显示只和屏幕上的像素大小有关?多谢版主大大给点指点!

QQ截图未命名.jpg

画的线也有类似的现象。

该用户从未签到

发表于 2011-4-28 08:35:06 | 显示全部楼层
是的,我记得OpenGL就是这样的机制

该用户从未签到

发表于 2011-4-28 18:31:18 | 显示全部楼层
呵呵,可以用圆代替点,矩形代表线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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