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
avec les variables globales
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" );
Jusque là, pas de soucis (enfin je crois).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PFNGLLOCKARRAYSEXTPROC glLockArraysEXT = NULL; PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT = NULL;
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
mais là où je suis perdu c'est pour l'utilisation de glUnlockArraysEXT ( ); et de glLockArraysEXT ( );
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);
J'ai tenté de modifier ma fonction d'affichage comme ceci
mais cela produit une erreur de segmentation à l'exécution.
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);
quelqu'un pourrait-il m'aider à précompiler ces fameux vertex array ?
Partager