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

Reply via email to