J'ai fait un screen saver ou un avion se déplace selon X et tourne selon Y.
Je le fait se diriger vers un point nommé loctarget, ou je veut mettre un carré.
(si vous voyez togo, c'est normal, sa remplace mon loctarget après calcul)
Seulement mon carré se déplace avec l'avion au lieu de rester sur place. Comment faire pour annuler la commande glrotatef et la commande gltranslatef?
voila mon code en gros(avec des trucs en moins pour alléger):
la fonction qui crée le cube + la fonction de dessin
Merci d'avance
Je le fait se diriger vers un point nommé loctarget, ou je veut mettre un carré.
(si vous voyez togo, c'est normal, sa remplace mon loctarget après calcul)
Seulement mon carré se déplace avec l'avion au lieu de rester sur place. Comment faire pour annuler la commande glrotatef et la commande gltranslatef?
voila mon code en gros(avec des trucs en moins pour alléger):
la fonction qui crée le cube + la fonction de dessin
Bloc de code:
- (void) newcube
{
glTranslatef( loctarget, -3.0f, (50.0f + versz));
glRotatef( 180.0, 0.0f, 1.2f, 0.0f );
glBegin(GL_QUADS);
{
glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom)
glVertex3f ... (plein d'autre)
}
glEnd();
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
[[glView openGLContext] makeCurrentContext];
GLfloat airplaneColor[4] = {.25, .25, .25, 1};
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glTranslatef( togo, 1.0f, -15.0f );
glRotatef( 180.0, togoy, 1.2f, 0.0f );
glPushMatrix();
glTranslatef(0, 0.6, 1.3);
glScalef(3, .1, 1.5);
glColor4f(0.50,0.50,0.0,1.0);
gluSphere(quadric, 1, 10, 10);
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, -2.5);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE, airplaneColor);
glColor4f(0.2,0.4,0.4,1.0);
gluCylinder(quadric, .5, .5, 5, 10, 1);
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE, airplaneColor);
glTranslatef(0, 0, 5);
gluCylinder(quadric, .5, 0, 2, 10, 3);
glPopMatrix();
glBegin(GL_TRIANGLES);
(le triangle)
glBegin(GL_TRIANGLES);
(le triangle)
glEnd();
glRotatef(180, 0, 1, 0);
gluDisk(quadric, 0, .5, 10, 10);
glPopMatrix();
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE, airplaneColor);
[ self newcube ];
glFlush();
}
Merci d'avance