bien le bonjour,

j'essaie d'utiliser les vertex array précompilés mais sans grand succès.
voilà comment je m'y prends :

dans l'initialisation d'opengl je rajoute ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
glEnableClientState ( GL_VERTEX_ARRAY );
  char *exten = (char *) glGetString(GL_EXTENSIONS);
  if (strstr(exten, "GL_EXT_compiled_vertex_array") == 0)
  {
     fprintf(fichier_log,"<<< GL_EXT_compiled_vertex_array NOT found >>>\n");
     SDL_quit(1);
  }
  else fprintf(fichier_log, "<<< GL_EXT_compiled_vertex_array found >>>\n");
 
  glLockArraysEXT = ( PFNGLLOCKARRAYSEXTPROC )
  GetProcAdd ( "glLockArraysEXT" );
  glUnlockArraysEXT = ( PFNGLUNLOCKARRAYSEXTPROC )
  GetProcAdd ( "glUnlockArraysEXT" );
avec les variables globales
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
PFNGLLOCKARRAYSEXTPROC glLockArraysEXT = NULL;
PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT = NULL;
Jusque là, pas de soucis (enfin je crois).
Passons à la fonction d'affichage.
j'ai déclaré les vertex array en temps que variables globales, pas de problème, je les fait afficher avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 glInterleavedArrays(GL_T2F_V3F, 0, data); 
  glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_INT, indices);
mais là où je suis perdu c'est pour l'utilisation de glUnlockArraysEXT ( ); et de glLockArraysEXT ( );

J'ai tenté de modifier ma fonction d'affichage comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 glUnlockArraysEXT ( );
glInterleavedArrays(GL_T2F_V3F, 0, data); 
glLockArraysEXT ( 0, ( GLsizei ) 1 );
  glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_INT, indices);
mais cela produit une erreur de segmentation à l'exécution.

quelqu'un pourrait-il m'aider à précompiler ces fameux vertex array ?