OSG加载模数量多了之后Vector问题

千杯不醉-sen 2018-11-13 08:58:17
环境:VS2012+OSG3.4.0,Debug模式,模型文件格式:*.osg、*.ive







创建模型的接口:


// idl
[id(2)] HRESULT CreateModel([in] IIPosition** position, [in] BSTR fileName, [in, defaultvalue(1.0)] DOUBLE scale, [in, defaultvalue(0.0)] DOUBLE minVisibilityDistance, [in, defaultvalue(4500.0)] DOUBLE maxVisibilityDistance, [in, defaultvalue(L"")] BSTR parentGroupID, [in, defaultvalue(L"")] BSTR description, [out, retval] IITerrainModel** pVal);

// 实现接口
STDMETHODIMP CICreator::CreateModel(IIPosition** position, BSTR fileName, DOUBLE scale, DOUBLE minVisibilityDistance, DOUBLE maxVisibilityDistance, BSTR parentGroupID, BSTR description, IITerrainModel** pVal)


接口测试了,没找到什么问题。单个创建模型也不会有问题,数据量多了之后会出现如上问题。

哪位知道是什么原因吗?
...全文
218 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ricky0123 2018-11-29
  • 打赏
  • 举报
回复
引用 15 楼 千杯不醉-sen 的回复:
[quote=引用 14 楼 zhao4zhong1 的回复:] 看调用堆栈不行,只有写日志到文件。
找到原因了,OSG多线的问题。使用用户自定义事件搞定。[/quote] 老哥能具体说说你的解决办法吗,我现在要实现使用子线程来加载和卸载节点,结果就会不定时地出现和你类似的问题,使用调用堆栈找错误行直接就到main函数的最后一行了,没什么用,想问问老哥解决的是个什么问题
千杯不醉-sen 2018-11-15
  • 打赏
  • 举报
回复
引用 14 楼 zhao4zhong1 的回复:
看调用堆栈不行,只有写日志到文件。
找到原因了,OSG多线的问题。使用用户自定义事件搞定。
赵4老师 2018-11-15
  • 打赏
  • 举报
回复
看调用堆栈不行,只有写日志到文件。
赵4老师 2018-11-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhao4zhong1/article/details/53078924 老司机找bug的十年心路历程
千杯不醉-sen 2018-11-14
  • 打赏
  • 举报
回复
引用 10 楼 smwhotjay 的回复:
你的封装bug
没找出是什么样的BUG
千杯不醉-sen 2018-11-14
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
http://blog.csdn.net/zhao4zhong1/article/details/53078924 老司机找bug的十年心路历程
感觉太空虚,不能解决眼下问题
zgl7903 2018-11-13
  • 打赏
  • 举报
回复
FFFF -1 应该是某个索引之类的吧? 访问之前先判定其有效性, 点击中断 结合调用堆栈修改解决之


千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
理解讨论之前请先学会如何观察
嗯,我先学习一下调试。
赵4老师 2018-11-13
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察
千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复
看到了一篇文章,和我的问题有些类似,但是我单个模型加载是好的,多了报错了,应该不是插件的原因。 https://blog.csdn.net/qing101hua/article/details/53197967
千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复
改为Release,加载模型的时候报错如下:
zgl7903 2018-11-13
  • 打赏
  • 举报
回复
从提示看 可能是内存不足了?


千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
好的,我尝试一下跟踪调试,看能否找到问题的根源。
赵4老师 2018-11-13
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
smwhotjay 2018-11-13
  • 打赏
  • 举报
回复
你的封装bug
千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复
测试发现,添加多个模型放在Viewer.Run之前就是好的,Viewer.Run起来之后,在加模型,不定期的会出现bug。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧