Hello together,

I am facing some problems with the setUpDepthPartition(..) function.


Code:
int main(int argc, char **argv)
{
        osg::setNotifyLevel(osg::NOTICE);

        // use an ArgumentParser object to manage the program arguments.
        osg::ArgumentParser arguments(&argc, argv);

        // read the scene from the list of file specified commandline args.
        osg::ref_ptr<osg::Node> scene = osgDB::readNodeFiles(arguments);

        if (!scene)
        {
                std::cout << argv[0] << ": requires filename argument." << 
std::endl;
                scene = osgDB::readNodeFile("cessna.osg");
        }

        // construct the viewer.
        osgViewer::CompositeViewer viewer(arguments);

        if (arguments.read("-3") || viewer.getNumViews() == 0)
        {

                osg::GraphicsContext::WindowingSystemInterface* wsi = 
osg::GraphicsContext::getWindowingSystemInterface();
                if (!wsi)
                {
                        osg::notify(osg::NOTICE) << "Error, no 
WindowSystemInterface available, cannot create windows." << std::endl;
                        return 1;
                }

                unsigned int width, height;
                
wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, 
height);

                osg::ref_ptr<osg::GraphicsContext::Traits> traits = new 
osg::GraphicsContext::Traits;
                traits->x = 100;
                traits->y = 100;
                traits->width = 1000;
                traits->height = 800;
                traits->windowDecoration = true;
                traits->doubleBuffer = true;
                traits->sharedContext = 0;

                osg::ref_ptr<osg::GraphicsContext> gc = 
osg::GraphicsContext::createGraphicsContext(traits.get());
                if (gc.valid())
                {
                        osg::notify(osg::INFO) << "  GraphicsWindow has been 
created successfully." << std::endl;

                        // need to ensure that the window is cleared make sure 
that the complete window is set the correct colour
                        // rather than just the parts of the window that are 
under the camera's viewports
                        gc->setClearColor(osg::Vec4f(0.2f, 0.2f, 0.6f, 1.0f));
                        gc->setClearMask(GL_COLOR_BUFFER_BIT | 
GL_DEPTH_BUFFER_BIT);
                }
                else
                {
                        osg::notify(osg::NOTICE) << "  GraphicsWindow has not 
been created successfully." << std::endl;
                }

                // view one
                {
                        osgViewer::View* view = new osgViewer::View;
                        view->setName("View one");
                        viewer.addView(view);

                        view->setSceneData(scene.get());
                        view->getCamera()->setName("Cam one");
                        view->getCamera()->setViewport(new osg::Viewport(0, 0, 
traits->width / 2, traits->height / 2));
                        view->getCamera()->setGraphicsContext(gc.get());
                        view->setCameraManipulator(new 
osgGA::TrackballManipulator);

                        // add the state manipulator
                        osg::ref_ptr<osgGA::StateSetManipulator> 
statesetManipulator = new osgGA::StateSetManipulator;
                        
statesetManipulator->setStateSet(view->getCamera()->getOrCreateStateSet());

                        view->addEventHandler(statesetManipulator.get());

                        view->addEventHandler(new osgViewer::StatsHandler);
                        view->addEventHandler(new osgViewer::HelpHandler);
                        view->addEventHandler(new osgViewer::WindowSizeHandler);
                        view->addEventHandler(new osgViewer::ThreadingHandler);
                        view->addEventHandler(new 
osgViewer::RecordCameraPathHandler);


                        bool b = 
view->setUpDepthPartitionForCamera(view->getCamera()); // same for 
setUpDepthPartition()
                }

                // view two
                {
                        osgViewer::View* view = new osgViewer::View;
                        view->setName("View two");
                        viewer.addView(view);

                        view->setSceneData(scene.get());
                        view->getCamera()->setName("Cam two");
                        view->getCamera()->setViewport(new 
osg::Viewport(traits->width / 2, 0, traits->width / 2, traits->height / 2));
                        view->getCamera()->setGraphicsContext(gc.get());
                        view->setCameraManipulator(new 
osgGA::TrackballManipulator);

                        // add the handler for doing the picking
                        view->addEventHandler(new PickHandler());

                }

                // view three
                {
                        osgViewer::View* view = new osgViewer::View;
                        view->setName("View three");
                        viewer.addView(view);

                        view->setSceneData(osgDB::readNodeFile("cessna.osg"));

                        view->getCamera()->setName("Cam three");
                        
view->getCamera()->setProjectionMatrixAsPerspective(30.0, double(traits->width) 
/ double(traits->height / 2), 1.0, 1000.0);
                        view->getCamera()->setViewport(new osg::Viewport(0, 
traits->height / 2, traits->width, traits->height / 2));
                        view->getCamera()->setGraphicsContext(gc.get());
                        view->setCameraManipulator(new 
osgGA::TrackballManipulator);
                }

        }


        while (arguments.read("-s")) { 
viewer.setThreadingModel(osgViewer::CompositeViewer::SingleThreaded); }
        while (arguments.read("-g")) { 
viewer.setThreadingModel(osgViewer::CompositeViewer::CullDrawThreadPerContext); 
}
        while (arguments.read("-c")) { 
viewer.setThreadingModel(osgViewer::CompositeViewer::CullThreadPerCameraDrawThreadPerContext);
 }

        // run the viewer's main frame loop
        return viewer.run();
}




This code ist from the osg examples (composite viewer). I just tried to add the 
depth partition - but all I get is a totally black screen...

Can you give me a hint, what I am doing wrong? By the way I know, that this 
example does not need depth partitions ;)

Thank you very much!

Cheers,
Markus

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62219#62219





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to