Salut a tous,
voila, j'ai une scene avec environ 1000 objects simple (spheres et ellipsoides)
et je fais un "picking" de ces objets "en direct", c'est a dire sans avoir a cliquer sur l'objet mais simplement en passant le curseur dessus.
pour faire ca, j'utilise la fonction callback glutPassiveMotionFunc(passive) pour recuper la position de la souris et boolean pour detected quand la souris s'arrete:
ensuite, j'utilise la fonction idle pour faire le picking:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void passive(int x,int y) { mouse_x = x; mouse_y = y; mouse_stopped=1; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void idle() { int x,y; x = mouse_x; y = mouse_y; if(mouse_stopped==1){ picking(x,y); } stopped=0; glutPostRedisplay(); }
Ca fonctionne mais c'est super lent ! Y-a-t-il un moyen plus efficace de faire ca ? Ou est-ce que, avec 1000 objects, il est plutot normal d'avoir cette lenteur ?
Partager