使用openGL旋转缩放的球体

时间:2017-10-12 21:55:03

标签: opengl 3d rotation

我正在尝试绘制一个日食形状的物体,所以我使用了一个球体并根据需要进行了缩放。我试图用下面的代码旋转这个日食形状的对象,但它不会让步(或者至少它看起来不像它正在酝酿)。我通过简单地改变到另一个3D形状进行测试并旋转。有什么我做错了吗? glutSolidSphere

有什么不同?
glPushMatrix();
    glTranslatef(subx, suby + y, subz);
    glScalef(9.0, 1.75, 1.75);
    glRotatef(angle, 0, 1, 0);
    glTranslatef(-subx, -suby, -subz);
    glTranslatef(subx, suby, subz);
    glutSolidSphere(1.0, 50, 50);
glPopMatrix();

1 个答案:

答案 0 :(得分:2)

上面评论中指出的问题是我在拉伸它之前旋转球体。缩放然后旋转修复了问题。

glPushMatrix();
    glTranslatef(subx, suby + y, subz);
    glRotatef(angle, 0, 1, 0);
    glScalef(9.0, 1.75, 1.75);
    glTranslatef(-subx, -suby, -subz);
    glTranslatef(subx, suby, subz);
    glutSolidSphere(1.0, 50, 50);
glPopMatrix();