Thanks Joakim, I believe that sharing the stateset will be required here
I am trying to attach a simple shader but sharing the stateset is not giving me the result that i am supposed to have.... ****************************** ref_ptr<Geode> capsuleGeode = new Geode; ref_ptr<Capsule> capsuleShape = new Capsule(Vec3f(3,0,0),1,2); ref_ptr<ShapeDrawable> capsuleDrawable = new ShapeDrawable(capsuleShape.get()); capsuleGeode->addDrawable(capsuleDrawable.get()); ref_ptr<StateSet> capsuleState = capsuleGeode->getOrCreateStateSet(); //create the shader parameters ref_ptr<Program> capsuleProgramObject = new Program; ref_ptr<Shader> capsuleVertexObject = new Shader(*(Shader::readShaderFile(Shader::VERTEX,"shaderSRC/gooch.vert"))); ref_ptr<Shader> capsuleFragmentObject = new Shader(*(Shader::readShaderFile(Shader::FRAGMENT,"shaderSRC/gooch.vert"))); capsuleProgramObject->addShader(capsuleVertexObject.get()); capsuleProgramObject->addShader(capsuleFragmentObject.get()); //create a new stateset //with the default setting capsuleState->setAttribute(capsuleProgramObject.get()); //Passing the uniform variable representing the texture to the shader capsuleState->addUniform(new osg::Uniform("LightPosition",osg::Vec3(0,0,10))); capsuleState->addUniform(new osg::Uniform("SurfaceColor",osg::Vec3(0.75,0.75,0.75))); capsuleState->addUniform(new osg::Uniform("WarmColor",osg::Vec3(1,0,0))); capsuleState->addUniform(new osg::Uniform("CoolColor",osg::Vec3(0,0,0.6))); capsuleState->addUniform(new osg::Uniform("DiffuseWarm",0.45f)); capsuleState->addUniform(new osg::Uniform("DiffuseCool", 0.45f)); root->addChild(capsuleGeode.get()); **************************** Any hint? Sajjad On Wed, Oct 15, 2008 at 10:56 PM, Joakim Simonsson <[EMAIL PROTECTED]>wrote: > On Wed, 15 Oct 2008 22:43:14 +0200, ami guru <[EMAIL PROTECTED]> > wrote: > > Hello forum >> >> Is there any difference between these following: >> >> 1. osg::ref_ptr<osg::StateSet> nodess3 = new >> StateSet((myshapegeode3->getOrCreateStateSet())); >> 2. osg::ref_ptr<osg::StateSet> >> nodess3((myshapegeode3->getOrCreateStateSet())); >> > > Yes they differ. But do you want to do? Copy the stateset? > > If you want to share the stateset (for example, edit myshapegeode3's > stateset) do this: > > osg::ref_ptr<osg::StateSet> nodess3 = myshapegeode3->getOrCreateStateSet(); > > If you want to copy it, do this: > > osg::ref_ptr<osg::StateSet> nodess3 = > > myshapegeode3->getOrCreateStateSet()->clone(osg::CopyOp::DEEP_COPY_ALL)); > > > -- > Joakim Simonsson > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org