[open gl] mon animation disparait au bout de quelque secondes !!!

mon animation disparait au bout de quelque secondes !!! [open gl] - Programmation

Marsh Posté le 17-07-2002 à 17:59:19    

on voit l'objet tourner mais il clignote puis disparait
pouvez vous m'aidez à trouver les erreurs ?
 
#include <GL/glut.h>
#include <stdlib.h>
 
#define X .525731112119133606  
#define Z .850650808352039932  
 
 
void display ()
{
 static GLfloat tableau_entrelace [] = {1.0, 1.0, 1.0, -X, 0.0, Z, 1.0, 1.0, 1.0, X, 0.0, Z,  
  1.0, 1.0, 1.0, -X, 0.0, -Z, 1.0, 1.0, 1.0, X, 0.0, -Z, 1.0, 1.0, 1.0, 0.0, Z, X,
  1.0, 1.0, 1.0, 0.0, Z, -X, 1.0, 1.0, 1.0, 0.0, -Z, X, 1.0, 1.0, 1.0, 0.0, -Z, -X,  
  1.0, 1.0, 1.0, Z, X, 0.0, 1.0, 1.0, 1.0, -Z, X, 0.0,1.0, 1.0, 1.0, Z, -X, 0.0,  
  1.0, 1.0, 1.0, -Z, -X, 0.0} ;
 
 glInterleavedArrays (GL_C3F_V3F, 0, tableau_entrelace) ;
 
 static GLuint indices [20][3]= {1,4,0,4,9,0,4,5,9,8,5,4,1,8,4,1,10,8,10,3,8,8,3,5,3,2,5,
  3,7,2,3,10,7,10,6,7,6,11,7,6,0,11,6,1,0,10,1,6,11,0,9,2,11,9,5,2,9,11,2,7};
 
 glPolygonMode (GL_FRONT, GL_LINE) ;
 glFrontFace (GL_CCW) ;
 glEnable (GL_CULL_FACE) ;
   glCullFace (GL_BACK) ;
   
 
 
 glScalef ( 6.0, 6.0, 6.0 ) ;
 
 glRotatef (45, 0.0, 1.0, 0.0) ;
 glDrawElements (GL_TRIANGLES, 60, GL_UNSIGNED_INT, indices) ;
 glutSwapBuffers() ;
 
 for (int i =1; i<360; i++)
 {  
   
  if (i > 360)  
  {
   i = 1;
  }
  glPushMatrix () ;
  glRotatef (i, 0.0, 1.0, 0.0 ) ;
  glDrawElements (GL_TRIANGLES, 60, GL_UNSIGNED_INT, indices) ;
  glutSwapBuffers() ;
  glClear (GL_COLOR_BUFFER_BIT) ;
  glPopMatrix () ;  
   
 }
glFlush () ;
 
 
}
 
 
 
 
 
 
void main (int argc, char** argv)
 
{
glutInit (&argc, argv) ;
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) ;
glutInitWindowSize (640, 480) ;
glutInitWindowPosition (250,250) ;
glutCreateWindow (argv [0]) ;
 
glClearColor (0.0, 0.0, 0.0, 0.0) ;
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable( GL_DEPTH_TEST );
 
 
 
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
 
glFrustum(-10.0 , 10.0, -10.0, 10.0, 5.0, 100.0);  
 
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
 
gluLookAt (0.0, 0.0, 10.0, 0.0,0.0,0.0, 0.0, 1.0, 0.0) ;
 
glutDisplayFunc (display) ;
 
 
glutMainLoop () ;
 
}


Message édité par airseb le 17-07-2002 à 18:01:38
Reply

Marsh Posté le 17-07-2002 à 17:59:19   

Reply

Marsh Posté le 17-07-2002 à 20:06:15    

up

Reply

Marsh Posté le 17-07-2002 à 20:31:51    

[commentaire d'unn mec qui y connait rien en OpenGL]
 
regarde si en passant i à 720 dans cette ligne : for (int i =1; i<360; i++) ton anim ne dure pas plus lgtps. Si c'est bien le cas c'est que ta condition d'arrêt est mauvaise.
 
[/commentaire d'unn mec qui y connait rien en OpenGL]


---------------
Le tout c'est d'y croire! DaBZHWDT site : www.setibzh.com
Reply

Marsh Posté le 17-07-2002 à 21:22:12    

C'est ton Z-Buffer.
 

Code :
  1. glPushMatrix () ;
  2. glRotatef (i, 0.0, 1.0, 0.0 ) ;
  3. glDrawElements (GL_TRIANGLES, 60, GL_UNSIGNED_INT, indices) ;
  4. glutSwapBuffers() ;
  5. glClear (GL_COLOR_BUFFER_BIT) ;
  6. glPopMatrix () ;


 
à corriger vers:
 

Code :
  1. glPushMatrix () ;
  2. glRotatef (i, 0.0, 1.0, 0.0 ) ;
  3. glDrawElements (GL_TRIANGLES, 60, GL_UNSIGNED_INT, indices) ;
  4. glutSwapBuffers() ;
  5. glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;
  6. glPopMatrix () ;


 


Message édité par bjone le 17-07-2002 à 21:24:13
Reply

Marsh Posté le 17-07-2002 à 21:23:16    

airseb a écrit a écrit :

on voit l'objet tourner mais il clignote puis disparait
pouvez vous m'aidez à trouver les erreurs ?
 
#include <GL/glut.h>
#include <stdlib.h>
 
#define X .525731112119133606  
#define Z .850650808352039932  
 
 
 
 
 for (int i =1; i<360; i++)
 {  
   
  if (i > 360)  
  {
   i = 1;
  }
}




 
c la que ca foire !
 
le i de ta boucle for ne sera jamais > 360 car tu as fixé la condition tel que i soit tjrs < 360.
Donc non :)

Reply

Marsh Posté le 17-07-2002 à 21:25:21    

et il faut aussi permuter le tampon zbuffer et effacer l'écran ;)

Reply

Marsh Posté le 17-07-2002 à 21:27:02    

un Z-Buffer ça se permuttes pas, ça s'effaçes...
(pour être plus précis ça s'initialises à la valeur de la far plane du frustum, mais théoriquement c'est toujours 1.0, car le Z est ramené dans un domaine (0,1) )


Message édité par bjone le 17-07-2002 à 21:29:51
Reply

Marsh Posté le 17-07-2002 à 22:57:49    

merci les gars  :jap:  :D

Reply

Marsh Posté le 17-07-2002 à 23:28:30    

bjone a écrit a écrit :

un Z-Buffer ça se permuttes pas, ça s'effaçes...
(pour être plus précis ça s'initialises à la valeur de la far plane du frustum, mais théoriquement c'est toujours 1.0, car le Z est ramené dans un domaine (0,1) )




 
Excuses je me suis gourré de termes, j'ai permuté Z buffer avec double buffer.
 
Je voulais dire permuter le back buffer et le front buffer voila ;)

Reply

Marsh Posté le 18-07-2002 à 00:23:32    

oki ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed