Thanks to the enthusiastic guidance from happy _ 888 ([consultant group]) on csdn, we understand that the matrix transformation method of normal vectors is different from the matrix transformation method of vertices. I did not pay attention to this issue before.
Brother Xin lan has an article ArticleIntroducing this: http://xreal.51.net/Game/NormalMatrix.htm
For the derivation process, see the preceding Section. The final conclusion is:
Assume that m is the model view transformation matrix of the vertex Vo, and no is the normal of the vertex vo. Ve is the vertex coordinate of the eye coordinate system after the model view transformation, and NE is the normal of VE. There are:
Ve = m * vo;
Ne = No * M-1;
In this way, we can understand the geometric meaning of automatic texture coordinate generation in gl_eye_linear mode on Redbook.
T = (p * M-1) * Vt;
That is, the plane P in the world coordinate system is transformed into the eye coordinate system, and the distance from vertex v in the same eye coordinate system to the transformed plane is obtained.
However, this effect is the same as gl_object_linear: texture coordinates are related to the world coordinates of vertices and eye coordinates.
In fact, we can also use the combination rate of matrix multiplication to get the same conclusion using another geometric transformation method:
T = (p * M-1) * Vt = p * (M-1 * Vt );
Is it true that Redbook is wrong?