Show
Ignore:
Timestamp:
10/22/10 14:28:50 (4 years ago)
Author:
robert
Message:

Cleaned up main loop, so it's more readable, seperating out the paging and non paging implementations

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osganalysis/osganalysis.cpp

    r11847 r11848  
    233233    } 
    234234 
    235     typedef std::vector< osg::ref_ptr<osg::Node> > Models; 
    236     unsigned int modelIndex = 0; 
    237     Models models; 
    238  
    239     osg::ref_ptr<osg::Group> group = new osg::Group; 
    240     viewer.setSceneData(group); 
    241  
    242     osg::ref_ptr<osg::OperationThread> databasePagingThread; 
    243     osg::ref_ptr<DatabasePagingOperation> databasePagingOperation; 
     235 
    244236    if (readDatabasesInPagingThread) 
    245237    { 
     238        // load the models using a paging thread and use the incremental compile operation to 
     239        // manage the compilation of GL objects without breaking frame. 
     240 
     241        unsigned int modelIndex = 0; 
     242 
     243        osg::ref_ptr<osg::OperationThread> databasePagingThread; 
     244        osg::ref_ptr<DatabasePagingOperation> databasePagingOperation; 
     245 
    246246        databasePagingThread = new osg::OperationThread; 
    247247        databasePagingThread->startThread(); 
     
    254254        databasePagingThread->add(databasePagingOperation.get()); 
    255255 
    256     } 
    257     else 
    258     { 
    259         for(FileNames::iterator itr = fileNames.begin(); 
    260             itr != fileNames.end(); 
    261             ++itr) 
    262         { 
    263             // not an option so assume string is a filename. 
    264             osg::ref_ptr<osg::Node> node = osgDB::readNodeFile( *itr ); 
    265             if(node.valid()) 
    266             { 
    267                 if (node->getName().empty()) node->setName( *itr ); 
    268  
    269                 node = sceneGraphProcessor->process(node.get()); 
    270  
    271                 models.push_back(node.get()); 
    272             } 
    273         } 
    274  
    275         group->addChild(models[modelIndex++].get()); 
    276  
    277     } 
    278  
    279     viewer.realize(); 
    280  
    281     double timeOfLastMerge = viewer.getFrameStamp()->getReferenceTime(); 
    282  
    283     osg::ref_ptr<CustomCompileCompletedCallback> compileCompletedCallback; 
    284  
    285     while(!viewer.done()) 
    286     { 
    287         viewer.frame(); 
    288  
    289         double currentTime = viewer.getFrameStamp()->getReferenceTime(); 
    290  
    291         if (readDatabasesInPagingThread) 
    292         { 
     256        osg::ref_ptr<osg::Group> group = new osg::Group; 
     257        viewer.setSceneData(group); 
     258 
     259        viewer.realize(); 
     260 
     261        double timeOfLastMerge = viewer.getFrameStamp()->getReferenceTime(); 
     262 
     263        while(!viewer.done()) 
     264        { 
     265            viewer.frame(); 
     266 
     267            double currentTime = viewer.getFrameStamp()->getReferenceTime(); 
     268 
    293269            if (!databasePagingOperation && 
    294270                modelIndex<fileNames.size() && 
     
    319295            } 
    320296        } 
    321         else 
    322         { 
     297 
     298    } 
     299    else 
     300    { 
     301        // load the models directly and then just use the IncrementalCompileOperation to 
     302        // compile the GL objects for us. 
     303        typedef std::vector< osg::ref_ptr<osg::Node> > Models; 
     304        Models models; 
     305        unsigned int modelIndex = 0; 
     306 
     307        for(FileNames::iterator itr = fileNames.begin(); 
     308            itr != fileNames.end(); 
     309            ++itr) 
     310        { 
     311            // not an option so assume string is a filename. 
     312            osg::ref_ptr<osg::Node> node = osgDB::readNodeFile( *itr ); 
     313            if(node.valid()) 
     314            { 
     315                if (node->getName().empty()) node->setName( *itr ); 
     316 
     317                node = sceneGraphProcessor->process(node.get()); 
     318 
     319                models.push_back(node.get()); 
     320            } 
     321        } 
     322 
     323        osg::ref_ptr<osg::Group> group = new osg::Group; 
     324        group->addChild(models[modelIndex++].get()); 
     325 
     326        viewer.setSceneData(group); 
     327 
     328        viewer.realize(); 
     329 
     330        double timeOfLastMerge = viewer.getFrameStamp()->getReferenceTime(); 
     331 
     332        osg::ref_ptr<CustomCompileCompletedCallback> compileCompletedCallback; 
     333 
     334        while(!viewer.done()) 
     335        { 
     336            viewer.frame(); 
     337 
     338            double currentTime = viewer.getFrameStamp()->getReferenceTime(); 
     339 
    323340            if (!compileCompletedCallback && 
    324341                modelIndex<fileNames.size() &&