Hi Sandro, On 21 August 2017 at 17:21, Sandro Mani <[email protected]> wrote:
> Are you building the OSG with defaults? Or are you building the OSG for > just GL3? > > %cmake -DBUILD_OSG_EXAMPLES=ON -DBUILD_DOCUMENTATION=ON > -DOSG_GL1_AVAILABLE=ON -DOSG_GL2_AVAILABLE=ON -DOPENGL_PROFILE=GLCORE > -DOPENGL_HEADER1="#include <GL/gl.h>" > That's a bit of ugly mix. Things should work with just: cmake . make -j 4 # 4 is number of cores available When you using the OPENGL_PROFILE it'll set the OSG_*_AVAILABLE options for you, but in general build with defaults unless you specifically need a particular feature set. > > What viewer are using with osgEarth? osgEarth itself is typically used as > NodeKit with end user application creating their own viewer and with it > graphics contexts. This means even if osgEarth's own example programs > changed the way they create graphics context you'd end up with issues. > > Running with osgearth_viewer, I get two calls to > osgViewer::GraphicsWindowX11::init. The first one where, I assume, it > tries to determine the capabilities of hardware/driver in use, and this > calls Traits without a DisplaySettings instance: > > #0 osgViewer::GraphicsWindowX11::init (this=this@entry=0x1004ad330) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/GraphicsWindowX11.cpp:915 > #1 0x00007f3e23ae4b50 in osgViewer::GraphicsWindowX11::GraphicsWindowX11 > (traits=0x1003760d0, this=<optimized out>) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/include/osgViewer/api/X11/GraphicsWindowX11:56 > #2 X11WindowingSystemInterface::createGraphicsContext (this=<optimized > out>, traits=0x1003760d0) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/GraphicsWindowX11.cpp:2269 > #3 0x00007f3e241e81b7 in osg::GraphicsContext::createGraphicsContext > (traits=traits@entry=0x1003760d0) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osg/GraphicsContext.cpp:128 > #4 0x00007f3e2350c256 in MyGraphicsContext::MyGraphicsContext > (this=<synthetic pointer>) > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarth/Capabilities.cpp:76 > #5 osgEarth::Capabilities::Capabilities (this=0x100390f30) > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarth/Capabilities.cpp:162 > #6 0x00007f3e236897a5 in osgEarth::Registry::initCapabilities > (this=0x1002a7af0) > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarth/Registry.cpp:484 > #7 0x00007f3e23689829 in osgEarth::Registry::getCapabilities > (this=0x1002a7af0) > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarth/Registry.cpp:468 > #8 0x00007f3dfa209486 in osgEarth::Registry::capabilities () > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarth/Registry:149 > #9 > osgEarth::Drivers::MPTerrainEngine::MPTerrainEngineNode::MPTerrainEngineNode > (this=0x100a1ac60) > at /usr/src/debug/osgearth-2.9-0.2.git43d4ba5.fc27.x86_64/src/ > osgEarthDrivers/engine_mp/MPTerrainEngineNode.cpp:202 > [...] > > Then, a second time here: > > #0 osgViewer::GraphicsWindowX11::init (this=this@entry=0x100676840) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/GraphicsWindowX11.cpp:915 > #1 0x00007f3e23ae4b50 in osgViewer::GraphicsWindowX11::GraphicsWindowX11 > (traits=0x10052c100, this=<optimized out>) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/include/osgViewer/api/X11/GraphicsWindowX11:56 > #2 X11WindowingSystemInterface::createGraphicsContext (this=<optimized > out>, traits=0x10052c100) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/GraphicsWindowX11.cpp:2269 > #3 0x00007f3e241e81b7 in osg::GraphicsContext::createGraphicsContext > (traits=traits@entry=0x10052c100) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osg/GraphicsContext.cpp:128 > #4 0x00007f3e23a7ab62 in osgViewer::SingleWindow::configure > (this=0x100a2a370, view=...) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/config/SingleWindow.cpp:72 > #5 0x00007f3e23a7a80a in osgViewer::SingleScreen::configure > (this=<optimized out>, view=...) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/config/SingleScreen.cpp:29 > #6 0x00007f3e23a75207 in osgViewer::AcrossAllScreens::configure > (this=<optimized out>, view=...) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/config/AcrossAllScreens.cpp:48 > #7 0x00007f3e23ab79c2 in osgViewer::View::apply (this=0x7fffffffdb00, > config=0x1002a3770) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/View.cpp:456 > #8 0x00007f3e23ab7b00 in osgViewer::View::setUpViewAcrossAllScreens > (this=<optimized out>) > at /usr/src/debug/OpenSceneGraph-3.5.7-0.2.gitbfbaeca.fc27.x86_ > 64/src/osgViewer/View.cpp:463 > [...] > > using ViewAcrossAllScreens as you anticipated and hence the default > DisplaySettings. Since by default a "1.0" context is created, the result is: > > FRAGMENT glCompileShader "main(fragment)" FAILED > FRAGMENT Shader "main(fragment)" infolog: > 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, > 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES > > etc. > > If I add > > osg::DisplaySettings::instance()->setGLContextVersion( "4.0" ); > osg::DisplaySettings::instance()->setGLContextProfileMask( 0x1 ); > > at the beginning of a tweaked osgearth_viewer.cpp@main, things work > (though possibly osgEarth::Capabilities::Capabilities will have > incorrectly determined some things since a "1.0" context was created > there). The same effect can indeed be achieved by using the environment > variables you mention. > Try using the OSG_GL_CONTEXT_VERSION and OSG_GL_CONTEXT_PROFILE_MASK env vars instead of the above DisplaySettings::instance() code i,e, export OSG_GL_CONTEXT_VERSION=4.0 export OSG_GL_CONTEXT_PROFILE_MASK=1 This will still require the merged changes to OSG master, but as long as the ViewAcrossAllScreens is used the DisplaySettings::instance() should automatically initialize with the correct values. Robert.
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

