我要发帖 回复

管理员

735

主题

2万

积分

30

专家分

忠于职守杰出贡献鼓励

兴趣点(最多三项):

建模技术

私信
发表时间 : 2006-10-27 21:16:24 | 浏览 : 2832    评论 : 8
我的vp线程是用这个类做的:(这个类跟vega的zsVegaView类几乎一样的形式)
http://www.52vr.com/bbs/viewthread.php?tid=683&extra=page%3D2

开辟线程,并且没有继承vpApp,

并且新建了一个类:

class CMirrorSimChan : public vsChannel::Subscriber  
{
public:

    /**
     * Constructor
     */
    CMirrorSimChan():m_object(NULL),m_texture( NULL)
    {
        
      
    }
        ~CMirrorSimChan()
    {
        m_texture->unref();
            m_object->unref();
    }
/**
     * Configure my app
     */
    int configure() {

               
        // pre-configuration

        // configure vega prime system first
       // vsApp::configure();



        vpObject *m_object =NULL;
                        m_object=vpObject::find("car");
        assert(m_object);
                if(m_object==NULL) AfxMessageBox("m_object not find");
        //        m_object->ref();
  
        vpGeometry::const_iterator_texture it=NULL, ite=NULL;
                it=m_object->begin_texture();
                ite= m_object->end_texture();
                if(it==NULL||ite==NULL)
               AfxMessageBox("texture not find");
                 
      //    for (it=m_object->begin_texture();it!=ite && !m_texture;++it)
   // for (it;it!=ite;++it)
//                {
    //        if (!strcmp((*it)->getName(), "hubcap.rgb"))
//                AfxMessageBox("dfa ");//        m_texture = (vrTexture*)it;
                       
   //     }
               m_texture = *it;
        // get the width and height of the texture so we don't copy more data
        // than we can hold
       //  assert(m_texture);
  
      //  m_texture->getDimensions(&m_width, &m_height);
      //  m_texture->ref();

       // subsribe to post draw events for the mirror channel
        vpChannel *channelMirror = vpChannel::find("leftSightChan");
        assert(channelMirror);
       channelMirror->addSubscriber(vpChannel::EVENT_POST_DRAW, this);  

  
        return vsgu::SUCCESS;

        }

       
         virtual void notify(vsChannel::Event, const vsChannel *,
        vsTraversalCull *) {}

   
     
    virtual void notify(vsChannel::Event, const vsChannel *channel,
       vrDrawContext *context)
    {
    }



};


我在vp线程的主循环体前
CMirrorSimChan* mirrorChan;       
mirrorChan->configure();


一执行这个函数:mirrorChan->configure(); 就运行死机

[ 本帖最后由 obuil 于 2006-10-27 09:20 PM 编辑 ]

最近VR访客

jjjjxd 评论于2006-10-27 22:35:29
乖乖,VP没看过,VEGA比这简单,不过少了那个刚体动力学模块。。
obuil 评论于2006-10-27 23:15:41
解决了 犯了个低级错误:
CMirrorSimChan* mirrorChan;
改为:CMirrorSimChan* mirrorChan =new CMirrorSimChan();
独山子 评论于2006-10-28 01:27:29
学习!
逆水行舟,不进则退。
hunanlyp 评论于2008-1-13 14:31:27
请教obuil一个问题
vp线程的主循环体前是设么位置?
我照你说的方法做运行时还是出了问题
参见我的帖子:
http://www.52vr.com/bbs/viewthre ... amp;extra=#pid28499
hunanlyp 评论于2008-1-13 15:52:30
高手帮我看看我的帖子吧。。。。
http://www.52vr.com/bbs/viewthread.php?tid=5077
menghewei 评论于2008-8-27 17:46:23
猎鹰ly 评论于2008-9-2 01:39:30
hao!!!!

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-2-25 07:11 PM

返回顶部