|
楼主 |
发表于 2011-4-21 22:50:16
|
显示全部楼层
本帖最后由 口口广大 于 2011-4-22 00:27 编辑
- class CompositeViewerQT : public osgViewer::CompositeViewer, public AdapterWidget
- {
- public:
- CompositeViewerQT(QWidget * parent = 0, const char * name = 0, const QGLWidget * shareWidget = 0, WindowFlags f = 0):
- AdapterWidget( parent, name, shareWidget, f )
- {
- setThreadingModel(osgViewer::CompositeViewer::SingleThreaded);
- setCameraManipulator(new osgGA::TrackballManipulator);
- osg::Node* loadedModel= osgDB::readNodeFile("地形.osga"); //报错
- osg::Node* loadedModel= osgDB::readNodeFile("cow.ive"); //没错
- setSceneData(loadedModel.get());
- connect(&_timer, SIGNAL(timeout()), this, SLOT(updateGL()));
- _timer.start(10);
- }
- virtual void paintGL()
- {
- frame();
- }
- protected:
- QTimer _timer;
- };
复制代码
今天查了一天,问题定位在vpb生成的地形数据上。
所有的操作不做,只是加载了一个vpb生成的osga格式的地形文件,就会破坏共享区,把这个node换成普通的其他三维模型,则不会出现错误。
怀疑是否vpb使用的动态分页(PageLoad)动态的加载或释放内存,导致了进程的内存共享区受到破坏?
另外我使用的vpb是比较老的版本,而且不是用现在开发的osg2.9.6版本进行编译。 |
|