Comment mettre à jour glut fenêtre en continu?

J'ai un robot réel qui est de la commande de mon robot virtuel en open gl. Je veux montrer à chaque mouvement de mon maître robot(robot réel) de l'esclave (virtuel en open gl) en ligne, donc j'ai besoin de mettre à jour mon glut fenêtre en permanence, en fait, tant que réel les mouvements du robot my virtual on se déplace aussi, et tous ces mouvements devraient être en ligne.

- Je obtenir des données à partir de maître avec toujours obtenir les données de la fonction, mais je ne sais pas comment je devrais mettre à jour la fenêtre.

Voici mon code:

********************************************/

  void OnIdle(void){  
initSocket();
printf("\n  Defining Step Time Parameters and Initial Conditions for solving Dynamic equations\n");
xi=0;
xf=0.1;
printf("\n    end value x         : %f ",xf); 
i=0;  yi[i]=0; 
i++;yi[i]=-1.570796;
i++;yi[i]=-1.570796;
i++;yi[i]=0;
i++;yi[i]=0;
i++;yi[i]=0;
ndata=2; fi=1;
double counter=0.1;
Eqdifp(v1,v2,v3,v4,v5,v6,xi,xf,yi,ndata,p,fi);
for(int i=0;i<50;i++)
//while(1)
{
getData();
printf("\n");
for(int i=0;i<6; i++)
{
printf("%d = %.3f\n", i,drecvbuf[i]);
}
printf("\n");
yi[0]=v1[ndata];
yi[1]=v2[ndata];
yi[2]=v3[ndata];
yi[3]=v4[ndata];
yi[4]=v5[ndata];
yi[5]=v6[ndata];
printf("my nadata %f\n",v1[ndata]);
counter=counter+0.1;
Eqdifp(v1,v2,v3,v4,v5,v6,xi,xf,yi,ndata,p,fi);
glutPostRedisplay();
}
}
/////////////////////////////////////////////////////
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize(900,500);
int u=glutCreateWindow("3DOF robot");
myinit();
createMenu();
glutIdleFunc (OnIdle);
glutDisplayFunc(Display);
glutReshapeFunc(reshape);
glutKeyboardFunc(KeyDown);
glutMainLoop(); 
System::Timers::Timer^ aTimer = gcnew System::Timers::Timer( 100 );
//Hook up the Elapsed event for the timer.
aTimer->Elapsed += gcnew System::Timers::ElapsedEventHandler( OnTimedEvent );
//Set the Interval to 2 seconds (2000 milliseconds).
aTimer->Enabled = true;
return 0;
}
Ne voulez pas le marquer comme tel, car je ne suis pas familier, mais System::Timers::Timer^ aTimer = gcnew System::Timers::Timer( 100 ); semble que C++/CLI pour moi?
Dès que vous voyez un ^ il est certainement en C++/CLI.
en fait, gcnew est beaucoup plus l'indicateur de C++/CLI. ^ est un opérateur valide en C++standard.
Oui, vous avez raison, n'ont pas pensé, xor.

OriginalL'auteur Likak | 2011-07-23