查看: 1703|回复: 5

派生自Drawable对象用opengl绘制的对象怎样拾取

[复制链接]

该用户从未签到

发表于 2012-11-25 14:00:36 | 显示全部楼层 |阅读模式
本帖最后由 smengq 于 2012-11-25 14:00 编辑

class MyShape : public osg:rawable
{
public:
        MyShape()
        {
        }
        MyShape( const MyShape& shape , const osg::CopyOp& copyop =
                osg::CopyOp::SHALLOW_COPY ) : osg::Drawable( shape , copyop )
        {
        }
        META_Object( test , MyShape )
                virtual void drawImplementation( osg::RenderInfo& ) const
        {
                glColor3f(1,1,1);
                glutSolidSphere(0.05,20, 20);
        }
protected :
        virtual ~MyShape()
        {
        }
};
以上是派生自osg::Drawable对象用opengl绘制的球体,将它加入到viewer里,用osg教程上class PickHandler那个拾取对象的类拾取,对象能显示但是拾取不到,网上说自定义Drawable需要实现Drawable::accept(PrimitiveFunctor&)等接口,才能支持OSG内部的求交、拣选等算法,怎样实现Drawable::accept(PrimitiveFunctor&)接口啊?里面该做些什么工作?大家能不能帮帮忙提供些指导,最好能写出相应的代码,急急急!

该用户从未签到

发表于 2012-11-26 10:03:51 | 显示全部楼层
指定Drawable 的包围盒等等, 最好的代码例子就是osg::ShapeDrawable 这个类的实现

该用户从未签到

 楼主| 发表于 2012-11-26 15:17:43 | 显示全部楼层
liuzhiyu123 发表于 2012-11-26 10:03
指定Drawable 的包围盒等等, 最好的代码例子就是osg::ShapeDrawable 这个类的实现

你好,非常感谢你的回复,我看了osg::ShaoeDrawable这个类,比较复杂,不是很理解,能不能就我上面给出的派生类写一下accept(PimitiveFunctor&)里面该怎样操作?麻烦大侠了,多谢体谅

该用户从未签到

发表于 2012-11-27 08:12:00 | 显示全部楼层
smengq 发表于 2012-11-26 15:17
你好,非常感谢你的回复,我看了osg::ShaoeDrawable这个类,比较复杂,不是很理解,能不能就我上面给出的 ...

它的实现里面已经写的很清楚了  完全就是获得你的图元的顶点的索引和顶点信息等等

该用户从未签到

 楼主| 发表于 2012-11-27 08:39:17 | 显示全部楼层
liuzhiyu123 发表于 2012-11-27 08:12
它的实现里面已经写的很清楚了  完全就是获得你的图元的顶点的索引和顶点信息等等

你好,我现在画的glutSolidSphere()怎样获得它的顶点索引和顶点信息?opengl与osg结合真是没啥经验,妄多给些指导,谢谢

该用户从未签到

发表于 2012-11-27 09:12:49 | 显示全部楼层
貌似得不到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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