Hello again Robert, I modified the osgcompositeviewer example and setClearMask() works as expected when creating a new graphics context with proper traits, etc.
I suspect my problem comes from using the graphics context created by osgViewer::GraphicsWindowEmbedded (this is the graphics context I pass to my cameras) in our Qt app. It will take a bit of time to test my theory, because I didn't build OSG with Qt support and need a proper Qt install. I will do this now and see if I can reproduce the error in osgviewerQt. I just thought I would mention it, maybe this hint could shed some light on the problem. Cheers, Morne On Tue, Jan 27, 2009 at 11:43 AM, Morné Pistorius <mpistorius....@googlemail.com> wrote: > Not intentionally, no. I added > > pCamera->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); > > to the camera attached to the view just to make sure, but it didn't > change anything. It sounds like a bug then, I will try and recreate > it in a simple example. > > Cheers, > Morne > > > On Tue, Jan 27, 2009 at 11:36 AM, Robert Osfield > <robert.osfi...@gmail.com> wrote: >> 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 >> > _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org