Hello,

unfortunately this does not work for me.
Maybe I have to do something special in the FirstPass_ or setup the camera in a 
special way -- I don't know.

Can someone clarify is here something special missed or what is right way to 
exchange the FBO render target the light-way (without triggering heavy 
setCameraRequiresSetup()) ?

I do it exactly the same way:

Code:

      if (cam && cv)
      {
         mImage= mRttTarget->getImage(osg::Texture::FRONTFACE);

         if (mImage)
         {
            if (mInitialFrame) {
               mInitialFrame= false;
               cam->attach( osg::Camera::COLOR_BUFFER, mImage);
            }
            else {
#if 0
               cam->attach(osg::Camera::COLOR_BUFFER, mImage);
               // heavy way, TODO: light-weight FBO render target exchange 
possible?
               cv->getCurrentRenderBin()->getStage()->setCameraRequiresSetUp( 
true);
#else
               // cheap fbo-target exchange will not work.
               osg::FrameBufferObject* fbo =
                  cv->getCurrentRenderBin()->getStage()->getFrameBufferObject();
               if (fbo) {
                  
fbo->setAttachment(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER),
                     
osg::FrameBufferAttachment(static_cast<osg::Texture2D*>(mRttTarget)));
               } 
#endif
            }
         }
      }




Cheers,
Alexej


J.P. Delport wrote:
> Hi Alexej & Sergey,
> 
> also note that if you only want to change a texture attachment and the 
> formats and sizes stay the same, you can in the cull callback change it. 
> Like so:
> 
> 
> Code:
> void KeepHistoryPass::CameraCullCallback::operator()(osg::Node* node, 
> osg::NodeVisitor* nv)
> {
> osg::Camera* fboCam = dynamic_cast<osg::Camera*>( node );
> osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(nv);
> 
> if (fboCam && cv && !hp_->FirstPass_)
> {
>   osg::FrameBufferObject* fbo = 
> cv->getCurrentRenderBin()->getStage()->getFrameBufferObject();
>   if (fbo) {
> 
>     
> fbo->setAttachment(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER),
> 
>     
> osg::FrameBufferAttachment(hp_->OutTextures_[hp_->OverwriteIndex_].get()));
>   }
> }
> traverse(node, nv);
> }
> 
> 
> 
> cheers
> jp
> 
> 
> -- 
> This message is subject to the CSIR's copyright terms and conditions, e-mail 
> legal notice, and implemented Open Document Format (ODF) standard. 
> The full disclaimer details can be found at 
> http://www.csir.co.za/disclaimer.html.
> 
> This message has been scanned for viruses and dangerous content by 
> MailScanner, 
> and is believed to be clean.
> 
> _______________________________________________
> osg-users mailing list
> 
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 
>  ------------------
> Post generated by Mail2Forum

Code:




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





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to