airseb | j'ai fait un programme qui lit dans un fichier .ase et qui a l'air de marcher. mais le probleme c que quand je veux afficher mon objet en open gl,j'obtiens un une fenetre avec un fond noir.
pouvez vous m'aider a trouver l'erreur s'il vous plait ?
Code :
- #include <stdio.h>
- #include <iostream.h>
- #include <string.h>
- #include <GL/glut.h>
- #define nb_vertices 200000
- #define nb_faces 200000
- float tab_vertices [nb_vertices][3] ;
- int tab_sommets [nb_faces][3] ;
- int i=0 ;
- int k=0;
- void lecture ()
- {
- char tmp [100] ;
- char tmp2 [100] ;
- char tmp3 [100] ;
- int temp [nb_vertices] ;
- char chaine [100] ;
- strcpy (chaine , "*MESH_VERTEX" ) ; //affecte la chaine "*MESH_VERTEX" au tableau chaine
- char passe_ligne [200] ;
- char nom_fichier[] = "cool.ase" ;
- FILE *cool ; //pointeur sur le fichier cool
- if ((cool = fopen(nom_fichier, "r" )) == NULL)
- return ;
- do
- {
- do
- {
- fscanf(cool, "%s", tmp) ;
- }
- while (strcmp (chaine, tmp) != 0) ; //passe toutes les chaines en revue jusqu'a qu'a ce que tmp soit égal à chaine ("*MESH_VERTEX" )
- do//rempli le tableau avec des coordonnées de vertices
- {
- fscanf (cool, "%d%f%f%f%s", &(temp[0]) ,&(tab_vertices[i][0]), &(tab_vertices[i][1]), &(tab_vertices[i][2]), tmp) ;
- //cout << tab_vertices[i][0]<<" "<<tab_vertices[i][1]<<" "<< tab_vertices[i][2]<<endl ;
- i=i+1 ;
- }
- while (strcmp (tmp, "}" )!=0) ;
- do
- {
- fscanf(cool, "%s", tmp2) ;
- }
- while (strcmp ("A:", tmp2) != 0) ;
- //cout << "bonjour" <<endl ;
- do //rempli le tableau avec le numero des sommets
- {
- fscanf (cool, "%d%s%d%s%d", &(tab_sommets [k][0]),tmp,
- &(tab_sommets [k][1]),tmp, &(tab_sommets [k][2])) ;
- //cout << tab_sommets [k][0]<<" "<<tab_sommets [k][1]<<" "<<tab_sommets [k][2] << endl ;
- k=k+1;
- fgets (passe_ligne, 200, cool) ; //saute une ligne dans le fichier où les données ne servent pas
- fscanf (cool, "%s%s%s", tmp, tmp, tmp3);
- }
- while (strcmp(tmp3, "{" )!=0) ;
- }
- while (!feof(cool)) ;
- fclose (cool) ;
- }
- void reshape (int w, int h)
- {
- glViewport (0, 0, w, h) ;
- glMatrixMode (GL_PROJECTION) ;
- glLoadIdentity () ;
- glFrustum(-100.0 , 100.0, -100.0, 100.0, 5.0, 500.0); //perspective conique
- glMatrixMode(GL_MODELVIEW); //la matrice active de modelisation/visualisation sera affectée
- glLoadIdentity(); //charge la matrice identité
- gluLookAt (0.0, 0.0, 250.0, 0.0,0.0,0.0, 0.0, 1.0, 0.0) ; //caméra placée sur l'axe des Z et regardant vers l'origine
- }
- void display ()
- {
- int l=k*3 ;
- glEnableClientState (GL_VERTEX_ARRAY);
- glVertexPointer (3, GL_FLOAT, 0, &tab_vertices[0][0]);
- glPolygonMode (GL_FRONT_AND_BACK, GL_LINE) ;
- glClear (GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT ) ;
- glDrawElements (GL_TRIANGLES, l, GL_UNSIGNED_INT, tab_sommets) ;
- glFlush () ;
- glutSwapBuffers() ;
- }
- void main (int argc, char** argv)
- {
- lecture () ;
- glutInit (&argc, argv) ;
- glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) ;
- glutInitWindowSize (640, 480) ;
- glutInitWindowPosition (250,250) ;
- glutCreateWindow (argv [0]) ;
- glEnable( GL_DEPTH_TEST );
- glutReshapeFunc (reshape) ;
- glutDisplayFunc (display) ;
- glutMainLoop () ;
-
- }
|
|