Created
          September 26, 2017 18:57 
        
      - 
      
- 
        Save jasonbeverage/e6979de0faa251988261e2e49bd7f40a to your computer and use it in GitHub Desktop. 
    Little test to see if the feature model graph is being deleted.
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | /* -*-c++-*- */ | |
| /* osgEarth - Dynamic map generation toolkit for OpenSceneGraph | |
| * Copyright 2016 Pelican Mapping | |
| * http://osgearth.org | |
| * | |
| * osgEarth is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU Lesser General Public License as published by | |
| * the Free Software Foundation; either version 2 of the License, or | |
| * (at your option) any later version. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
| * IN THE SOFTWARE. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public License | |
| * along with this program. If not, see <http://www.gnu.org/licenses/> | |
| */ | |
| #include <osgViewer/Viewer> | |
| #include <osgEarth/Notify> | |
| #include <osgEarthUtil/EarthManipulator> | |
| #include <osgEarthUtil/ExampleResources> | |
| #include <osgEarth/MapNode> | |
| #include <osgEarth/ThreadingUtils> | |
| #include <osgEarth/Metrics> | |
| #include <osgEarth/NodeUtils> | |
| #include <osgEarthFeatures/FeatureModelGraph> | |
| #include <iostream> | |
| #define LC "[viewer] " | |
| using namespace osgEarth; | |
| using namespace osgEarth::Features; | |
| using namespace osgEarth::Util; | |
| int | |
| usage(const char* name) | |
| { | |
| OE_NOTICE | |
| << "\nUsage: " << name << " file.earth" << std::endl | |
| << MapNodeHelper().usage() << std::endl; | |
| return 0; | |
| } | |
| int | |
| main(int argc, char** argv) | |
| { | |
| osg::ArgumentParser arguments(&argc,argv); | |
| // help? | |
| if ( arguments.read("--help") ) | |
| return usage(argv[0]); | |
| float vfov = -1.0f; | |
| arguments.read("--vfov", vfov); | |
| // create a viewer: | |
| osgViewer::Viewer viewer(arguments); | |
| // Tell the database pager to not modify the unref settings | |
| viewer.getDatabasePager()->setUnrefImageDataAfterApplyPolicy( true, false ); | |
| // thread-safe initialization of the OSG wrapper manager. Calling this here | |
| // prevents the "unsupported wrapper" messages from OSG | |
| osgDB::Registry::instance()->getObjectWrapperManager()->findWrapper("osg::Image"); | |
| // install our default manipulator (do this before calling load) | |
| viewer.setCameraManipulator( new EarthManipulator(arguments) ); | |
| // disable the small-feature culling | |
| viewer.getCamera()->setSmallFeatureCullingPixelSize(-1.0f); | |
| // set a near/far ratio that is smaller than the default. This allows us to get | |
| // closer to the ground without near clipping. If you need more, use --logdepth | |
| viewer.getCamera()->setNearFarRatio(0.0001); | |
| if ( vfov > 0.0 ) | |
| { | |
| double fov, ar, n, f; | |
| viewer.getCamera()->getProjectionMatrixAsPerspective(fov, ar, n, f); | |
| viewer.getCamera()->setProjectionMatrixAsPerspective(vfov, ar, n, f); | |
| } | |
| // load an earth file, and support all or our example command-line options | |
| // and earth file <external> tags | |
| osg::Node* node = MapNodeHelper().load(arguments, &viewer); | |
| if ( node ) | |
| { | |
| osg::observer_ptr< FeatureModelGraph > fmg = findTopMostNodeOfType<FeatureModelGraph>(node); | |
| osg::observer_ptr<Map> map = MapNode::findMapNode(node)->getMap(); | |
| if (fmg.valid()) | |
| { | |
| OSG_NOTICE << "Got fmg" << std::endl; | |
| } | |
| viewer.setSceneData( node ); | |
| Metrics::run(viewer); | |
| OSG_NOTICE << "Deleting" << std::endl; | |
| viewer.setSceneData(0); | |
| if (fmg.valid()) | |
| { | |
| OSG_NOTICE << "Still have fmg with ref count " << fmg->referenceCount() << std::endl; | |
| } | |
| if (map.valid()) | |
| { | |
| OSG_NOTICE << "Map still around with " << map->referenceCount() << std::endl; | |
| } | |
| OSG_NOTICE << "Deleted" << std::endl; | |
| } | |
| else | |
| { | |
| return usage(argv[0]); | |
| } | |
| return 0; | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
            
Hi jason , thanks for example code.
but when i am running , there is nothing in the overlay window.
can u please help me to solve the problem.
No code was added or removed. just executing the shared code by u.
An early response will be appreciated.
Thanks again,
Soumen