2017-10-12 114 views
-1

我正在尝试绘制一个eclipse形状的对象,所以我使用了一个球体并根据需要对其进行了缩放。我试图用下面的代码来旋转这个eclipse形状的对象,但它不会让步(或者至少它看起来不像它正在发送)。我已经通过简单地更改为另一个3D形状进行测试并旋转。有什么我做错了吗? SolidSphere有什么不同?使用openGL旋转缩放的球体

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(); 
+2

如果将''Rotate''移动到''Scale''之前,是否解决了问题? – undeadherbs

+0

@undeadherbs是的! – rafvasq

+1

问题在于你在旋转球体的同时仍然是球形的,然后将其拉伸。 – undeadherbs

回答

0

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

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();