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

