Show
Ignore:
Timestamp:
10/21/14 17:10:27 (3 days ago)
Author:
robert
Message:

Added shaders to support experimental shader based displacement mapping technique osgTerrain::ShaderTerrain?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgViewer/CompositeViewer.cpp

    r13389 r13429  
    267267    } 
    268268 
    269     // now do a eventTraversal to see if any events might require a new frame. 
    270     eventTraversal(); 
     269    // check if events are available and need processing 
     270    if (checkEvents()) return true; 
    271271 
    272272    if (_requestRedraw) return true; 
    273273    if (_requestContinousUpdate) return true; 
    274274 
     275    return false; 
     276} 
     277 
     278 
     279bool CompositeViewer::checkEvents() 
     280{ 
     281    for(RefViews::iterator itr = _views.begin(); 
     282        itr != _views.end(); 
     283        ++itr) 
     284    { 
     285        osgViewer::View* view = itr->get(); 
     286        if (view) 
     287        { 
     288            // check events from any attached sources 
     289            for(View::Devices::iterator eitr = view->getDevices().begin(); 
     290                eitr != view->getDevices().end(); 
     291                ++eitr) 
     292            { 
     293                osgGA::Device* es = eitr->get(); 
     294                if (es->getCapabilities() & osgGA::Device::RECEIVE_EVENTS) 
     295                { 
     296                    if (es->checkEvents()) return true; 
     297                } 
     298 
     299            } 
     300        } 
     301    } 
     302     
     303    // get events from all windows attached to Viewer. 
     304    Windows windows; 
     305    getWindows(windows); 
     306    for(Windows::iterator witr = windows.begin(); 
     307        witr != windows.end(); 
     308        ++witr) 
     309    { 
     310        if ((*witr)->checkEvents()) return true; 
     311    } 
     312     
    275313    return false; 
    276314} 
     
    875913    if (_views.empty()) return; 
    876914 
     915#if 1 
     916    double cutOffTime = _frameStamp->getReferenceTime(); 
     917#else     
    877918    double cutOffTime = (_runFrameScheme==ON_DEMAND) ? DBL_MAX : _frameStamp->getReferenceTime(); 
     919#endif 
    878920 
    879921    double beginEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());