Hi John,

I haven't done what you want before but the way I'd tackle it would be
to use a Camera post draw callback to call
state.applyAttribute(texture); then
image->readImageFromCurrentTexture(..).

Robert.

On 5 June 2012 22:08, John Kaniarz <[email protected]> wrote:
> My program has 4 render to texture cameras that get composited into the frame 
> buffer via custom shader.  I want to make a screen capture of one of the 
> texture as a response to an event.
>
> Attaching an Image to the camera works, but it copies the data to system 
> memory after every frame. Not just when I need it.
>
> I tried calling camera->attach(image); viewer->frame(); 
> osgDB::writeImageFile(image); camera->attach(texture); in my event handler, 
> but the image saved was blank.
>
> I also tried calling texture->setImage(image), but that image is never 
> updated with fresh data.
>
> I also tried calling osg::Image::readPixels() in a Camera::postDrawCallback. 
> This doesn't work because RenderStage detaches the FBO before the callback 
> and I get a screenshot of the framebuffer instead of the texture. Would 
> calling RenderStage::setDisableFboAfterRender(false) fix this? Whats the 
> place to call that function from. Will this screw something up when I try to 
> render to the actual framebuffer?
>
> Is there another option I haven't thought of? Perhaps manually attaching the 
> FBO and calling readPixels?
>
> Thanks,
> John
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=48059#48059
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to