There's something I forgot to mention : The fix we agreed isn't working when there is more than one view with different viewport size but sharing the same graphic context.
The context ID is equal but the viewport size is different for the 2 views, so the logo is updated twice. I explain my case, I'm using a composite viewer with "X" views sharing all the same graphic context (saving memory) but with different sizes. And I will use the logo plugin with this kind of configuration. Unfortunately I don't have an ideal solution for now. Kind regards, 2009/7/21 Alexandre Amalric <[email protected]> > > Hi Robert, > > I found an other bug with the logo plugin when using shadows (PSSM + OSG > latest svn). When shadows are used there is 2 calls from : > > > virtual bool cull(osg::NodeVisitor *visitor, osg::Drawable* drawable, > osg::State*) const > 1 time with the default visitor and 1 time with the visitor from the shadow > implementation wich has a specific traversal mask and a specific viewport > (in my case 4096*4096) so the logo viewport is updated twice because of the > code : > > if > ( vp->width() != logos->getViewport()->width() || > > vp->height() != logos->getViewport()->height() ) > > { > > logos->getViewport()->setViewport( vp->x(), vp->y(), vp->width(), > vp->height() ); > > logos->dirtyDisplayList(); > > } > > } > Maybe we could check the _traversalMask from the visitor before updating > the logo viewport, what do you think about ? > I know you're not a great fan from this plugin, but I find it very usefull. > > Kind regards, > > 2009/7/15 Alexandre Amalric <[email protected]> > > Hi Robert, >> >> *Is the problem you are seeing triggered by the logo being used when >> multiple graphics windows are used?* >> >> Yes it is. >> >> *Could you try svn/trunk and let me know how you get on.* >> * * >> I Tried this morning latest SVN and it's working great with this >> simple solution. >> >> Kind regards, >> >> 2009/7/14 Robert Osfield <[email protected]> >> >> Hi Alexandre, >>> >>> I've decided to merged your change rather than look for a more complex >>> and more general solution, a more general solution can come later. >>> I've tweaked your changes a little to include returning of true when >>> the logo is traversed on a window it's not assigned to so the logo >>> will get culled. >>> >>> Could you try svn/trunk and let me know how you get on. >>> >>> Cheers, >>> Robert >>> >>> On Mon, Jul 13, 2009 at 5:34 PM, Robert Osfield<[email protected]> >>> wrote: >>> > Hi Alexandre, >>> > >>> > I believe your changes suggest a deeper problem with the >>> > design/implementation of the logo. The plugin is a very early hack >>> > that hasn't really been fully updated to take advantage of various >>> > modern OSG features, I don't have time right now for a full rewrite >>> > though. >>> > >>> > Is the problem you are seeing triggered by the logo being used when >>> > multiple graphics windows are used? >>> > >>> > It does look like code assumes a single view per graphics window, >>> > something that isn't always true with the OSG these days. In the >>> > Producer days when this plugin was written one couldn't easily have >>> > multiple views per window, but these days it's trivial and common >>> > place thing to do. If the logo was attached in a window with multiple >>> > views that all shared the same scene graph we'd end up with the >>> > viewport being updated multiple times, with the last view's viewport >>> > taking precedence. >>> > >>> > One possible solution would be to have the callback ignore the cull >>> > visitor's viewport and use the whole graphics windows dimensions, so >>> > the logo would be placed relative to the window rather than the last >>> > rendered viewport. >>> > >>> > All in all though, putting a logo in the scene graph is not the best >>> > way of tackling the task of adding logo's - it'd be much better to use >>> > a slave camera attached to the viewer/viewer. >>> > >>> > Thougts? >>> > >>> > Robert. >>> > >>> > On Mon, Jul 6, 2009 at 3:57 PM, Alexandre Amalric< >>> [email protected]> wrote: >>> >> Hi osg-users, >>> >> >>> >> I'm using osg svn version 2.9.5 and I've apparently found a bug in >>> osgPlugin >>> >> logo. >>> >> >>> >> When using more than one view logosCullCallback function is called >>> without >>> >> checking context ID from the cull visitor is equal to logo _contextID >>> >> variable. It involves updating logo's viewport with different sizes. >>> >> So I made a fix well working, at least the way I use the plugin. >>> >> >>> >> I'm not used to post fix so I attached the modified cpp files in >>> current >>> >> mail, hope it helps... >>> >> >>> >> Code I added is indicated with comment : >>> >> >>> >> // AA DD/MM/YY Fix >>> >> Kind regards >>> >> -- >>> >> Alexandre AMALRIC Ingénieur R&D >>> >> =================================== >>> >> PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille >>> >> http://www.pixxim.fr >>> >> >>> >> _______________________________________________ >>> >> 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 >>> >> >> >> >> -- >> Alexandre AMALRIC Ingénieur R&D >> =================================== >> PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille >> http://www.pixxim.fr >> > > > > -- > Alexandre AMALRIC Ingénieur R&D > =================================== > PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille > http://www.pixxim.fr > -- Alexandre AMALRIC Ingénieur R&D =================================== PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille http://www.pixxim.fr
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

