1

我怎样才能让一个线球保持静止而另一个平移?

这是我现在的代码:

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

目前所发生的只是两个球体都是静止的。我想要的行为是让较大的红色球体保持静止,而较小的绿色球体慢慢向上平移。我究竟做错了什么?

4

1 回答 1

2

这里的问题是您在 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;
于 2012-11-03T04:47:11.053 回答