From 03a53b1a1ece130d379a81dff614793b8fbc6719 Mon Sep 17 00:00:00 2001 From: Le Philousophe Date: Thu, 28 Dec 2023 09:29:56 +0100 Subject: [PATCH] OPENGL: Fix GLSL version parsing Some old GLES2 implementation did have a different version prefix. Be more relax like almost everyone and look for the first digit to start parsing. --- graphics/opengl/context.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/graphics/opengl/context.cpp b/graphics/opengl/context.cpp index ae8105129c4..3597812611e 100644 --- a/graphics/opengl/context.cpp +++ b/graphics/opengl/context.cpp @@ -359,16 +359,20 @@ int Context::getGLSLVersion() const { return 0; } - const char *glslVersionFormat; - if (type == kContextGL) { - glslVersionFormat = "%d.%d"; - } else { - glslVersionFormat = "OpenGL ES GLSL ES %d.%d"; + // Search for the first digit in the version string and parse from there + const char *glslVersionStringNum; + for (glslVersionStringNum = glslVersionString; *glslVersionStringNum != '\0'; glslVersionStringNum++) { + if (*glslVersionStringNum >= '0' && + *glslVersionStringNum <= '9') { + break; + } } + // Here *glslVersionStringNum is either a digit or a NUL character + int glslMajorVersion, glslMinorVersion; - if (sscanf(glslVersionString, glslVersionFormat, &glslMajorVersion, &glslMinorVersion) != 2) { - warning("Could not parse GLSL version '%s'", glslVersionString); + if (sscanf(glslVersionStringNum, "%d.%d", &glslMajorVersion, &glslMinorVersion) != 2) { + warning("Could not parse GLSL version '%s' extracted from '%s'", glslVersionStringNum, glslVersionString); return 0; }