我正在尝试将着色器#version 110
从150
. 我知道当从全局属性迁移110
到150
全局gl_
属性时,所有这些属性都必须在着色器中手动指定。然后必须通过 C++ 通过调用 OpenGL 来设置指定的属性glGetAttribLocation
。
我有点不确定如何处理诸如gl_MultiTexCoord0
和之类的事情gl_TexCoord
。
这里只是我试图移植#version 110
到的着色器之一150
:
// blinn_phong.glsl
[vert]
#version 110
varying vec3 normal;
void main()
{
normal = normalize(gl_NormalMatrix * gl_Normal);
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
}
[frag]
#version 110
uniform sampler2D colorMap;
uniform float materialAlpha;
varying vec3 normal;
void main()
{
vec3 n = normalize(normal);
float nDotL = max(0.0, dot(n, gl_LightSource[0].position.xyz));
float nDotH = max(0.0, dot(normal, vec3(gl_LightSource[0].halfVector)));
float power = (nDotL == 0.0) ? 0.0 : pow(nDotH, gl_FrontMaterial.shininess);
vec4 ambient = gl_FrontLightProduct[0].ambient;
vec4 diffuse = gl_FrontLightProduct[0].diffuse * nDotL;
vec4 specular = gl_FrontLightProduct[0].specular * power;
vec4 color = gl_FrontLightModelProduct.sceneColor + ambient + diffuse + specular;
gl_FragColor = color * texture2D(colorMap, gl_TexCoord[0].st);
gl_FragColor.a = materialAlpha;
}
谁能提供一些好的资源来帮助在这些版本之间进行移植?