0

球を描画する次のdrawScene関数があります。X、Yの座標は常に更新されています。printfからわかる限り、値は確かに変更されています。

問題は、球が座標に従って位置を変更せず、常に同じ場所に描画されることです...

void drawScene(void){



        //Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective
glLoadIdentity(); //Reset the drawing perspective

glColor3d(1,0,0);

//glPushMatrix();///

glTranslated(X,Y,-7);//xyz//(X%5)-2.5,Y%5//(((X%6)-3),0,-7)
printf("\n\n\nCOORDS(X)%d  (Y):%d\n\n\n\n",X,Y);
glutSolidSphere(0.3, 25, 20);//3,20,20

//glPopMatrix();///

glutSwapBuffers(); //Send the 3D scene to the screen
        }

PS。これが正しいかどうかはわかりませんが、openGLウィンドウを更新するたびに、drawScene()を呼び出すか、1回だけ描​​画します。

4

1 に答える 1

0

XとYを更新するときにglutPostRedisplay()を呼び出すか、次のようにidleFuncを有効にします。

void idle()
{
   glutPostRedisplay();
}

これをメインに追加します。

glutIdleFunc(idle);
于 2012-04-22T18:23:23.040 に答える