{
float width = image->s();
float height = image->t();
osg::Geometry* geometry = new osg::Geometry;
osg::Vec3Array* verts = new osg::Vec3Array(4);
(*verts)[0] = osg::Vec3(-width/2.0f, -height/2.0, 0.0f);
(*verts)[1] = osg::Vec3(width/2.0f, -height/2.0, 0.0f);
(*verts)[2] = osg::Vec3(width/2.0f, height/2.0, 0.0f);
(*verts)[3] = osg::Vec3(-width/2.0f,height/2.0, 0.0f);
geometry->setVertexArray( verts );
bool flip = image->getOrigin()==osg::Image::TOP_LEFT;
osg::Vec2Array* texcoords = new osg::Vec2Array(4);
(*texcoords)[0].set(0.0f,flip ? height-1.0f : 0.0f);
(*texcoords)[1].set(width-1.0f,flip ? height-1.0f : 0.0f);
(*texcoords)[2].set(width-1.0f,flip ? 0.0 : height-1.0f);
(*texcoords)[3].set(0.0f,flip ? 0.0 : height-1.0f);
geometry->setTexCoordArray(0, texcoords);
osg::Vec4Array* colors = new osg::Vec4Array(1);
(*colors)[0].set(1,1,1,1);
geometry->setColorArray( colors );
geometry->setColorBinding( osg::Geometry::BIND_OVERALL );
geometry->addPrimitiveSet( new osg::DrawArrays(GL_QUADS, 0, 4));
osg::StateSet* stateSet = geometry->getOrCreateStateSet();
osg::TextureRectangle* texture = new osg::TextureRectangle( image );
stateSet->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);
stateSet->setMode( GL_BLEND, 1 );
stateSet->setRenderBinDetails( 95, "RenderBin" );
stateSet->setAttributeAndModes( new osg::Depth(osg::Depth::ALWAYS,false), 1 );
osg::Geode* geode = new osg::Geode;
geode->addDrawable( geometry );
osg::AutoTransform* at = new osg::AutoTransform;
at->setAutoScaleToScreen( true );
at->setAutoRotateMode( osg::AutoTransform::ROTATE_TO_SCREEN );
at->addChild( geode );
return at;
}