From 51ff30f386ac098f477ff16c71756bcd089dcfae Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Sun, 19 Apr 2015 17:11:49 +0200 Subject: [PATCH] changes for OSG 3.3.4 and later The public interfaces to osgText and osg::GLExtensions changed. --- simgear/canvas/elements/CanvasText.cxx | 19 +++++++++++++++++-- simgear/scene/material/Technique.cxx | 10 ++++++++++ simgear/scene/sky/CloudShaderGeometry.cxx | 6 +++++- simgear/scene/tgdb/ShaderGeometry.cxx | 4 ++++ simgear/scene/util/SGSceneFeatures.cxx | 22 ++++++++++++++++++++++ 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/simgear/canvas/elements/CanvasText.cxx b/simgear/canvas/elements/CanvasText.cxx index 4b7600fc..ead600bd 100644 --- a/simgear/canvas/elements/CanvasText.cxx +++ b/simgear/canvas/elements/CanvasText.cxx @@ -159,8 +159,12 @@ namespace canvas if( empty() ) return pos; - +#if OSG_VERSION_LESS_THAN(3,3,4) GlyphQuads::Coords2 const& coords = _quads->_coords; +#else + GlyphQuads::Coords2 refCoords = _quads->_coords; + GlyphQuads::Coords2::element_type &coords = *refCoords.get(); +#endif size_t global_i = _begin + i; if( global_i == _begin ) @@ -194,7 +198,12 @@ namespace canvas return cursorPos(0); GlyphQuads::Glyphs const& glyphs = _quads->_glyphs; + #if OSG_VERSION_LESS_THAN(3,3,4) GlyphQuads::Coords2 const& coords = _quads->_coords; +#else + GlyphQuads::Coords2 refCoords = _quads->_coords; + GlyphQuads::Coords2::element_type &coords = *refCoords.get(); +#endif float const HIT_FRACTION = 0.6; float const character_width = _text->getCharacterHeight() @@ -627,7 +636,13 @@ namespace canvas const GlyphQuads& quads = _textureGlyphQuadMap.begin()->second; const GlyphQuads::Glyphs& glyphs = quads._glyphs; - const GlyphQuads::Coords2& coords = quads._coords; +#if OSG_VERSION_LESS_THAN(3,3,4) + GlyphQuads::Coords2 const& coords = quads._coords; +#else + GlyphQuads::Coords2 refCoords = quads._coords; + GlyphQuads::Coords2::element_type &coords = *refCoords.get(); +#endif + const GlyphQuads::LineNumbers& line_numbers = quads._lineNumbers; float wr = _characterHeight / getCharacterAspectRatio(); diff --git a/simgear/scene/material/Technique.cxx b/simgear/scene/material/Technique.cxx index 93a17b87..96856cd1 100644 --- a/simgear/scene/material/Technique.cxx +++ b/simgear/scene/material/Technique.cxx @@ -326,9 +326,15 @@ public: = GL2Extensions::Get(static_cast(contextId), true); if (!extensions) return; +#if OSG_VERSION_LESS_THAN(3,3,3) if (!extensions->isGlslSupported()) return; value = extensions->getLanguageVersion(); +#else + if (!extensions->isGlslSupported) + return; + value = extensions->glslLanguageVersion; +#endif } }; @@ -357,7 +363,11 @@ public: = GL2Extensions::Get(static_cast(contextId), true); if (!extensions) return; +#if OSG_VERSION_LESS_THAN(3,3,3) value = extensions->isGlslSupported(); +#else + value = extensions->isGlslSupported; +#endif } }; diff --git a/simgear/scene/sky/CloudShaderGeometry.cxx b/simgear/scene/sky/CloudShaderGeometry.cxx index 8b4ea16e..7800839c 100644 --- a/simgear/scene/sky/CloudShaderGeometry.cxx +++ b/simgear/scene/sky/CloudShaderGeometry.cxx @@ -127,8 +127,12 @@ void CloudShaderGeometry::drawImplementation(RenderInfo& renderInfo) const sortData.frameSorted = frameNumber; } - + +#if OSG_VERSION_LESS_THAN(3,3,3) const Extensions* extensions = getExtensions(state.getContextID(),true); +#else + const GLExtensions* extensions = GLExtensions::Get(state.getContextID(), true); +#endif GLfloat ua1[3] = { (GLfloat) alpha_factor, (GLfloat) shade_factor, (GLfloat) cloud_height }; diff --git a/simgear/scene/tgdb/ShaderGeometry.cxx b/simgear/scene/tgdb/ShaderGeometry.cxx index 5d286c31..ac9ec937 100644 --- a/simgear/scene/tgdb/ShaderGeometry.cxx +++ b/simgear/scene/tgdb/ShaderGeometry.cxx @@ -47,7 +47,11 @@ void ShaderGeometry::addObject(const Vec3& position, float scale, void ShaderGeometry::drawImplementation(osg::RenderInfo& renderInfo) const { State& state = *renderInfo.getState(); +#if OSG_VERSION_LESS_THAN(3,3,3) const Extensions* extensions = getExtensions(state.getContextID(), true); +#else + const GLExtensions* extensions = GLExtensions::Get(state.getContextID(), true); +#endif Vec4Array::const_iterator citer = _posScaleArray->begin(); Vec4Array::const_iterator cend = _posScaleArray->end(); FloatArray::const_iterator viter = _vertexAttribArray->begin(); diff --git a/simgear/scene/util/SGSceneFeatures.cxx b/simgear/scene/util/SGSceneFeatures.cxx index 4367e453..79f182f9 100644 --- a/simgear/scene/util/SGSceneFeatures.cxx +++ b/simgear/scene/util/SGSceneFeatures.cxx @@ -25,11 +25,13 @@ #include "SGSceneFeatures.hxx" +#include #include #include #include #include #include +#include #include #include @@ -84,12 +86,18 @@ SGSceneFeatures::setTextureCompression(osg::Texture* texture) const bool SGSceneFeatures::getHavePointSprites(unsigned contextId) const { +#if OSG_VERSION_LESS_THAN(3,3,3) return osg::PointSprite::isPointSpriteSupported(contextId); +#else + const osg::GLExtensions* ex = osg::GLExtensions::Get(contextId, true); + return ex && ex->isPointSpriteSupported; +#endif } bool SGSceneFeatures::getHaveFragmentPrograms(unsigned contextId) const { +#if OSG_VERSION_LESS_THAN(3,3,3) const osg::FragmentProgram::Extensions* fpe; fpe = osg::FragmentProgram::getExtensions(contextId, true); if (!fpe) @@ -98,11 +106,16 @@ SGSceneFeatures::getHaveFragmentPrograms(unsigned contextId) const return false; return true; +#else + const osg::GLExtensions* ex = osg::GLExtensions::Get(contextId, true); + return ex && ex->isFragmentProgramSupported; +#endif } bool SGSceneFeatures::getHaveVertexPrograms(unsigned contextId) const { +#if OSG_VERSION_LESS_THAN(3,3,3) const osg::VertexProgram::Extensions* vpe; vpe = osg::VertexProgram::getExtensions(contextId, true); if (!vpe) @@ -111,6 +124,10 @@ SGSceneFeatures::getHaveVertexPrograms(unsigned contextId) const return false; return true; +#else + const osg::GLExtensions* ex = osg::GLExtensions::Get(contextId, true); + return ex && ex->isVertexProgramSupported; +#endif } bool @@ -124,6 +141,7 @@ SGSceneFeatures::getHaveShaderPrograms(unsigned contextId) const bool SGSceneFeatures::getHavePointParameters(unsigned contextId) const { +#if OSG_VERSION_LESS_THAN(3,3,3) const osg::Point::Extensions* pe; pe = osg::Point::getExtensions(contextId, true); if (!pe) @@ -131,5 +149,9 @@ SGSceneFeatures::getHavePointParameters(unsigned contextId) const if (!pe->isPointParametersSupported()) return false; return true; +#else + const osg::GLExtensions* ex = osg::GLExtensions::Get(contextId, true); + return ex && ex->isPointParametersSupported; +#endif } -- 2.39.5