|
|
本课基本步骤如下:
1.用MFC建立单文档
2.架设GL图形绘制环境
3.设定shader渲染器
4.设定灯光与材质
//vertex shader如下:
varying vec4 diffuse,ambient;
varying vec3 normal,lightDir,halfVector;
void main()
{
normal = normalize(gl_NormalMatrix * gl_Normal);
lightDir = normalize(vec3(gl_LightSource[0].position));
halfVector = normalize(gl_LightSource[0].halfVector.xyz);
diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse;
ambient = gl_FrontMaterial.ambient * gl_LightSource[0].ambient;
ambient += gl_LightModel.ambient * gl_FrontMaterial.ambient;
gl_Position = ftransform();
}
//fragment shader如下:
varying vec4 diffuse,ambient;
varying vec3 normal,lightDir,halfVector;
void main()
{
vec3 n,halfV,viewV,ldir;
float NdotL,NdotHV;
vec4 color = ambient;
n = normalize(normal);
NdotL = max(dot(n,lightDir),0.0);
if (NdotL > 0.0) {
halfV = normalize(halfVector);
NdotHV = max(dot(n,halfV),0.0);
color += gl_FrontMaterial.specular * gl_LightSource[0].specular * pow(NdotHV,gl_FrontMaterial.shininess);
color += diffuse * NdotL;
}
gl_FragColor = color;
}
说明显卡要求支持shader如:AGP 9550
效果图如下:
|
-
|