diff --git a/include/osg/GLExtensions b/include/osg/GLExtensions index ddc6cdb8d..a6bbbdcb4 100644 --- a/include/osg/GLExtensions +++ b/include/osg/GLExtensions @@ -627,6 +627,7 @@ class OSG_EXPORT GLExtensions : public osg::Referenced // Point bool isPointParametersSupported; bool isPointSpriteSupported; + bool isPointSpriteModeSupported; bool isPointSpriteCoordOriginSupported; void (GL_APIENTRY * glPointParameteri) (GLenum pname, GLint param); diff --git a/src/osg/GLExtensions.cpp b/src/osg/GLExtensions.cpp index 15af09020..cb88e00f4 100644 --- a/src/osg/GLExtensions.cpp +++ b/src/osg/GLExtensions.cpp @@ -1054,6 +1054,9 @@ GLExtensions::GLExtensions(unsigned int in_contextID): isPointSpriteSupported = validContext && (OSG_GLES2_FEATURES || OSG_GLES3_FEATURES || OSG_GL3_FEATURES || isGLExtensionSupported(contextID, "GL_ARB_point_sprite") || isGLExtensionSupported(contextID, "GL_OES_point_sprite") || isGLExtensionSupported(contextID, "GL_NV_point_sprite")); + + isPointSpriteModeSupported = isPointSpriteModeSupported && !OSG_GL3_FEATURES; + isPointSpriteCoordOriginSupported = validContext && (OSG_GL3_FEATURES || (glVersion >= 2.0f)); diff --git a/src/osg/PointSprite.cpp b/src/osg/PointSprite.cpp index 2a2e03394..4e573d8f2 100644 --- a/src/osg/PointSprite.cpp +++ b/src/osg/PointSprite.cpp @@ -43,7 +43,7 @@ int PointSprite::compare(const StateAttribute& sa) const bool PointSprite::checkValidityOfAssociatedModes(osg::State& state) const { const GLExtensions* extensions = state.get(); - bool modeValid = extensions->isPointSpriteSupported; + bool modeValid = extensions->isPointSpriteModeSupported; #if defined( OSG_GLES1_AVAILABLE ) //point sprites don't exist on es 2.0 state.setModeValidity(GL_POINT_SPRITE_OES, modeValid);