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

Reply via email to