From d311e280381df3406e4ee1c7d8d4fbee48e196a3 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Tue, 6 Jan 2015 20:21:00 +0100 Subject: [PATCH] Fixed extension retrieval for OpenGL ES 3+. --- README.md | 2 ++ src/context.c | 33 ++++++++++++++++----------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 957265e6..c7904c19 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,8 @@ GLFW bundles a number of dependencies in the `deps/` directory. - Bugfix: The particles example was not linked against the threading library - Bugfix: The cursor was not positioned over newly created full screen windows - Bugfix: The queried cursor position was not always up-to-date + - Bugfix: `glfwExtensionSupported` always failed for OpenGL ES 3.0 and later if + the library was compiled for OpenGL ES - [Cocoa] Added `_GLFW_USE_RETINA` to control whether windows will use the full resolution on Retina displays - [Cocoa] Made content view subclass of `NSOpenGLView` diff --git a/src/context.c b/src/context.c index 8f01846a..99d7489f 100644 --- a/src/context.c +++ b/src/context.c @@ -588,7 +588,6 @@ GLFWAPI void glfwSwapInterval(int interval) GLFWAPI int glfwExtensionSupported(const char* extension) { - const GLubyte* extensions; _GLFWwindow* window; _GLFW_REQUIRE_INIT_OR_RETURN(GL_FALSE); @@ -606,23 +605,8 @@ GLFWAPI int glfwExtensionSupported(const char* extension) return GL_FALSE; } - if (window->context.major < 3) - { - // Check if extension is in the old style OpenGL extensions string - - extensions = glGetString(GL_EXTENSIONS); - if (!extensions) - { - _glfwInputError(GLFW_PLATFORM_ERROR, - "Failed to retrieve extension string"); - return GL_FALSE; - } - - if (_glfwStringInExtensionString(extension, extensions)) - return GL_TRUE; - } #if defined(_GLFW_USE_OPENGL) - else + if (window->context.major >= 3) { int i; GLint count; @@ -645,7 +629,22 @@ GLFWAPI int glfwExtensionSupported(const char* extension) return GL_TRUE; } } + else #endif // _GLFW_USE_OPENGL + { + // Check if extension is in the old style OpenGL extensions string + + const GLubyte* extensions = glGetString(GL_EXTENSIONS); + if (!extensions) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Failed to retrieve extension string"); + return GL_FALSE; + } + + if (_glfwStringInExtensionString(extension, extensions)) + return GL_TRUE; + } // Check if extension is in the platform-specific string return _glfwPlatformExtensionSupported(extension);