robertosfield wrote:
> Hi Philippe,
> Is there any chance your application is caching a subgraph that isn't
> attached to the view/contexts that are destroyed so are effectively
> hidden by the releaseGLObjects() operation? If you re-attach such a
> subgraph to a new context it's handles to GL objects will all still be
> there but won't be valid.
>
> If you do cache subgraphs in this way then you need to call
> rootnode->releaseGLObjects(); on it prior to deleting the context, or
> call releaseGLObjectse() afterwards then osg::discardAllGLObjects();
>
Thank Robert,
I think you are pointing me in the right direction.
By caching do you mean such a scenario:
1- realize and render a scene
2- detach a subgraph
3- remove View / close the GraphicsContext
4- create a new View with some scene and reattach the subgraph from step 2
Note that in my scenario (i.e. creating/detroying the "same" view+scene
multiple times) the CompositeViewer itself remains the same. Views get added
and removed but there is only one View at any time in that viewer (so I
probably should not use CompositeViewer but I don't think it is relevant and I
might need it in the future).
PS : Just tried to do the suggested cleanups after creating the view.
Code looks like this
Code:
viewer->addView(view);
// needed when adding a view a 2nd time (osg will not realize the viewer
again...)
if (!viewer->isRealized()) {
viewer->realize();
}
view->releaseGLObjects();
unsigned int contextID =
view->getCamera()->getGraphicsContext()->getState()->getContextID();
osg::discardAllGLObjects(contextID);
But I still get the invalid enumerant error followed by a crash.
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=63715#63715
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org