[osg-users] OpenSceneGraph with Qt multiple windowing problem

Robert Osfield robert.osfield at gmail.com
Wed Sep 19 11:58:00 PDT 2007


On 9/19/07, David Callu <ledocc at gmail.com> wrote:
> I can't reproduce your problem. I have 4 osg window in the mainWindow and
> all have the same frame rate.
> Can you describe you plateform driver vertion OSG, Qt
> OSG_OPTIMIZE and OSG_CAMERA_THREAD env var
> ...

Thanks for looking in to this.

> another think is thit is preferable to use osgViewer::CompositeViewer and
> osgViewer::View
> instead of osgViewer::Viewer when you have many scene and so many view.
> With this, all update/cull/draw/ operations are done with the Thread  Model
> choose in the osgViewer::CompositeViewer, and so do the best management of
> all
>  update/cull/draw/ operation of each View. This include to swapping OpenGL
> buffer all together.
>  I never could notice this but a thread on the ML talk about this. according
> to this thread,
> swapping all OpenGL buffer together give best performance.

For apps that have multiple windows and mulitple views on to one or
more scenes that CompositeViewer is the most apporpriate tool.

There is but though, running with multiple graphics context is not
possible when one use GraphicsWindowEmbedded - only single threaded,
single context per Viewer/CompositeViewer is possible.  If you have
multiple Windows then you need a separate Viewer/CompositeViewer for
each one.

The ideal is not to have to use GraphicsWindowEmbedded and provide a
full GraphicsWindow implementation for the specific windowing system -
for instance a GraphicsWindowQt would be appropriate.  I did
originally have a bash at writing a GraphicsWindowQt but Qt didn't
provide all the required hooks for controlling the OpenGL context in a
way that a complete GraphcsWindowQt could be achieved - bascially Qt's
OpenGL & threading support isn't quite a capable/flexible as it should
be.

There other approach would be to inherit the native windowing into a
GraphicsWindowWin32/Carbon/X11 in a way that adapts a Qt window via
its native windowing implementation.  There is a but in this...
GraphicsWindowX11 does yet support windowing inheritance - but
GraphicsWindowWin32 and Carbon do, so its all typically possible just
lack of time at my end has hindered this.

Others are welcome to chip in and implement window inheritance in
GraphicsWindowX11 :-)

Robert.



More information about the osg-users mailing list