[osg-users] Is it possible to temporarily redirect the main camera of a view?

Werner Modenbach Werner.Modenbach at texion.eu
Thu Mar 9 06:10:24 PST 2017


Hi all.

Is it possible to redirect the main camera of a view temporarily to a FBO?
It is my intention to get a snapshot of the scene with a modified 
projection matrix.
I think about something like that:

osg::ref_ptr<osg::Camera> camera = view->getCamera();
osg::Camera::RenderTargetImplementation rti = 
camera->getRenderTargetImplementation();
osg::MatrixdprojectionMatrix=view->getCamera()->getProjectionMatrix();

camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);

osg::ref_ptr<osg::Image> fbImage=newosg::Image;

fbImage->allocateImage(width,height,1,GL_RGBA,GL_UNSIGNED_BYTE,1);

camera->attach(osg::Camera::COLOR_BUFFER,fbImage.get(),0,0);

camera->setProjectionMatrix(projectionMatrix*offsetMatrix);

view->frame();

camera->setRenderTargetImplementation(rti);
camera->detach(osg::Camera::COLOR_BUFFER );

camera->setProjectionMatrix(projectionMatrix);


I tried it but my screen gets updated on the frame()  call with the 
modified projection matrix
and the image stays black.

Thanks for any hints.

- Werner -

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20170309/86cd2f96/attachment-0002.htm>


More information about the osg-users mailing list