diff --git a/src/osg/BlendColor.cpp b/src/osg/BlendColor.cpp index e4347e613..f821cb841 100644 --- a/src/osg/BlendColor.cpp +++ b/src/osg/BlendColor.cpp @@ -89,7 +89,8 @@ void BlendColor::Extensions::lowestCommonDenominator(const Extensions& rhs) void BlendColor::Extensions::setupGLExtensions(unsigned int contextID) { - _isBlendColorSupported = isGLExtensionSupported(contextID,"GL_EXT_blend_color") || + _isBlendColorSupported = OSG_GLES2_FEATURES || OSG_GL3_FEATURES || + isGLExtensionSupported(contextID,"GL_EXT_blend_color") || strncmp((const char*)glGetString(GL_VERSION),"1.2",3)>=0; setGLExtensionFuncPtr(_glBlendColor, "glBlendColor", "glBlendColorEXT"); diff --git a/src/osg/BlendEquation.cpp b/src/osg/BlendEquation.cpp index 817070a94..99a188173 100644 --- a/src/osg/BlendEquation.cpp +++ b/src/osg/BlendEquation.cpp @@ -124,10 +124,13 @@ void BlendEquation::Extensions::lowestCommonDenominator(const Extensions& rhs) void BlendEquation::Extensions::setupGLExtensions(unsigned int contextID) { - _isBlendEquationSupported = isGLExtensionSupported(contextID, "GL_EXT_blend_equation") || + bool bultInSupport = OSG_GLES2_FEATURES || OSG_GL3_FEATURES; + _isBlendEquationSupported = bultInSupport || + isGLExtensionSupported(contextID, "GL_EXT_blend_equation") || strncmp((const char*)glGetString(GL_VERSION), "1.2", 3) >= 0; - _isBlendEquationSeparateSupported = isGLExtensionSupported(contextID, "GL_EXT_blend_equation_separate") || + _isBlendEquationSeparateSupported = bultInSupport || + isGLExtensionSupported(contextID, "GL_EXT_blend_equation_separate") || strncmp((const char*)glGetString(GL_VERSION), "2.0", 3) >= 0; _isSGIXMinMaxSupported = isGLExtensionSupported(contextID, "GL_SGIX_blend_alpha_minmax"); diff --git a/src/osg/BlendFunc.cpp b/src/osg/BlendFunc.cpp index 7ffa5e185..8b568a6ae 100644 --- a/src/osg/BlendFunc.cpp +++ b/src/osg/BlendFunc.cpp @@ -106,8 +106,9 @@ void BlendFunc::Extensions::lowestCommonDenominator(const Extensions& rhs) void BlendFunc::Extensions::setupGLExtensions(unsigned int contextID) { - _isBlendFuncSeparateSupported = isGLExtensionSupported(contextID, "GL_EXT_blend_func_separate") || - strncmp((const char*)glGetString(GL_VERSION), "1.4", 3) >= 0; + _isBlendFuncSeparateSupported = OSG_GLES2_FEATURES || OSG_GL3_FEATURES || + isGLExtensionSupported(contextID, "GL_EXT_blend_func_separate") || + strncmp((const char*)glGetString(GL_VERSION), "1.4", 3) >= 0; setGLExtensionFuncPtr(_glBlendFuncSeparate, "glBlendFuncSeparate", "glBlendFuncSeparateEXT"); } diff --git a/src/osg/BufferObject.cpp b/src/osg/BufferObject.cpp index 7651aacc1..adc8bcf7e 100644 --- a/src/osg/BufferObject.cpp +++ b/src/osg/BufferObject.cpp @@ -348,7 +348,7 @@ void GLBufferObject::Extensions::setupGLExtensions(unsigned int contextID) setGLExtensionFuncPtr(_glUnmapBuffer, "glUnmapBuffer","glUnmapBufferARB"); setGLExtensionFuncPtr(_glGetBufferParameteriv, "glGetBufferParameteriv","glGetBufferParameterivARB"); setGLExtensionFuncPtr(_glGetBufferPointerv, "glGetBufferPointerv","glGetBufferPointervARB"); - _isPBOSupported = osg::isGLExtensionSupported(contextID,"GL_ARB_pixel_buffer_object"); + _isPBOSupported = OSG_GL3_FEATURES || osg::isGLExtensionSupported(contextID,"GL_ARB_pixel_buffer_object"); } void GLBufferObject::Extensions::glGenBuffers(GLsizei n, GLuint *buffers) const diff --git a/src/osg/ClampColor.cpp b/src/osg/ClampColor.cpp index 281713fd6..9f2269243 100644 --- a/src/osg/ClampColor.cpp +++ b/src/osg/ClampColor.cpp @@ -93,7 +93,8 @@ void ClampColor::Extensions::lowestCommonDenominator(const Extensions& rhs) void ClampColor::Extensions::setupGLExtensions(unsigned int contextID) { - _isClampColorSupported = isGLExtensionSupported(contextID,"GL_ARB_color_buffer_float") || + _isClampColorSupported = OSG_GL3_FEATURES || + isGLExtensionSupported(contextID,"GL_ARB_color_buffer_float") || strncmp((const char*)glGetString(GL_VERSION),"2.0",3)>=0; setGLExtensionFuncPtr(_glClampColor, "glClampColor", "glClampColorARB"); diff --git a/src/osg/Drawable.cpp b/src/osg/Drawable.cpp index 0320a2ccb..45953a22a 100644 --- a/src/osg/Drawable.cpp +++ b/src/osg/Drawable.cpp @@ -960,7 +960,7 @@ void Drawable::Extensions::setupGLExtensions(unsigned int contextID) _isFogCoordSupported = isGLExtensionSupported(contextID,"GL_EXT_fog_coord"); _isMultiTexSupported = isGLExtensionSupported(contextID,"GL_ARB_multitexture"); _isOcclusionQuerySupported = osg::isGLExtensionSupported(contextID, "GL_NV_occlusion_query" ); - _isARBOcclusionQuerySupported = osg::isGLExtensionSupported(contextID, "GL_ARB_occlusion_query" ); + _isARBOcclusionQuerySupported = OSG_GL3_FEATURES || osg::isGLExtensionSupported(contextID, "GL_ARB_occlusion_query" ); _isTimerQuerySupported = osg::isGLExtensionSupported(contextID, "GL_EXT_timer_query" );; diff --git a/src/osg/Multisample.cpp b/src/osg/Multisample.cpp index ef4bb6ab9..d43d7a7b7 100644 --- a/src/osg/Multisample.cpp +++ b/src/osg/Multisample.cpp @@ -88,7 +88,7 @@ void Multisample::Extensions::lowestCommonDenominator(const Extensions& rhs) void Multisample::Extensions::setupGLExtensions(unsigned int contextID) { - _isMultisampleSupported = isGLExtensionSupported(contextID,"GL_ARB_multisample"); + _isMultisampleSupported = OSG_GLES2_FEATURES || OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_ARB_multisample"); _isMultisampleFilterHintSupported = isGLExtensionSupported(contextID,"GL_NV_multisample_filter_hint"); setGLExtensionFuncPtr(_glSampleCoverage, "glSampleCoverageARB"); diff --git a/src/osg/Point.cpp b/src/osg/Point.cpp index 6ce70084a..2bf670ec8 100644 --- a/src/osg/Point.cpp +++ b/src/osg/Point.cpp @@ -140,12 +140,13 @@ void Point::Extensions::lowestCommonDenominator(const Extensions& rhs) void Point::Extensions::setupGLExtensions(unsigned int contextID) { - _isPointParametersSupported = strncmp((const char*)glGetString(GL_VERSION),"1.4",3)>=0 || + _isPointParametersSupported = OSG_GL3_FEATURES || + strncmp((const char*)glGetString(GL_VERSION),"1.4",3)>=0 || isGLExtensionSupported(contextID,"GL_ARB_point_parameters") || isGLExtensionSupported(contextID,"GL_EXT_point_parameters") || isGLExtensionSupported(contextID,"GL_SGIS_point_parameters"); - _isPointSpriteCoordOriginSupported = strncmp((const char*)glGetString(GL_VERSION),"2.0",3)>=0; + _isPointSpriteCoordOriginSupported = OSG_GL3_FEATURES || strncmp((const char*)glGetString(GL_VERSION),"2.0",3)>=0; setGLExtensionFuncPtr(_glPointParameteri, "glPointParameteri", "glPointParameteriARB"); if (!_glPointParameteri) setGLExtensionFuncPtr(_glPointParameteri, "glPointParameteriEXT", "glPointParameteriSGIS"); diff --git a/src/osg/Texture.cpp b/src/osg/Texture.cpp index fd7c1f7d0..e79fa1a94 100644 --- a/src/osg/Texture.cpp +++ b/src/osg/Texture.cpp @@ -2418,37 +2418,42 @@ void Texture::Extensions::setupGLExtensions(unsigned int contextID) const char* renderer = (const char*) glGetString(GL_RENDERER); std::string rendererString(renderer ? renderer : ""); + + bool builtInSupport = OSG_GLES2_FEATURES || OSG_GL3_FEATURES; - _isMultiTexturingSupported = isGLExtensionOrVersionSupported( contextID,"GL_ARB_multitexture", 1.3f) || + _isMultiTexturingSupported = builtInSupport || + isGLExtensionOrVersionSupported( contextID,"GL_ARB_multitexture", 1.3f) || isGLExtensionOrVersionSupported(contextID,"GL_EXT_multitexture", 1.3f); _isTextureFilterAnisotropicSupported = isGLExtensionSupported(contextID,"GL_EXT_texture_filter_anisotropic"); - _isTextureCompressionARBSupported = isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_compression", 1.3f); + _isTextureCompressionARBSupported = builtInSupport || isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_compression", 1.3f); _isTextureCompressionS3TCSupported = isGLExtensionSupported(contextID,"GL_EXT_texture_compression_s3tc"); - _isTextureMirroredRepeatSupported = isGLExtensionOrVersionSupported(contextID,"GL_IBM_texture_mirrored_repeat", 1.4f) || + _isTextureMirroredRepeatSupported = builtInSupport || + isGLExtensionOrVersionSupported(contextID,"GL_IBM_texture_mirrored_repeat", 1.4f) || isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_mirrored_repeat", 1.4f); - _isTextureEdgeClampSupported = isGLExtensionOrVersionSupported(contextID,"GL_EXT_texture_edge_clamp", 1.2f) || + _isTextureEdgeClampSupported = builtInSupport || + isGLExtensionOrVersionSupported(contextID,"GL_EXT_texture_edge_clamp", 1.2f) || isGLExtensionOrVersionSupported(contextID,"GL_SGIS_texture_edge_clamp", 1.2f); - _isTextureBorderClampSupported = isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_border_clamp", 1.3f); + _isTextureBorderClampSupported = OSG_GL3_FEATURES || isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_border_clamp", 1.3f); - _isGenerateMipMapSupported = isGLExtensionOrVersionSupported(contextID,"GL_SGIS_generate_mipmap", 1.4f); + _isGenerateMipMapSupported = builtInSupport || isGLExtensionOrVersionSupported(contextID,"GL_SGIS_generate_mipmap", 1.4f); - _isShadowSupported = isGLExtensionSupported(contextID,"GL_ARB_shadow"); + _isShadowSupported = OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_ARB_shadow"); _isShadowAmbientSupported = isGLExtensionSupported(contextID,"GL_ARB_shadow_ambient"); _isClientStorageSupported = isGLExtensionSupported(contextID,"GL_APPLE_client_storage"); - _isNonPowerOfTwoTextureNonMipMappedSupported = isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_non_power_of_two", 2.0); + _isNonPowerOfTwoTextureNonMipMappedSupported = builtInSupport || isGLExtensionOrVersionSupported(contextID,"GL_ARB_texture_non_power_of_two", 2.0); - _isNonPowerOfTwoTextureMipMappedSupported = _isNonPowerOfTwoTextureNonMipMappedSupported; + _isNonPowerOfTwoTextureMipMappedSupported = builtInSupport || _isNonPowerOfTwoTextureNonMipMappedSupported; - _isTextureIntegerEXTSupported = isGLExtensionSupported(contextID, "GL_EXT_texture_integer"); + _isTextureIntegerEXTSupported = OSG_GL3_FEATURES || isGLExtensionSupported(contextID, "GL_EXT_texture_integer"); if (rendererString.find("Radeon")!=std::string::npos || rendererString.find("RADEON")!=std::string::npos) { diff --git a/src/osg/Texture2DArray.cpp b/src/osg/Texture2DArray.cpp index a960ec61e..3a6da201a 100644 --- a/src/osg/Texture2DArray.cpp +++ b/src/osg/Texture2DArray.cpp @@ -596,8 +596,8 @@ void Texture2DArray::Extensions::lowestCommonDenominator(const Extensions& rhs) void Texture2DArray::Extensions::setupGLExtensions(unsigned int contextID) { - _isTexture3DSupported = isGLExtensionSupported(contextID,"GL_EXT_texture3D"); - _isTexture2DArraySupported = isGLExtensionSupported(contextID,"GL_EXT_texture_array"); + _isTexture3DSupported = OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_EXT_texture3D"); + _isTexture2DArraySupported = OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_EXT_texture_array"); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &_max2DSize); glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS_EXT, &_maxLayerCount); diff --git a/src/osg/Texture3D.cpp b/src/osg/Texture3D.cpp index 2ddd8ab31..0d75c0b5a 100644 --- a/src/osg/Texture3D.cpp +++ b/src/osg/Texture3D.cpp @@ -579,7 +579,7 @@ void Texture3D::Extensions::lowestCommonDenominator(const Extensions& rhs) void Texture3D::Extensions::setupGLExtensions(unsigned int contextID) { - _isTexture3DFast = isGLExtensionSupported(contextID,"GL_EXT_texture3D"); + _isTexture3DFast = OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_EXT_texture3D"); if (_isTexture3DFast) _isTexture3DSupported = true; else _isTexture3DSupported = strncmp((const char*)glGetString(GL_VERSION),"1.2",3)>=0;