Show
Ignore:
Timestamp:
06/05/07 21:40:07 (7 years ago)
Author:
robert
Message:

Added CompositeViewer? support into FLTK example

Files:
1 modified

Legend:

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

    r6829 r6850  
    55 
    66#include <osgViewer/Viewer> 
     7#include <osgViewer/CompositeViewer> 
    78#include <osgViewer/StatsHandler> 
    89#include <osgGA/TrackballManipulator> 
     
    7879} 
    7980 
    80  
    8181class ViewerFLTK : public osgViewer::Viewer, public AdapterWidget 
    8282{ 
     
    9595}; 
    9696 
     97class CompositeViewerFLTK : public osgViewer::CompositeViewer, public AdapterWidget 
     98{ 
     99    public: 
     100 
     101        CompositeViewerFLTK(int x, int y, int w, int h, const char *label=0): 
     102            AdapterWidget(x,y,w,h,label) 
     103        { 
     104            setThreadingModel(osgViewer::CompositeViewer::SingleThreaded); 
     105        } 
     106 
     107    protected: 
     108        virtual void draw() { frame(); } 
     109 
     110}; 
     111 
     112 
    97113int main( int argc, char **argv ) 
    98114{ 
     
    104120    } 
    105121 
     122    osg::ArgumentParser arguments(&argc, argv); 
     123 
    106124    // load the scene. 
    107     osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile(argv[1]); 
     125    osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments); 
    108126    if (!loadedModel) 
    109127    { 
     
    113131 
    114132 
    115     ViewerFLTK viewerWindow(100,100,800,600); 
    116     viewerWindow.resizable(&viewerWindow); 
     133    if (arguments.read("--CompositeViewer")) 
     134    { 
     135        unsigned int width = 1024; 
     136        unsigned int height = 800; 
    117137 
    118     viewerWindow.setSceneData(loadedModel.get()); 
    119     viewerWindow.setCameraManipulator(new osgGA::TrackballManipulator); 
    120     viewerWindow.addEventHandler(new osgViewer::StatsHandler); 
    121      
    122     viewerWindow.show(); 
    123      
    124     Fl::set_idle(idle_cb); 
    125      
    126     return Fl::run(); 
     138        CompositeViewerFLTK viewerWindow(100,100,width,height); 
     139        viewerWindow.resizable(&viewerWindow); 
     140         
     141        { 
     142            osgViewer::View* view1 = new osgViewer::View; 
     143            view1->getCamera()->setGraphicsContext(viewerWindow.getGraphicsWindow()); 
     144            view1->getCamera()->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(width)/static_cast<double>(height/2), 1.0, 1000.0); 
     145            view1->getCamera()->setViewport(new osg::Viewport(0,0,width,height/2)); 
     146            view1->setCameraManipulator(new osgGA::TrackballManipulator); 
     147            view1->setSceneData(loadedModel.get()); 
     148             
     149            viewerWindow.addView(view1); 
     150        } 
     151         
     152        { 
     153            osgViewer::View* view2 = new osgViewer::View; 
     154            view2->getCamera()->setGraphicsContext(viewerWindow.getGraphicsWindow()); 
     155            view2->getCamera()->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(width)/static_cast<double>(height/2), 1.0, 1000.0); 
     156            view2->getCamera()->setViewport(new osg::Viewport(0,height/2,width,height/2)); 
     157            view2->setCameraManipulator(new osgGA::TrackballManipulator); 
     158            view2->setSceneData(loadedModel.get()); 
     159             
     160            viewerWindow.addView(view2); 
     161        } 
     162 
     163        viewerWindow.show(); 
     164 
     165        Fl::set_idle(idle_cb); 
     166 
     167        return Fl::run(); 
     168    } 
     169    else 
     170    { 
     171 
     172        ViewerFLTK viewerWindow(100,100,800,600); 
     173        viewerWindow.resizable(&viewerWindow); 
     174 
     175        viewerWindow.setSceneData(loadedModel.get()); 
     176        viewerWindow.setCameraManipulator(new osgGA::TrackballManipulator); 
     177        viewerWindow.addEventHandler(new osgViewer::StatsHandler); 
     178 
     179        viewerWindow.show(); 
     180 
     181        Fl::set_idle(idle_cb); 
     182 
     183        return Fl::run(); 
     184    } 
    127185}