Hi Morne, I'm rather perplexed that it didn't just work. The clear of the graphics context/window should be done before everything else runs, the construction order should have no effect on this as it's a feature hard-wired into GraphicsContext. Is there a chance that you've disabled the clear of the colour and depth buffer for the cameras?
Robert. On Tue, Jan 27, 2009 at 11:18 AM, Morné Pistorius <mpistorius....@googlemail.com> wrote: > Hi Robert, > > Thanks for the info. I had a look at the osgcamera example and > changed my code to call > > getGraphicsWindow()->setClearColor(osg::Vec4f(0.0f,1.0f,0.0f,1.0f)); > getGraphicsWindow()->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) > > in the constructor of my derived osgViewer::CompositeViewer. This > clears the viewer to green, but now none of my views show up inside > the composite viewer, the whole viewer is just green. When I add a > view, it is created like this: > > osgViewer::View * pView = new osgViewer::View; > osg::Camera * pCamera = pView->getCamera(); > > pCamera->setGraphicsContext( getGraphicsWindow() ); > pCamera->setClearColor( osg::Vec4( 0.05, 0.05, 0.2, 1.0 ) ) ; > > addView( pView ); > > ...compute viewport dimentions, etc... > > pCamera->setViewport( new osg::Viewport( Left, Bottom , > BestWindowWidth, BestWindowHeight ) ); > pCamera->setProjectionMatrixAsPerspective( 30.0f, double( > BestWindowWidth ) / double( BestWindowHeight ), 1.0f, 10000.0f ); > > It is as if the call to clear the viewer comes after the call to > render the views and I just see the cleared result. Removing the > setClearColor/setClearMask in the constructor shows my views again. > > Is it necessary to create a new GraphicsContexts for the cameras as in > the osgcameras example? I tried that, without success, so I guess I > must be missing something else. Attached is what I see. > > Thanks again for the help! > > Regards, > Morne > > > On Mon, Jan 26, 2009 at 4:30 PM, Robert Osfield > <robert.osfi...@gmail.com> wrote: >> Hi Morne, >> >> This isn't a bug, rather a limitation of using camera's to clear the >> background colour of the graphics context. If your camera's don't >> cover the whole window then you have tell the GraphicsContext to do a >> clear - something it doesn't do by default for efficiency reasons - as >> the vast majority of apps have camera's covering the whole graphics >> context. >> >> The osgcamera example has an example of enabling the clear of the >> GraphicsContext. It's simply a case of doing a >> window->setClearMask(..) and window->setClearColor(..); >> >> Robert. >> >> On Mon, Jan 26, 2009 at 4:20 PM, Morné Pistorius >> <mpistorius....@googlemail.com> wrote: >>> Hi guys, >>> >>> I am having trouble clearing the background on a composite viewer. I >>> have a composite viewer derived from QGLWidget to which I add and >>> remove views dynamically. The viewports are automatically tiled into a >>> number of rows and columns inside the viewer window to make the best >>> use of the available space, with a small gap between each view. >>> >>> My problem is that I can't clear the background of the composite >>> viewer when I add/remove views. For example, if I had 4 views tiled >>> in a 2x2 matrix, and remove one view, I my tiler keeps two views in >>> the top row and 1 in the bottom row with an empty square where the >>> fourth view was. Although the fourth view was removed, I still see >>> some data drawn from the last frame that the removed viewer displayed. >>> Also, the gaps between the views shows garbage. I attached two >>> screenshots showing the problem. >>> >>> Is there something that I could call on the composite viewer to clear >>> the entire window? It could also be a Qt problem, since the composite >>> viewer is derived from QGLWidget. If I resize the window after >>> removing the fourth view, then the background is cleared. I tried >>> calling repaint()/paintGL() on the QtWidget, but that didn't help. >>> >>> I would appreciate pointers from people who have successfully used >>> composite viewers with Qt before. >>> >>> Thanks a lot! >>> >>> Morne >>> >>> _______________________________________________ >>> osg-users mailing list >>> osg-users@lists.openscenegraph.org >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>> >>> >> _______________________________________________ >> osg-users mailing list >> osg-users@lists.openscenegraph.org >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org