Hello, I have a GUI application that recycles ContextIDs. After recently porting the app to use osgViewer in place of SceneView I have a puzzling issue that involves internal caching of texture objects. I have a Texture2D instance shared between two or more contexts in different windows. If one of the contexts is closed and a new one opened in it's place (using the same context ID), the texture is no longer valid in the new context (objects appear white and the OpenGL error 'invalid operation' appears in the console). Using an OpenGL debugger indicates that the error occurs in osg::Texture::applyTexImage2D_subload when glTexSubImage2D is called.
I can work around the problem by explicitly calling dirtyTextureObject() on every texture every time a context is being closed down, but I would imagine there is a better way since this is quite messy. I have tried a suggestion made in a previous thread which is to call this upon context closure: viewer->getSceneData()->releaseGLObjects( graphicsContext->getState() ); graphicsContext->getState()->reset(); osg::flushAllDeletedGLObjects( graphicsContext->getState()->getContextID() ); Unfortunately this does not solve the problem. Any ideas? --------------- Ross Anderson [EMAIL PROTECTED] Group 106 - Active Optical Systems MIT Lincoln Laboratory (781) 981-3344 _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

