Pelo que entendi, o valor importante é a "versão do perfil do núcleo máximo", não a "string de versão do OpenGL". Se você não especificar um perfil principal ao criar seu contexto ou se escrever algo como
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, 0);
O Mesa fornecerá um contexto do OpenGL 3.0 (esse tipo de sentido faz sentido desde que os perfis foram introduzidos no OpenGL 3.0, portanto essa é a última versão em que se espera que os aplicativos não saibam sobre eles). Se você quer uma versão mais nova do OpenGL, você precisa especificar o perfil correspondente:
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
ou
glutInitContextProfile(GLUT_CORE_PROFILE);
junto com a versão usando glutInitContext()
.
Observe que a imposição de uma versão do OpenGL dessa maneira cria uma strong restrição; Eu imagino que você sabe o que está fazendo ;-) Alguns desenvolvedores tentam segmentar uma versão tão baixa quanto razoável (OpenGL 3.2 por exemplo) e depois perguntar por quais extensões eles precisam - que geralmente funcionam melhor, já que extensões populares tendem a ficar disponíveis por um tempo antes que a versão correspondente do OpenGL seja totalmente suportada por os drivers.
MESA_GL_VERSION_OVERRIDE
é apenas uma ferramenta de depuração ou de desenvolvimento do Mesa; Ele substitui à força a versão do OpenGL, e pode ser configurado para valores que o Mesa não suporta realmente!