Hi Delport,
I am attaching the code i put inside the keyboard handler. I believe it will
provide you with more insight to suggest.
****************************************************************'
class BlurPassHandler : public osgGA::GUIEventHandler
{
public:
BlurPassHandler(int key,BlurPass *bp,osg::Node *node):
_bp(bp),
_node(node),
_key(key)
{
}
bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter&)
{
if (ea.getHandled()) return false;
switch(ea.getEventType())
{
case(osgGA::GUIEventAdapter::KEYUP):
{
osg::notify(osg::NOTICE)<<"event handler"<<std::endl;
if(ea.getKey() == _key)
{
//find the node with the name in the parameter
FindNamedNode fnn("HUD");
_node->accept(fnn);
if(!_bp->shaderActive())
_bp->activateShader();
else
{
osg::notify(osg::NOTICE)<<"About to
flip"<<std::endl;
_bp->flip();
//the hud cameara texture
//has to be updated, either
//after updating the shader
//or after doing the flip
}
if(fnn.getNode() != NULL)
{
osg::notify(osg::NOTICE)<<"HUD found"<<std::endl;
//assign to local node variable
_node = fnn.getNode();
osg::Geode *_geode =
dynamic_cast<osg::Geode*>(_node);
if(_geode)
{
osg::notify(osg::NOTICE)<<"geode
found"<<std::endl;
osg::Geometry *_geometry =
dynamic_cast<osg::Geometry*>(_geode->getDrawable(0));
if(_geometry)
{
osg::notify(osg::NOTICE)<<"geometry
found"<<std::endl;
}
osg::StateSet *_stateset =
_geometry->getOrCreateStateSet();
_stateset->setTextureAttributeAndModes(0,
_bp->getOutputTexture().get(),osg::StateAttribute::ON);
}
}
else
{
osg::notify(osg::NOTICE)<<"HUD not
found"<<std::endl;
}
return true;
}
break;
}
default:
break;
}
return false;
}
BlurPass *_bp;
osg::Node *_node;
int _key;
};
*****************************************************************
Thank you!
Cheers,
Sajjadul
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=34831#34831
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org