读书人

麻烦大家看看小弟我这个vertex shader

发布时间: 2013-11-08 17:52:14 作者: rapoo

麻烦大家看看我这个vertex shader



uniform mat4 mvp_matrix;
attribute vec4 a_position;
attribute vec3 a_normal;

void main()
{
vec3 normal, lightDir;
vec4 diffuse;
float NdotL;

gl_Position = mvp_matrix * a_position;
normal = normalize(gl_NormalMatrix * a_normal);///////////
lightDir = normalize(vec3(gl_LightSource[0].position));

NdotL = max(dot(normal, lightDir), 0.0);
diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse;
gl_FrontColor = NdotL * diffuse;
}




我是一个triangle mesh, 我使用gl_Normal:
normal = normalize(gl_NormalMatrix * gl_Normal);///////////

这样就读取不到每个三角形的normal

非要自己算出normal,然后赋值给 a_normal:
normal = normalize(gl_NormalMatrix * a_normal);///////////

为何? gl_NormalMatrix也不是我自己算的啊? 怎么不能直接使用 gl_Normal这个内置的信息?

我是先读取每个三角mesh的顶点信息, 然后画

但是如果是画 glutSolidTeapot(1) 直接使用 gl_Normal 又起作用, 为何?

谢谢
[解决办法]
glsl不熟,建议你把gl_Normal和a_normal当颜色画出来, 看看颜色是否一样

读书人网 >图形图像

热点推荐