如何让一个线球保持静止而另一个球体平移?
这是我现在的代码:
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);
}
目前发生的一切都是两个球体都是静止的。我想要的行为是让较大的红色球体保持静止,而较小的绿色球体慢慢平移。我做错了什么?
答案 0 :(得分: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;