标签:efi rms github 版本号 https 3.1 top port margin
来自:https://github.com/mattdesl/lwjgl-basics/wiki/GLSL-Versions
You can use the #version command as the first line of your shader to specify GLSL version:
#version 120
void main() {
gl_FragColor = vec4(1.0);
}GLSL versions are released alongside GL versions. See the following charts to decide which version you would like to target.
| OpenGL Version | GLSL Version |
| 2.0 | 110 |
| 2.1 | 120 |
| 3.0 | 130 |
| 3.1 | 140 |
| 3.2 | 150 |
| 3.3 | 330 |
| 4.0 | 400 |
| 4.1 | 410 |
| 4.2 | 420 |
| 4.3 | 430 |
OpenGL ES has its own Shading Language, and the versioning starts fresh. It is based on OpenGL Shading Language version 1.10.
| OpenGL ES Version | GLSL ES Version |
| 2.0 | 100 |
| 3.0 | 300 |
So, for example, if a feature is available in GLSL 120, it probably won‘t be available in GLSL ES 100 unless the ES compiler specifically allows it.
Differences between (desktop) GLSL versions.
Vertex shader:
uniform mat4 projTrans;
attribute vec2 Position;
attribute vec2 TexCoord;
varying vec2 vTexCoord;
void main() {
vTexCoord = TexCoord;
gl_Position = u_projView * vec4(Position, 0.0, 1.0);
}Fragment shader:
uniform sampler2D tex0;
varying vec2 vTexCoord;
void main() {
vec4 color = texture2D(tex0, vTexCoord);
gl_FragColor = color;
}As of GLSL 130+, in and out are used instead of attribute and varying. GLSL 330+ includes other features like layout qualifiers and changes texture2D to texture.
Vertex shader:
#version 330
uniform mat4 projTrans;
layout(location = 0) in vec2 Position;
layout(location = 1) in vec2 TexCoord;
out vec2 vTexCoord;
void main() {
vTexCoord = TexCoord;
gl_Position = u_projView * vec4(Position, 0, 1);
}Fragment shader:
#version 330
uniform sampler2D tex0;
in vec2 vTexCoord;
//use your own output instead of gl_FragColor
out vec4 fragColor;
void main() {
//‘texture‘ instead of ‘texture2D‘
fragColor = texture(tex0, vTexCoord);
}float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
float b[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1);However, the above is not supported on Mac OSX Snow Leopard, even with GLSL 120.(1)
uniform float val = 1.0;sin() when setting a const valuefloat f = 1.0; <-- valid
float g = 1; <-- only supported in GLSL 120
vec2 v = vec2(1, 2.0); <-- only supported in GLSL 120f to define a float: float f = 2.5f;int and uint support (and bitwise operations with them)switch statement supporttrunc(), round(), roundEven(), isnan(), isinf(), modf()in and out syntax instead of attribute andvaryingtexture() should now be used instead of texture2D()layout(location = 2) in vec3 values[4];Formally this was only possible with ARB_explicit_attrib_location extension
标签:efi rms github 版本号 https 3.1 top port margin
原文地址:http://www.cnblogs.com/lytwajue/p/6839502.html