On 21.08.2017 14:59, Robert Osfield wrote:
Hi Sandro,
On 21 August 2017 at 13:21, Sandro Mani <[email protected]
<mailto:[email protected]>> wrote:
A less invasive alternative could be to introduce a new singleton
called OpenGLSettings or similar which contains just the three
settings glContextVersion, glContextFlags, glContextProfileMask.
I don't see how this is different, if you are setting setting a
default that users might not realize is now being set differently,
it's just the same issue expressed in a slightly different way.
Mh yeah my quick reaction was just that as opposed to other fields in
the DisplaySettings, the desired OpenGL context version is likely to be
a constant thoughout the lifetime of the application.
--
Currently when the osgViewer::Viewer is constructed and run() is
called without the viewer explictly setting up the graphics context
it's fallback to using the setUpViewAcrossAllScreens() and within this
implementation when it sets up the Traits it passes the DisplaySetting
assigned to the Viewer or DisplaySetting::instance() will be used if
none is assigned. This fallback is functionally the same as you are
after and this already will be working.
For places where the windows are being explicitly set up then they
will be creating a Traits themselves and at this point I'm happy for
them to need to explicitly specify the settings or pass in the
DisplaySettings they want to use as defaults.
Admittedly, I'm not very familiar with OpenSceneGraph, my main
motivation digging into this is just to get osgEarth working again under
Linux, as it has been broken for the past couple of years ever since it
started requiring GLSL330+.
That said, I found it confusing and it took me some time to figure out
how to actually set the glContextVersion etc. The DisplaySettings had no
effect, and only after digging into the code I realized that it was
because osgEarth creates its version without specifying a
DisplaySettings instance [1]. After becoming more familiar with the
internal workings, I suppose this can be classified as a bug in
osgEarth, but I feel that a user new to OSG could expect that the
settings specified in the global DisplaySettings singleton actually have
an effect on the Traits if it is constructed without a specific ds
instance passed.
Just my thoughts.
Sandro
[1]
https://github.com/gwaldron/osgearth/blob/master/src/osgEarth/Capabilities.cpp
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org