我希望你能提供一个适当的简单示例。
目前,我有一个基于教程的东西,但我没有看到三角形中间的变化。似乎每个三角形都会改变颜色,但只是整体上的改变。
目前,我有一个基于教程的东西,但我没有看到三角形中间的变化。似乎每个三角形都会改变颜色,但只是整体上的改变。
out vec3 vertex_normal;
out vec3 vertex_light_position;
..在顶点着色器上。
使用
vertex_normal = normalize(NormalMatrix * in_Normal);
// old gl_NormalMatrix: "transpose of the inverse of the upper
// leftmost 3x3 of gl_ModelViewMatrix"
mat3 NormalMatrix = transpose(
inverse(
mat3(
ModelViewMatrix
)
)
);
关于片元着色器:
float diffuse_value = MAX(dot(vertex_normal, vertex_light_position), 0.0);
gl_FragColor = out_Color * diffuse_value
但是,正如我所说的,每个三角形似乎都是一个实心颜色(只在整体上发生变化)。
我听说过归一化可能会起到作用,但如果我对vertex_normal进行normalize()操作,结果仍然相同。
vertex_normal
和vertex_light_position
在每个像素点上都是常量,那么diffuse_value
就会在每个像素点上都是常量,这样就实现了平面着色。 - Justicle