glLoadIdentity(); 这个函数可以重置Modeview矩阵,即当前场景矩阵,不管现在是平移,缩放,还是旋转,都被重值为0,镜头回到坐标原点。
要让三角行沿Y轴旋转,然后向X轴负方向平移1.5个单位。可以在glBegin调用前设置Modeview矩阵:
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(
glRotatef(rtri,
这样设置的矩阵其实是先旋转再平移,和DX中的有所区别:OpenGL变换在编程的时候顺序是反过来的。想对目标做R2,T,R1的变换,在写的时候就要:
glRotatef(year, 0.0, 1.0,0.0);//旋转矩阵R1
glTranslatef(2.0, 0.0, 0.0);//平移矩阵T
glRotatef(day, 0.0, 1.0, 0.0);//旋转矩阵R2
而D3D不是这样的,下面代码是DirectX中先旋转,再平移的相关代码
D3DXMatrixMultiply(&matWorld,&matWorldY,&translation1);