问题
在使用osgearth2.10绘制曲线的过程中,绘制的曲线一直显示不了。
解决
最终发现是osgearth版本的原因,本人使用的是osgearth2.10版本,需要添加如下代码:
//osgearth画线测试 osgearth2.10后要添加这一行代码 不然featurenode不可用
osgEarth::GLUtils::setGlobalDefaults(viewer->getCamera()->getOrCreateStateSet());
测试代码
void osgDigitalEarth::test()
{
//osgearth画线测试 osgearth2.10后要添加这一行代码 不然featurenode不可用
osgEarth::GLUtils::setGlobalDefaults(viewer->getCamera()->getOrCreateStateSet());
const osgEarth::SpatialReference* geoSRS = mapNode->getMapSRS();
osgEarth::Annotation::FeatureNode* pathNode = 0;
osgEarth::Symbology::Geometry* path = new osgEarth::Symbology::LineString();
osg::Vec3d newYorkMapPoint(-74, 40.714, 10000);
osg::Vec3d TokyoMapPoint(139.75, 35.68, 10000);
osg::Vec3d NewYorkWorldPoint;
osg::Vec3d TokyoWorldPoint;
mapNode->getMapSRS()->transformToWorld(newYorkMapPoint,NewYorkWorldPoint);
mapNode->getMapSRS()->transformToWorld(TokyoMapPoint,TokyoWorldPoint);
path->push_back(newYorkMapPoint); // New York
path->push_back(TokyoMapPoint); // Tokyo
osgEarth::Features::Feature* pathFeature = new osgEarth::Features::Feature(path, geoSRS);
pathFeature->geoInterp()=osgEarth::GEOINTERP_GREAT_CIRCLE;
osgEarth::Symbology::Style pathStyle;
pathStyle.getOrCreate<osgEarth::Symbology::LineSymbol>()->stroke()->color()= osgEarth::Symbology::Color::Yellow;
pathStyle.getOrCreate<osgEarth::Symbology::LineSymbol>()->stroke()->width() = 1.0f;
pathStyle.getOrCreate<osgEarth::Symbology::LineSymbol>()->stroke()->smooth() = true;
pathStyle.getOrCreate<osgEarth::Symbology::LineSymbol>()->tessellationSize() = 75000;
pathStyle.getOrCreate<osgEarth::Symbology::AltitudeSymbol>()->clamping() = osgEarth::Symbology::AltitudeSymbol::CLAMP_TO_TERRAIN;
pathStyle.getOrCreate<osgEarth::Symbology::AltitudeSymbol>()->technique() = osgEarth::Symbology::AltitudeSymbol::TECHNIQUE_GPU;
pathStyle.getOrCreate<osgEarth::Symbology::RenderSymbol>()->depthOffset()->enabled() = true;
pathNode = new osgEarth::Annotation::FeatureNode(pathFeature, pathStyle);
mapNode->addChild(pathNode);
}