Salve a tutti spero mi possiate aiutare!
Il problema è che quando clicco su un oggetto il sistema me lo riconosce solo che seleziona qualunque oggetto che sta all'interno della scena visibile...

Ecco il codice:
codice:
void list_hits(GLint hits, GLuint *names){ /**
 * Per ogni tocco sono allocati 4 bytes
 * Scrivo per comodità in realtà non mi serve più avanti questo abiliterà la luce direzionale
 * sull'oggetto
 */
   for (int i = 1; i < hits; ++i){
        printf("Numero di click: %d\n"
                                "Min Z: %d\n"
 				"Max Z: %d\n"
 				"Oggetto cliccato: %d\n",
 				(GLubyte)names[i * 4],
 				(GLubyte)names[i * 4 + 1],
 				(GLubyte)names[i * 4 + 2],
 				(GLubyte)names[i * 4 + 3]
 				);
 	printf("\n");
 	/*if((GLubyte)names[i * 4 + 3] == 11 && click1 == false) {
          click1 = true;
          }else if((GLubyte)names[i * 4 + 3] == 11 && click1 == true) click1 = false;  //sta roba mi abilita il tasto premuto*/
   }
 }
void gl_select(int x, int y){
        GLuint buff[64] = {0};
        GLint hits, view[4];


 	//Questo sceglie il buffer dove verranno inseriti i valori
 	glSelectBuffer(64, buff);
        
        //Questo prende informazioni sulla viewport
  	glGetIntegerv(GL_VIEWPORT, view);


 	glRenderMode(GL_SELECT);
 
        // Da l'avvio per inizializzare i nomi
  	glInitNames();


  	glPushName(0);


 	//Questo mi restringe l'area di selezione attorno al cursore
 	glMatrixMode(GL_PROJECTION);
 	glPushMatrix();
 	glLoadIdentity();


 	gluPickMatrix(x, (view[3] - y), 3.0f, 3.0f, view);
 	gluPerspective(45.0f, (view[2] - view[0]) / (view[3] - view[1]), 0.1f, 100.0f);


 	glMatrixMode(GL_MODELVIEW);


 	glutSwapBuffers();
 	
        display();


 	glMatrixMode(GL_PROJECTION);
 	glPopMatrix();


        //Questo mi dice quanti sono gli oggetti scritti nell'area
        hits = glRenderMode(GL_RENDER);
        
        //Scrive gli oggetti nella lista
 	list_hits(hits, buff);


 	glMatrixMode(GL_MODELVIEW);
}
/**
 * Callback per la gestione dei click del mouse
 */
void processMouse(int button, int state, int x, int y) {
  if ((button == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)){
            gl_select(x,SH-y);
  }
}
Questa è la display:
codice:
void display(){      
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


      cameraMov();


      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      GLdouble ratio = static_cast<GLdouble>(width) / static_cast<GLdouble>(height);
      gluPerspective(45, //angolo di visuale
		     ratio, //aspect ratio (rapporto tra larghezza e altezza)
		     1, //Z near cutting plane
		     1000); //Z far cutting plane


      glMatrixMode(GL_MODELVIEW);


      creaPavimento();


      creaDome();
      
      if(click1){
            glutSolidSphere(0.4, 20, 20);
      }


      glFlush();
      glutSwapBuffers();
}