void Pick(GLdouble x, GLdouble y)
{
GLuint buffer[1024];
const int bufferSize = sizeof(buffer)/sizeof(GLuint);
GLint hits;
GLint min = -1;
GLuint minZ = -1;
glSelectBuffer(bufferSize,buffer);
glRenderMode(GL_SELECT);
glInitNames();
display();
hits = glRenderMode(GL_RENDER);
/* Determine the nearest hit */
int i=0, j=0;
if (hits)
{
for (i=0, j=0; i<hits; i++)
{
if (buffer[j+1]<minZ)
{
/* If name stack is empty, return -1 */
/* If name stack is not empty, return top-most name */
if (buffer[j]==0)
min = -1;
else
min = buffer[j+2+buffer[j]];
minZ = buffer[j+1];
}
j += buffer[j] + 3;
}
}
cout << "Name: " << min << endl;
}