salut a tous

je n'arrive pas a faire fonctionner le picking. J'utilise glut et glui. J'arrive a detecter lorsque je clique sur mes objets (ici des points), mais le nom renvoyé est toujours "0"...
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void select (int x, int y)
{
    GLuint selectBuf[1024];
    GLint hits=0;
    GLint viewport[4];
 
    glGetIntegerv (GL_VIEWPORT, viewport);
    glSelectBuffer (1024, selectBuf);
    (void) glRenderMode (GL_SELECT);
 
    glInitNames();
    glPushName(0);
 
    glMatrixMode (GL_PROJECTION);
    glPushMatrix ();                 // push projection 
    glLoadIdentity ();
    gluPickMatrix((GLdouble) x, (GLdouble) (viewport[3] - y), 5.0, 5.0, viewport);
	glFrustum( -xy_aspect*.04, xy_aspect*.04, -.04, .04, .1, 200.0 );
 
    // on dessine...
	picking = true;
    dessinePoint();
	picking = false;  
    glPopMatrix ();        // pop projection 
    glFlush();
 
    hits = glRenderMode (GL_RENDER);
    processHits (hits, selectBuf);
    glutPostRedisplay();
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void processHits (GLint hits, GLuint buffer[])
{
   	for (int i = 0; i < hits; i++)
 		printf(	"Number: %d\n"
 				"Min Z: %d\n"
 				"Max Z: %d\n"
 				"Name on stack: %d\n",
 				(GLubyte)buffer[i * 4],
 				(GLubyte)buffer[i * 4 + 1],
 				(GLubyte)buffer[i * 4 + 2],
 				(GLubyte)buffer[i * 4 + 3]
 				);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void dessinePoint(  )  
{
	int n=1;
    glPointSize(10);
        glBegin(GL_POINTS);
			for (int i=-5 ; i<=5 ; i+=5)
				for (int j=-5 ; j<=5 ; j+=5)
					for (int k=-5 ; k<=5 ; k+=5)
					{
						if (picking)	glLoadName(n++); 
						glVertex3i(i,j,k);
					}
		glEnd();
}
Merki!