Hi Sherman,

Finally had a chance to look at your repro, and I agree it is an OSG
bug.  It's a consequence of the unique handling of glProgram state
within OpenGL; I thought we'd fixed this before, but you seem to have
uncovered a different failure vector.

In the repro example you gave me, since I didn't have a osgdem earth
model, I just used a earth-sized sphere, note the line below for the
easy workaround:

//osg::ref_ptr<osg::Node> loadedModel =
osgDB::readNodeFile("c:/brokaw/system/earth/earth.ive");
osg::Geode* geode( new osg::Geode() );
geode->addDrawable(new osg::ShapeDrawable(new
osg::Sphere(osg::Vec3(0,0,0), 6.371e6f )));
geode->getOrCreateStateSet()->setAttribute( new osg::Program );   //
<--- workaround for shader leakage
osg::ref_ptr<osg::Node> loadedModel = geode;

That "empty" osg::Program above on the scene root explicitly forces the
scene to fixed-function.  

Without it, the problem seems that fixed-function default isn't enforced
til a cull traversal, so there's this hole that the scene can accidently
be affected by a leaking osg::Program binding.

I'll be submitting a real fix rsn.

cheers
-- mew




> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:osg-users-
> [EMAIL PROTECTED] On Behalf Of sherman wilcox
> Sent: Thursday, February 14, 2008 8:48 PM
> To: OpenSceneGraph Users
> Subject: Re: [osg-users] traversal question w/latest developerrelease-
> blacknodes
> 
> mew - Didn't realize there was a potential shader connection till a
> tad later. Anyway, I spent more time on this yesterday and managed to
> build a sample app that is much smaller and less complicated than the
> app I originally found the problem in. There's a bit of propriety code
> in this sample app - nothing I wouldn't mind sharing with you if you
> want to take a peek.
> 
> The thing that bugs me is why is this shader effecting other osg
> nodes. Now, there could most certainly be a bug in my code somewhere -
> but I'm using OSG code - I don't *think* I'm going outside of OSG and
> doing messing with OpenGL states. So, if I'm using all OSG code then I
> would think that even if I've got a bad shader, or doing something I
> shouldn't be - then that error should be confined to that node and its
> children and should NOT travel to its siblings.

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to