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;
}
Esempio n. 2
0
    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;
    }