[SDL+glut] vertex array précompilés
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:
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:
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:
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:
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 ?