glRotatef( dz,0.0,0.0,1.0 );
这个函数我们都知道,是实现物体转动的函数
而且一旦用过了这个函数
该函数以下所有的绘制的物体都将跟着转动。
我的绘图函数如下所示:
PaintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
drawcube000(); //画一个立方体
drawcube100(); //再画一个立方体
}
绘图里调用的函数如下所示
void magic_cube::drawcube000()
{
int i=0;
int j=0;
int k=0;
glRotatef( dx,1.0,0.0,0.0 ); //绕x轴转动dx的角度
glRotatef( dy,0.0,1.0,0.0);
glRotatef( dz,0.0,0.0,1.0 );
glBegin(GL_QUADS);
glColor3f( 1, 1, 0.0 ); //绘制正方体
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glColor3f( 1, 0.0, 1 );
glVertex3f(0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glColor3f( 0.0, 1, 0.0);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glColor3f( 0.0, 1, 1 );
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glColor3f( 1, 0, 0 );
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(-0.3+i*move_change, +0.3+j*move_change, +0.3+k*move_change);
glColor3f( 0, 0, 1 );
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, +0.3+k*move_change);
glVertex3f(+0.3+i*move_change, -0.3+j*move_change, +0.3+k*move_change);
glVertex3f(+0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);
glEnd();
}
void magic_cube::drawcube100()
{
int i=1;
int j=0;
int k=0;
glRotatef( dx,1.0,0.0,0.0 );
glRotatef( dy,0.0,1.0,0.0);
glRotatef( dz,0.0,0.0,1.0 );
glBegin(GL_QUADS);
glColor3f( 1, 1, 0.0 ); //绘制正方体
glVertex3f(-0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glVertex3f(-0.3+i*move_change, -0.3+j*move_change, 0.3+k*move_change);
glColor3f( 1, 0.0, 1 );
glVertex3f(0.3+i*move_change, 0.3+j*move_change, 0.3+k*move_change);
glVertex3f(0.3+i*move_change, 0.3+j*move_change, -0.3+k*move_change);
glVertex3f(0.3+i*move_change, -0.3+j*move_change, -0.3+k*move_change);