写的很乱,纯属自己记录
如果有错,欢迎指正
在顶点着色器中,
如果要求场景object顶点normal处的两个切线向量,可以
vec3 normal = normalize(gl_NormalMatrix *gl_Normal);
vec3 eyePos = vec3(0.0,0.0,200.0);
vec3 view = eyePos-gl_Vertex;
view =normalize(view);
vec3 u =cross(normal, view);
u = normalize(u);
vec3 v= cross(normal, u);
v=normalize(v);
其中u v就是想要的两个切线向量。
还有是我自己的教训, 如果想求 normal 和 view 点积的平方,如下面的代码
float NdotV = dot(normal, view);
float p = pow(NdotV, 2.0);
2.0 不要写成 2, 不然程序会一直warning 你 pow(float ,int), 类型转换问题。如果一直这么warning, 可能不会显示接下来的error,我就是把所有的warning改掉以后才看到error的。
细心的问题,提醒自己不要再犯