查看: 1193|回复: 4

请教动态添加车辆模型的方法

[复制链接]

该用户从未签到

发表于 2013-3-7 14:39:40 | 显示全部楼层 |阅读模式
本帖最后由 qxz78 于 2013-3-7 14:40 编辑

    我使用MFC+CCoreOSG.cpp,想实现动态添加车辆模型,将里面的替换场景数据函数取消掉开头的 移除,直接添加,
void CCoreOSG::ReplaceSceneData(std::string filename)
{
        // 移掉mRoot中所有的数据,这些数据将会被自动释放掉,不用手动搞它
        //m_Root ->removeChildren(0, m_Root ->getNumChildren()) ;

        // 加入要置换的模型
        m_Model = osgDB::readNodeFile(filename);

        // 优化
        //osgUtil::Optimizer optimizer;
        //optimizer.optimize(m_Model.get());
        //optimizer.reset();

        // 获取指针并添加为一个子节点
        m_Root->addChild(m_Model.get());
  }

出现提示错误:
       file: c:\Program files\Microsoft Visual Studio 10.0\VC\include\vector Line:99
       Expression: vector iterator not incrementable
请问怎么办呀?

该用户从未签到

发表于 2013-3-7 14:45:37 | 显示全部楼层
访问越界,检查添加模型时与场景更新没有冲突

该用户从未签到

 楼主| 发表于 2013-3-7 15:10:25 | 显示全部楼层
我把添加模型的程序加入
void COSGCore:ostFrameUpdate()
{
        // 帧后操作可在这里做一下
        if(test)
        {
                ReplaceSceneData("Car.ive");
                test = false;

        }
}
又中断在afxwin1.inl
_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
        { CWinThread* pThread = AfxGetThread();
                return pThread != NULL ? pThread->GetMainWnd() : NULL; }
提示:
中的 0x77b615de 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

该用户从未签到

发表于 2013-3-7 16:49:36 | 显示全部楼层
多线程冲突了,你可以看看我以前写的这个:http://bbs.osgchina.org/forum.ph ... &extra=page%3D1

该用户从未签到

 楼主| 发表于 2013-3-7 18:39:50 | 显示全部楼层
好的,谢谢,研究一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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