Added screen capture handler to present3D, with the PrtScn button used for a single frame capture and 'm' for continuous frame capture.

The --screenshot filename command line option can be used to configure the name of the screen capture.
This commit is contained in:
Robert Osfield 2011-11-01 13:36:07 +00:00
parent 215512647c
commit 76396d0c12

View File

@ -645,7 +645,18 @@ int main( int argc, char **argv )
// register the handler for modifying the point size // register the handler for modifying the point size
PointsEventHandler* peh = new PointsEventHandler; PointsEventHandler* peh = new PointsEventHandler;
viewer.addEventHandler(peh); viewer.addEventHandler(peh);
// add the screen capture handler
std::string screenCaptureFilename = "screen_short.jpg";
while(arguments.read("--screenshot", screenCaptureFilename)) {}
osg::ref_ptr<osgViewer::ScreenCaptureHandler::WriteToFile> writeFile = new osgViewer::ScreenCaptureHandler::WriteToFile(
osgDB::getNameLessExtension(screenCaptureFilename),
osgDB::getFileExtension(screenCaptureFilename) );
osg::ref_ptr<osgViewer::ScreenCaptureHandler> screenCaptureHandler = new osgViewer::ScreenCaptureHandler(writeFile.get());
screenCaptureHandler->setKeyEventTakeScreenShot(osgGA::GUIEventAdapter::KEY_Print);
screenCaptureHandler->setKeyEventToggleContinuousCapture('m');
viewer.addEventHandler(screenCaptureHandler.get());
// osg::DisplaySettings::instance()->setSplitStereoAutoAjustAspectRatio(false); // osg::DisplaySettings::instance()->setSplitStereoAutoAjustAspectRatio(false);
float width = osg::DisplaySettings::instance()->getScreenWidth(); float width = osg::DisplaySettings::instance()->getScreenWidth();