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
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org