|
根据OSG中MFC的例子和网上的相关资料,建了一个MFC单文档的程序,程序在调用叠加1000个placenode的时候,经常会出现异常崩溃的情况,怀疑是自己没有控制好线程,请教大神在做叠加操作的时候应该如何控制?以解决这类问题。谢谢!
程序启动后让地球运动,然后触发如下代码,即可出现上述问题。
- osg::ref_ptr<MapNode> mapNode = MapNode::findMapNode(mModel);
- if ( !mapNode )
- return usage("a");
- const SpatialReference* geoSRS = mapNode->getMapSRS()->getGeographicSRS();
- CString s;
- vNode.resize(GPS_COUNT);
- for( int i = 0; i < GPS_COUNT; i++)
- {
- Style pin;
- pin.getOrCreate<IconSymbol>()->url()->setLiteral( "../../OSGEarthE/Data/placemark32.png" );
- pin.getOrCreate<TextSymbol>()->font() = std::string("../../OSGEarthE/Data/simsun.ttc");
- pin.getOrCreate<TextSymbol>()->encoding() = TextSymbol::ENCODING_UTF8;
- GeoPoint gp;
- int nLon = rand() % 180;
- int nLat = rand() % 90;
- gp.set(geoSRS, nLon,nLat, 0, ALTMODE_RELATIVE);
-
- s.Format("NO.%d", i);
- osg::ref_ptr<osgEarth::Annotation::PlaceNode> pPlaceNode = new PlaceNode(mapNode, gp, s.GetBuffer(0) , pin);
- s.ReleaseBuffer();
-
- mGPS->addChild(pPlaceNode.get());
- //vNode.push_back(pPlaceNode);
- vNode[i] = pPlaceNode;
-
- }
复制代码 |
-
debug下错误信息
-
堆栈信息
|