ciao scusami ancora ma non avendo il glaux.h inizialmente non mi compilava, poi anche inserendo tale file .h in c:\program files\microsof sdks\windows\v6.1\include\gl ancora non va!!! come faccio?
Hai aggiunto anche il file glaux.lib nella cartella delle librerie?
Hai aggiunto glaux.lib nella lista del linker nella proprietà del progetto?

comunque avevo provato ad utilizzare una funzione per il picking di un esempio 2D e quindi va alla grande per il 2D ma se la inserisco nel mio codice per il 3D non funziona, mi rileva 0 hits ma com'è possibile ??
É piuttosto facile far funzionare il picking in 2D (x,y) perché hai una proiezione ortogonale sullo schermo (w,h), nel 3D invece il selection buffer deve fare riferimento ad una matrice trasformata dove il mondo 3D (x,y,z) è correttamente proiettato sullo schermo (w,h).
Se guardi la funzione HitTest(int x, int y) contiene questo codice:

codice:
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
		glLoadIdentity();
		gluPickMatrix((GLdouble)x, (GLdouble)(viewport[3] - y), 3.0, 3.0, viewport);
		gluPerspective(Cam.fovy, Cam.ratio, Cam.zNear, Cam.zFar);
			
			DrawScene(GL_SELECT);

		glMatrixMode(GL_PROJECTION);
	glPopMatrix();
che è quello che gli permette di svolgere una simile operazione. Si legge che nel ridefinire la matrice in modalità selezione occorre ridefinire la prospettiva alla stesso modo in cui è stata definita all'apertura della finestra e disegnarvi gli oggetti nello stesso modo in cui sono stati disegnati in modalità rendering.


per quanto riguarda l'utilizzo di glPushName o glLoadName:
http://www.opengl.org/sdk/docs/man/xhtml/glPushName.xml
http://www.opengl.org/sdk/docs/man/xhtml/glLoadName.xml

si legge:
glLoadName causes name to replace the value on the top of the name stack.
glPushName causes name to be pushed onto the name stack.

Il che significa che possono essere adoperati entrambi ma in modi differenti (non sono la stessa cosa).