animating glutWireSphere

animating glutWireSphere

本文关键字:glutWireSphere animating      更新时间:2023-10-16

我如何获得一个电线球以保持静止,而另一个则翻译?

这是我的代码:

void animate ()
{
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode (GL_MODELVIEW);    
    glPushMatrix ();
    glColor3f (1.0, 0.0, 0.0);
    glutWireSphere (1.0, 20, 20);
    glColor3f (0.0, 1.0, 0.0);
    glPushMatrix ();
    glTranslatef (0, 0.01, 0);
    glutWireSphere (0.2, 20, 20);
    glPopMatrix ();
    glPopMatrix();
    glFlush ();
    glSwapBuffers ();
    glutTimerFunc (10, animate);
}

目前发生的一切都是两个球体都是静止的。我想要的行为是让较大的红色球体保持静止,而较小的绿色球体则慢慢翻译。我在做什么错?

问题是,您在y轴上翻译每帧相同的数量。您的矩阵设置为每个帧的身份,因此您较小的绿色球体始终处于(0.0,0.01,0.0)

尝试跟踪位置并增加。

static float yPos = 0.0f;
glColor3f (0.0, 1.0, 0.0);
glPushMatrix ();
glTranslatef (0, yPos, 0);
glutWireSphere (0.2, 20, 20);
glPopMatrix ();
yPos += 0.01f;