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

Reply via email to