查看: 1100|回复: 3

请教Array关于cookbook书上的点选的例子

[复制链接]

该用户从未签到

发表于 2013-4-23 18:44:30 | 显示全部楼层 |阅读模式
在书中的第3章第8节的例子中,您是画了一个6面体实现的点选。采用的是GL_QUADS的绘制方式。但是,如果我把他改成GL_LINES或者是GL_POINTS的绘制方式。
         osg::ref_ptr<osg:rawElementsUInt> indices0 = new osg::DrawElementsUInt(GL_POINTS, 4);
        osg::ref_ptr<osg::DrawElementsUInt> indices1 = new osg::DrawElementsUInt(GL_POINTS, 4);
        osg::ref_ptr<osg::DrawElementsUInt> indices2 = new osg::DrawElementsUInt(GL_POINTS, 4);
        osg::ref_ptr<osg::DrawElementsUInt> indices3 = new osg::DrawElementsUInt(GL_POINTS, 4);
        osg::ref_ptr<osg::DrawElementsUInt> indices4 = new osg::DrawElementsUInt(GL_POINTS, 4);
        osg::ref_ptr<osg::DrawElementsUInt> indices5 = new osg::DrawElementsUInt(GL_POINTS, 4);


    (*indices0)[0] = 0; (*indices0)[1] = 1; (*indices0)[2] = 2; (*indices0)[3] = 3;
    (*indices1)[0] = 4; (*indices1)[1] = 5; (*indices1)[2] = 6; (*indices1)[3] = 7;
    (*indices2)[0] = 0; (*indices2)[1] = 1; (*indices2)[2]= 5; (*indices2)[3]= 4;
    (*indices3)[0]= 1; (*indices3)[1]= 2; (*indices3)[2]= 6; (*indices3)[3]= 5;
    (*indices4)[0]= 2; (*indices4)[1]= 3; (*indices4)[2]= 7; (*indices4)[3]= 6;
    (*indices5)[0]= 3; (*indices5)[1]= 0; (*indices5)[2]= 4; (*indices5)[3]= 7;


               geom->addPrimitiveSet( indices0.get() );
               geom->addPrimitiveSet(indices1.get());
        geom->addPrimitiveSet( indices2.get() );
        geom->addPrimitiveSet(indices3.get());
        geom->addPrimitiveSet( indices4.get() );
        geom->addPrimitiveSet(indices5.get());
其他代码没有变。我的理解是GL_QUADS,GL_LINES,GL_POINTS都是基本的图元,CTRL+鼠标左键时,应该都能够检测有交点,可是在GL_LINES,GL_POINTS模式下,if ( intersector->containsIntersections() )这句返回的是false,这是为什么????

该用户从未签到

发表于 2013-4-24 08:02:46 | 显示全部楼层
intersector->containsIntersections()  这个 检测 最少是要三角形 点和线是不能检测的

该用户从未签到

 楼主| 发表于 2013-4-24 11:04:43 | 显示全部楼层
看来这种方式只能自己去实现了

该用户从未签到

发表于 2013-4-24 12:05:55 | 显示全部楼层
对头
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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