osg::Group* run() { osg::Node* n1 = makeGeom( -5 ); osg::Node* n2 = makeGeom( 5 ); #if 0 osg::Program* p = new osg::Program(); p->addShader( new osg::Shader(osg::Shader::VERTEX, s_vert) ); p->addShader( new osg::Shader(osg::Shader::FRAGMENT, s_frag) ); #else VirtualProgram* p = new VirtualProgram(); p->setFunction("test", s_vp, ShaderComp::LOCATION_FRAGMENT_LIGHTING); #endif n1->getOrCreateStateSet()->setAttributeAndModes( p, 1 ); osg::Group* root = new osg::Group(); root->getOrCreateStateSet()->setRenderBinDetails( 0, "TraversalOrderBin" ); root->getOrCreateStateSet()->setMode(GL_LIGHTING,0); root->addChild( n1 ); root->addChild( n2 ); return root; }
osg::Group* run() { osg::Node* n1 = makeGeom( -5 ); osg::Node* n2 = makeGeom( 5 ); VirtualProgram* vp = new VirtualProgram(); vp->setFunction("test", s_vp, ShaderComp::LOCATION_FRAGMENT_LIGHTING); n1->getOrCreateStateSet()->setAttributeAndModes( vp, 1 ); osg::Group* root = new osg::Group(); root->getOrCreateStateSet()->setRenderBinDetails( 0, "TraversalOrderBin" ); root->getOrCreateStateSet()->setMode(GL_LIGHTING,0); root->addChild( n1 ); root->addChild( n2 ); return root; }