opengl-es 2.0 normal 对我来说看起来不太正常

opengl-es 2.0 normal looks not so normal to me

我正在尝试学习如何在 opengl 2.0 中进行照明。 我有一个位于 (0,0,0) 的立方体,相机位于 (0,0,20)。 在顶点我手动添加了所有必要的信息 当我到达法线时,我只是从相机视角看立方体, 建议正面法线为 (0,0,-1),背面法线为 (0,0,1)。 另外,右脸是(1,0,0),左脸-(-1,0,0),上脸-(0,1,0),下脸-(0,-1,0);

现在,问题是,如果我切换前后法线,它会起作用。 但我只是不明白..我对所有其他法线使用的相同逻辑(按原样工作) 意思是前面应该是(0,0,-1)..但显然我错了..我只是不明白..

你说:

[...] a cube which is located on (0,0,0) [...] the camera is on (0,0,20) [...]

正面的法向量必须从立方体指向相机。从立方体到相机的向量是 (0, 0, 20)。所以正面的法向量一定是(0, 0, 1).

一般来说,在OpenGL视图space坐标系中,Z轴指向视图外。视图space坐标系为Right-handed系,X轴指向右侧,Y轴指向上方。 Z轴指向视图外,因为Z轴是由X轴和Y轴的叉积给出的。