GLSLで使うバージョンを指定する

glsl-version.png
#version 430 core
layout(location = 0) in vec4 vPosition;
void
main()
{
gl_Position = vPosition;
}
#version 430 core
 printf("OpenGL %s, GLSL %s\n", glGetString(GL_VERSION), glGetString(GL_SHADING_LANGUAGE_VERSION));

これを指定すると、指定したバージョンで非推奨になってるものをコンパイルエラーとして吐き出してくれます。
GLSLでどのバージョンを使用するのかを指定します。
#version 430

だけでもokです。
なにも指定しなかったらversion 110になります。

OpenGLのバージョンとGLSLのバージョン対応表

[1]より
OpenGL GLSL version 行
OpenGL 3.0 GLSL 1.3 #version 130
OpenGL 3.1 GLSL 1.4 #version 140
OpenGL 3.2 GLSL 1.5 #version 150
OpenGL ES 3.0 GLSL ES 3.0 #version 300
OpenGL 3.3 GLSL 3.3 #version 330
OpenGL 4.0 GLSL 4.0 #version 400
OpenGL 4.1 GLSL 4.1 #version 410
OpenGL 4.2 GLSL 4.2 #version 420
OpenGL 4.3 GLSL 4.3 #version 430
OpenGL 4.4 GLSL 4.4 #version 440

GLSLのわかりにくいエラーメッセージに要注意!

OpenGL4.2なのに間違って

#version 430 core

と書いてしまった、こんなエラーメッセージを得た。
ERROR: 0:1: error(#106) Version number not supported by GL2
ERROR: 0:1: error(#308) Profile is invalid in glsl versions prior to 1.5

あれ、プロファイルの指定効いてないの???とはまった。
#version 420 core

と書くと直った。
自分のマシンよりも上すぎるバージョンを指定しても「 Version number not supported by GL2」というエラーメッセージになっちゃう様子。

glsl-deprecated

サポートサイト Wikidot.com glsl-deprecated