mon animation disparait au bout de quelque secondes !!! [open gl] - Programmation
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]
Marsh Posté le 17-07-2002 à 21:22:12
C'est ton Z-Buffer.
Code :
|
à corriger vers:
Code :
|
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
Marsh Posté le 17-07-2002 à 21:25:21
et il faut aussi permuter le tampon zbuffer et effacer l'écran
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) )
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
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