查看: 4730|回复: 3

osg(MFC程序)中怎么使用glewInit函数?

[复制链接]

该用户从未签到

发表于 2010-11-5 09:01:56 | 显示全部楼层 |阅读模式
我自己从Drawable派生了一个类,它的实现需要用到opengl扩展函数,我以前在opengl里都是用的glewInit,可是我在osg中使用了glewInit,要么就出现glewInit失败,要么就导致程序崩溃,换了很多地方都不行。

该用户从未签到

发表于 2010-11-5 12:37:53 | 显示全部楼层
glewInit的初始化需要设置OpenGL环境makeCurrent(),因此您可以在Drawable的绘制函数中完成这个工作,用一个变量来控制让它只执行一次即可

该用户从未签到

 楼主| 发表于 2010-11-5 18:06:34 | 显示全部楼层
2# array
我照你说的改了,不过在下面这里出错了,
static void _callthreadstartex(void)
{
    _ptiddata ptd;           /* pointer to thread's _tiddata struct */
    /* must always exist at this point */
    ptd = _getptd();
    /*
        * Guard call to user code with a _try - _except statement to
        * implement runtime errors and signal support
        */
    __try {
            _endthreadex (
                ( (unsigned (__CLR_OR_STD_CALL *)(void *))(((_ptiddata)ptd)->_initaddr) )
                ( ((_ptiddata)ptd)->_initarg ) ) ;
    }
    __except ( _XcptFilter(GetExceptionCode(), GetExceptionInformation()) )
    {
            /*
                * Should never reach here
                */
            _exit( GetExceptionCode() );
    } /* end of _try - _except */
}
具体地方是(((_ptiddata)ptd)->_initarg))这句,调试提示访问冲突,我用的是网上的osgMFC
单文档的那个框架。估计是多线程出问题了,能不能在MFC下做个单线程的osg框架呢?

该用户从未签到

 楼主| 发表于 2010-11-6 13:40:58 | 显示全部楼层
2# array 今天把问题解决了,我先把程序转到win32下,成功了。我猜测是线程函数有冲突,然后我把_beginThread函数改成了AfxBeginThread函数,这样就行了,谢谢你了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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