From 6df4fbf165fdc4259c55e8b4d78de2294d6bb059 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 19 Jun 2014 00:30:56 +0300 Subject: Check if all OpenGL extensions supported for modernopengl. If not fallback to normalopengl. --- src/graphicsmanager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/graphicsmanager.cpp') diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp index 189a3b3c8..8df17721e 100644 --- a/src/graphicsmanager.cpp +++ b/src/graphicsmanager.cpp @@ -141,6 +141,7 @@ GraphicsManager::GraphicsManager() : mUseTextureSampler(true), mTextureSampler(0), mSupportDebug(0), + mSupportModernOpengl(false), #endif mUseAtlases(false) { @@ -468,7 +469,7 @@ void GraphicsManager::initGraphics() const RenderType oldOpenGLMode = openGLMode; if (openGLMode == RENDER_MODERN_OPENGL) { - if (!checkGLVersion(3, 0)) + if (!mSupportModernOpengl || !checkGLVersion(3, 0)) { logger->log("Fallback to normal OpenGL mode"); openGLMode = RENDER_NORMAL_OPENGL; @@ -835,6 +836,7 @@ void GraphicsManager::initOpenGLFunctions() const bool is20 = checkGLVersion(2, 0); const bool is21 = checkGLVersion(2, 1); const bool is30 = checkGLVersion(3, 0); + mSupportModernOpengl = true; // Texture sampler if (is10 && supportExtension("GL_ARB_sampler_objects")) @@ -979,6 +981,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("GL_ARB_vertex_array_object not found"); } if (is15) @@ -991,6 +994,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("buffers extension not found"); } if (is20) @@ -1022,6 +1026,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("shaders functions incomplete (OpenGL < 3.0)"); } if (supportExtension("GL_ARB_separate_shader_objects")) @@ -1034,6 +1039,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("GL_ARB_separate_shader_objects not supported"); } if (supportExtension("GL_ARB_separate_shader_objects")) @@ -1058,6 +1064,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("GL_ARB_vertex_attrib_binding not supported"); } if (supportExtension("GL_ARB_invalidate_subdata")) @@ -1081,6 +1088,7 @@ void GraphicsManager::initOpenGLFunctions() } else { + mSupportModernOpengl = false; logger->log1("shaders not supported"); } -- cgit v1.2.3-70-g09d2