多个对象在OpenGL中旋转

时间:2013-03-03 00:43:24

标签: opengl rotation

我想在OpenGL 2.0中创建一个雪人。我想旋转整个形状,但每次运行程序都不起作用。

    glPushMatrix();

    //bottom sphere
    glTranslated(tranX,tranY-2,tranZ);
    glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1.5,30,30);

    //middle sphere
    glTranslated(tranX,tranY+2.3,tranZ+8);
   glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1.3,30,30);

    //top sphere
    glTranslated(tranX,tranY+2,tranZ+10);
    glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1,30,30);
glPopMatrix();

1 个答案:

答案 0 :(得分:1)

关于OpenGL转换的事情是它们修改当前的坐标系,而不是单个对象。例如,当您调用glRotated时,它会围绕提供的轴旋转坐标系所提供的角度,并在调用之后影响您渲染的几何体,直到您更改或替换矩阵(通过调用{{1 },glPopMatrix等。)

在您的示例中,您旋转雪人的每个球体,但没有影响场景中所有对象的总体旋转。在例行程序顶部glLoadMatrix调用后,立即尝试放置您想要影响整个场景的旋转。