在OpenGL里面使用glTranslatef()、glRotatef()等函数可以图形的平移、旋转等。
1、在变换的时候都是对绘图坐标系进行的变换,所以在此坐标系中画的图都会被变换;如果要画两个图,但只想对第一个图进行变换,第二个图不变换或者进行不同的变换,这个时候就需要注意一点:在前一个图使用变换矩阵的时候加上:
glPushMatrix();
glTranslatef();
//绘图代码.........
glPopMatrix();
只有这样,第二个图才不会受到前一个变换的影响。
2、复合变换
比如,用OpenGL画一个图,我想让他先饶Z旋转,然后沿X轴平移。这个时候就需要注意变换矩阵的顺序:
//先调用平移矩阵,然后调用旋转矩阵,与我们
//要看到的实际效果相反
glTranslatef(m_Rimage_Xoff,0.0f,0.0f);
glRotatef(30.0f,0.0f,0.0f,1.0f);