|
首先有个主窗口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大哥关注下! |
|