int main( int argc, char** argv ) { osg::ref_ptr<osg::Geode> geode = new osg::Geode; geode->addDrawable( createSimpleGeometry() ); geode->getOrCreateStateSet()->setMode( GL_BLEND, osg::StateAttribute::ON ); geode->getOrCreateStateSet()->setRenderingHint( osg::StateSet::TRANSPARENT_BIN ); osg::ref_ptr<osg::Group> root = new osg::Group; root->addChild( geode.get() ); osgViewer::Viewer viewer; viewer.addEventHandler( new SelectModelHandler ); viewer.setSceneData( root.get() ); return viewer.run(); }
int main( int argc, char** argv ) { osg::ref_ptr<osg::Geode> geode = new osg::Geode; geode->addDrawable( createSimpleGeometry() ); geode->getOrCreateStateSet()->setAttributeAndModes( new osg::PolygonOffset(1.0f, 1.0f) ); osg::ref_ptr<osg::MatrixTransform> trans = new osg::MatrixTransform; trans->addChild( geode.get() ); trans->setMatrix( osg::Matrix::translate(0.0f, 0.0f, 1.0f) ); osg::ref_ptr<SelectModelHandler> selector = new SelectModelHandler; osg::ref_ptr<osg::Group> root = new osg::Group; root->addChild( trans.get() ); root->addChild( selector->createFaceSelector() ); // Caution: It has bound, too osgViewer::Viewer viewer; viewer.addEventHandler( selector.get() ); viewer.setSceneData( root.get() ); return viewer.run(); }