From 821f30f7358ec3f0217b05a8d4af7101daf61678 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sat, 16 Jan 2021 16:43:22 +0100 Subject: Codechange: [OpenGL] Use GLSL version 1.50 if available. --- src/video/opengl.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/video') diff --git a/src/video/opengl.cpp b/src/video/opengl.cpp index 2f92b2717..b5ce12dee 100644 --- a/src/video/opengl.cpp +++ b/src/video/opengl.cpp @@ -500,15 +500,23 @@ static bool VerifyProgram(GLuint program) */ bool OpenGLBackend::InitShaders() { + const char *ver = (const char *)glGetString(GL_SHADING_LANGUAGE_VERSION); + if (ver == nullptr) return false; + + int glsl_major = ver[0] - '0'; + int glsl_minor = ver[2] - '0'; + + bool glsl_150 = (IsOpenGLVersionAtLeast(3, 2) || glsl_major > 1 || (glsl_major == 1 && glsl_minor >= 5)); + /* Create vertex shader. */ GLuint vert_shader = _glCreateShader(GL_VERTEX_SHADER); - _glShaderSource(vert_shader, lengthof(_vertex_shader_direct), _vertex_shader_direct, nullptr); + _glShaderSource(vert_shader, glsl_150 ? lengthof(_vertex_shader_direct_150) : lengthof(_vertex_shader_direct), glsl_150 ? _vertex_shader_direct_150 : _vertex_shader_direct, nullptr); _glCompileShader(vert_shader); if (!VerifyShader(vert_shader)) return false; /* Create fragment shader. */ GLuint frag_shader = _glCreateShader(GL_FRAGMENT_SHADER); - _glShaderSource(frag_shader, lengthof(_frag_shader_direct), _frag_shader_direct, nullptr); + _glShaderSource(frag_shader, glsl_150 ? lengthof(_frag_shader_direct_150) : lengthof(_frag_shader_direct), glsl_150 ? _frag_shader_direct_150 : _frag_shader_direct, nullptr); _glCompileShader(frag_shader); if (!VerifyShader(frag_shader)) return false; -- cgit v1.2.3-54-g00ecf