1

我想以不同的旋转连续旋转两个球体。我的代码目前似乎没有得到任何旋转。这是我的代码:

void renderScene(void) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glTranslated(0.0,1.2,-6);
        glRotatef(angle,0,1.2,-6);
        glutSolidSphere(1,50,50);           
    glPopMatrix();

    glPushMatrix();
        glTranslatef(0.0,-1.5,-6);
        glRotatef(angle,0,1.5,-6);
        glutSolidSphere(0.4,50,50);
    glPopMatrix();

    angle=+0.1;
    glutSwapBuffers();
}

有什么我没有添加的吗?我到处都尝试过旋转,它似乎只能在推送和弹出矩阵之外工作,这不是我想要的。

4

2 回答 2

2
angle=+0.1; // assign the value +0.1 to angle

你的意思是:

angle += 0.1; // increment angle by 0.1
于 2012-11-09T12:33:09.613 回答
1

glutSolidSphere围绕原点绘制一个球体:(0,0,0)。glRotatef也围绕通过原点的轴旋转。现在,您可能应该知道,围绕其中心旋转球体根本不会改变球体的外观。

你应该做的是先旋转然后平移。像这样:

glPushMatrix();
    glRotatef(angle,0,1.2,-6);
    glTranslated(0.0,1.2,-6);
    glutSolidSphere(1,50,50);           
glPopMatrix();
于 2012-11-08T20:08:28.383 回答