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