我想在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();
答案 0 :(得分:1)
关于OpenGL转换的事情是它们修改当前的坐标系,而不是单个对象。例如,当您调用glRotated
时,它会围绕提供的轴旋转坐标系所提供的角度,并在调用之后影响您渲染的几何体,直到您更改或替换矩阵(通过调用{{1 },glPopMatrix
等。)
在您的示例中,您旋转雪人的每个球体,但没有影响场景中所有对象的总体旋转。在例行程序顶部glLoadMatrix
调用后,立即尝试放置您想要影响整个场景的旋转。