查看: 3498|回复: 3

osg osgart 与QT界面集成 多线程问题

[复制链接]

该用户从未签到

发表于 2013-4-3 22:12:19 | 显示全部楼层 |阅读模式

首先有个主窗口widget,其内部左侧放了一个嵌入osg viewer的widget,右侧放一些操作功能按钮等,使用的array cookbook中的osgqt_thread来做的viewer widget,刚开始设置的thread model为SingleThreaded, 这样Render Thread启动的地方就会出现问题运行时错误,看起来像render thread刷新界面造成线程访问冲突,偶尔能够运行成功但是CPU占用几乎是满的,后来我又改成用boost的thread通过调用类成员方法来执行界面的刷新循环,却报了很奇怪的错误“can not access ViewWidget‘s private member”,这个问题也挺奇怪编译无法通过,后来又通过boost thread来启动一个boost bind这样没有了编译错误,但是还是出现运行时错误,当我把thread model调成CullThreadPerCameraDrawThreadPerContext 时是运行没问题的,但是osg绘制界面狂闪。。且无法响应键盘操作。
其实把启动新的线程这个地方注释掉是可以正常显示的,但是看起来却无法响应键盘消息,内部场景对象无法运动,其实键盘消息是响应到了,只不过界面没能刷新,当我最小化在还原我就发现界面变化了。。

求解释 求方法!!  还望array大哥关注下!

该用户从未签到

发表于 2013-4-7 08:22:21 | 显示全部楼层
您的osg viewer的widget 是怎么实现的?

该用户从未签到

 楼主| 发表于 2013-4-7 16:23:48 | 显示全部楼层
liuzhiyu123 发表于 2013-4-7 08:22
您的osg viewer的widget 是怎么实现的?

使用的array cookbook中的osgqt_thread来做的viewer widget ,从目前看来可能因为启动过几次机器是不是显卡的问题,现在不闪烁了,但是仍然有几率存在崩溃掉,是不是OSG对多线程的支持本身就是有问题?

该用户从未签到

发表于 2013-4-7 16:26:37 | 显示全部楼层
是您的程序的问题,跟多线程有什么关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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