1

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 に答える