Hi The fllowing code can be run correct in the OSG1.0, and export the image
named a.bmp correct, it can be run correct in OSG2.0 too , but the a.bmp is
incorrect , it appear all gray.I don't know what's the difference from 1.0 to
2.0 at image.Wait your response .Sorry for my poor English~~~ #include
<osgViewer/Viewer>
#include <osg/Camera>
#include <osg/Image>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgDB/Registry>
#include <osgGA/GUIEventHandler>
class ImageHandler : public osgGA::GUIEventHandler
{
public:
ImageHandler(){};
~ImageHandler(){};
bool handle( const osgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter& aa )
{
osgViewer::Viewer* viewer =
dynamic_cast<osgViewer::Viewer*>( &aa );
if (!viewer)
return false;
switch(ea.getEventType())
{
case(osgGA::GUIEventAdapter::KEYDOWN):
{
if(ea.getKey() == 'c')
{
osg::ref_ptr<osg::Image> image = new osg::Image;
image->setAllocationMode(osg::Image::AllocationMode::USE_MALLOC_FREE);//USE_MALLOC_FREE
image->readPixels(0,0,1280,1024,GL_RGBA,GL_UNSIGNED_BYTE);
osgDB::writeImageFile(*image,"a.bmp");
}
}
default:
return false;
}
}
};int
main( int, char ** )
{
osgViewer::Viewer viewer;
viewer.addEventHandler( new ImageHandler());
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
if (!viewer.getSceneData())
{
osg::notify( osg::FATAL ) << "Unable to load data file. Exiting." <<
std::endl;
return 1;
} return viewer.run();}
_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/