Hi, Okay I have think I have more understood my problem: view1->addchild(prerenderpass->getCamera())//view 1 work well view2->addchild(createDebugTexturedQuad(prerenderpass->getoutPuttexture()) //view2 renders the texture as if was not updated by view1 prerender cam
I think the problem is that there's no dependency between the v1's prerender et the v2 prerender What should i do in order to garanty that v1 prerender to be done before v2 render? Message: 11 > Date: Wed, 17 Feb 2010 18:04:08 +0100 > From: Julien Valentin <julienvalenti...@gmail.com> > To: osg-users@lists.openscenegraph.org > Subject: [osg-users] Problem using osgqtcompositeviewer and prerender > camera with shader > Message-ID: > <7165cc0d1002170904s31e9a10es380ebacb0bd50...@mail.gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > Hello, > I'm using QtCompositeviewer to visualize 2 views: > -a main scene group with a prerender to texture node camera using FBO and a > shader > -a debug render of the shaded scene prerendered in the texture > > The Problem is that i always have the unshaded result in debugview....I > dont understand as my prerender to texture process work perfectly in a > simple viewer application... > Any advice would be welcome > > My code: > > class prerenderpass{ > Camera * _Camera; > > //output texture > TextureRectangle* _outputTexture; > > prerenderpass(Node * scene){ > > _outputTexture=new > TextureRectangle(osgDB::ReadImage("aRGBimagewithdesiredresolution");//avoid > details of texture init > // clearing > _Camera->setClearMask(GL_DEPTH_BUFFER_BIT); > //cam setted as ortho and pre rendering order 0 > // projection and view > _Camera->setProjectionMatrix(osg::Matrix::ortho2D(0,1,0,1)); > _Camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); > _Camera->setViewMatrix(osg::Matrix::identity()); > // viewport > _Camera->setViewport(0, 0, _TextureWidth, _TextureHeight); > _Camera->setRenderOrder(osg::Camera::PRE_RENDER,0); > > _Camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT); > _Camera->attach(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER), > _outputTexture.get()); > > update state set in scene in order to use my frag shader.... > > _Camera->addChild(scene); > } > > > > } > > main(){ > Group allthescene; > allthescene.addChild(osgDB::load("mainscene")); > prenrender pass(osgDB::load("object1")); > allthescene.addChild(prerenderpass.getCamera()) > > cviewer = new CompositeViewerQT (); > > > //////////////MAINVIEW/////////////////// > mainViewWidget->resize(640,480); > > mainViewWidget->setObjectName(QString::fromUtf8("mainView")); > > // setup views as usual > osg::ref_ptr<osgViewer::View> view = new osgViewer::View; > //allthescene > view->setSceneData(allthescene); > //perspective > view->getCamera()->setProjectionMatrixAsPerspective(30.0f, > static_cast<double>(640)/static_cast<double>(480), 1.0, 1000.0); > view->getCamera()->setViewport(new osg::Viewport(0,0,640,480)); > view->addEventHandler(new osgViewer::StatsHandler); > view->setCameraManipulator(new osgGA::TrackballManipulator); > view->getCamera()->setGraphicsContext(mainViewWidget->getGraphicsWindow > ()); > > cviewer->addView(view); > > > //get Texture from prerender pass > osg::TextureRectangle *pretex= _prerenderpass->getOutputTexture().get(); > //create an orthoView of a textured quad using this texture > osgViewer::View debugview=createViewWithTexturedQuad(pretex); > > cviewer->addView(debugview); > > } >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org