我要发帖 回复

中级会员

24

主题

149

积分

0

专家分

:

私信
发表时间 : 2008-1-13 14:21:47 | 浏览 : 1834    评论 : 8
我定义了另一个OPENGL类:
class CMySub:public vsChannel::Subscriber
{
CMySub::CMySub()
{

CMySub::~CMySub()
{

        m_channel->unref();   //通道
        m_string->unref();    //字符
}
CMySub::configure()
{
// add a post draw subscriber to our main channel so we can draw some
                // overlay graphics
vpChannel *channel = vpChannel::find("myChannel2");     //主通道
assert(channel);
channel->ref();
       
channel->addSubscriber(vsChannel::EVENT_POST_DRAW, this);
       
// add pre and post draw subscribers to our binoculars channel.  We'll
// use these subscribers to write to the stencil buffer and enable /
// disable the stencil test before and after rendering the channel.
m_channel = vpChannel::find("myChannel3");      //望远镜通道
assert(m_channel);
m_channel->ref();
       
m_channel->addSubscriber(vsChannel::EVENT_PRE_DRAW, this);
m_channel->addSubscriber(vsChannel::EVENT_POST_DRAW, this);
.........................
return vsgu::SUCCESS;

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

    /**
     * inherited pre / post draw notification method.  Note here that since
     * we're using this function for both channels that we'll need to add some
     * extra logic to organize our code here.
     */
void CMySub::notify(vsChannel::Event event, const vsChannel *channel,
        vrDrawContext *context)
{
  //实现OPENGL。。。。。。。。
}

};
然后我在主循环里面初始化函数定义一个CMySub类的指针*mySubscriber:
BOOL CTestDlg::OnInitDialog()
{
..........................
CMySub *mySubscriber= new CMySub();
mySubscriber->configure();
//static CMySub mySubscriber;
//mySubscriber.configure();
.........................
}
调用CMySub *mySubscriber= new CMySub();
mySubscriber->configure();运行时会出问题
DEBUG时到mySubscriber->configure();就出问题,是不是configure()函数的返回值有问题?
configure()函数里面的返回值是:return vsgu::SUCCESS;

[ 本帖最后由 hunanlyp 于 2008-1-13 02:26 PM 编辑 ]

DEBUG时的错误

DEBUG时的错误

运行时的错误

运行时的错误

最近VR访客

hunanlyp 评论于2008-1-13 14:24:54
我参考的是obuil大大这个帖子做的:
“今天做后视镜遇到问题,总是通不过,大家帮看一下”
http://www.52vr.com/bbs/viewthread.php?tid=789
我也是一执行:
一执行这个函数:mirrorChan->configure(); 就运行死机
hunanlyp 评论于2008-1-13 14:26:23
obuil大大,我照你说的:CMySub *mySubscriber= new CMySub();
也没有解决运行死机的问题啊。。。
请obuil大大帮我看看吧!
hunanlyp 评论于2008-1-13 14:28:57
是不是我这两句话:
CMySub *mySubscriber= new CMySub();
mySubscriber->configure();
放的位置有问题啊?
我是放在初始对话框类的初始化函数里面的,因为我VP是基于MFC的对话框开发的
hunanlyp 评论于2008-1-13 15:46:29
没有这两句,程序就没事,加了这两句调用OPENGL类就出问题,
为什么啊?
。。。。。。。。。。。。
hunanlyp 评论于2008-1-13 16:00:57
MFC下OPENGL类到底怎么加啊。。。
hunanlyp 评论于2008-1-13 22:17:16
高手救救我吧。。。。。。。。
obuil 评论于2008-1-13 23:02:05
我刚刚仔细看了一遍,具体是执行到哪一句死掉的?
gaara0909 评论于2011-10-12 23:51:59
遇见了几年前前辈们遇到的问题,在MFC单文档框架下写了个subscriber类,类中重载了两个notify函数,想在post_draw加入opengl代码,基本和楼主的程序差不多,连报错都是一样的。程序就是在view类里用成员变量m_pSubscriber 添加订阅者,到这调试还没问题,可是到了第一帧vpKernel->endFrame就报异常了,直接死了,大大们有没有遇见过这样的问题啊,什么地方出错了

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

GMT+8, 2021-12-2 06:28 AM

返回顶部