diff --git a/src/Context.cpp b/src/Context.cpp index bb484f8dc..f6bdfd1ad 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -165,13 +165,26 @@ Context::Context() { futureExtensions.insert(make_pair(extension._string, extension)); /* Check for presence of extensions in future versions */ - GLuint index = 0; - const char* extension; - while((extension = reinterpret_cast(glGetStringi(GL_EXTENSIONS, index++)))) { - auto found = futureExtensions.find(extension); - if(found != futureExtensions.end()) { - _supportedExtensions.push_back(found->second); - extensionStatus.set(found->second._index); + if(isVersionSupported(Version::GL300)) { + GLuint index = 0; + const char* extension; + while((extension = reinterpret_cast(glGetStringi(GL_EXTENSIONS, index++)))) { + auto found = futureExtensions.find(extension); + if(found != futureExtensions.end()) { + _supportedExtensions.push_back(found->second); + extensionStatus.set(found->second._index); + } + } + + /* OpenGL 2.1 doesn't have glGetStringi() */ + } else { + vector extensions = Corrade::Utility::split(reinterpret_cast(glGetString(GL_EXTENSIONS)), ' '); + for(const string& extension: extensions) { + auto found = futureExtensions.find(extension); + if(found != futureExtensions.end()) { + _supportedExtensions.push_back(found->second); + extensionStatus.set(found->second._index); + } } }