grazie grazie per la riposta,
solo che ho porvato un pò con il tuo codice ma ad un certo punto mi sono persa....ricomincio dall'inizio.
ho le segneti strutture
succesivamente quando disegno i vari oggetti faccio così, assegando in automatico il valore che identificherà quell'oggetto con glLoadName mentre tu mi dici di di fare una glpushname ed una glpopName, domanda:ma sn due cose diverse oppire fanno la stessa cosa?codice:struct oggetto{ GLfloat positionX; GLfloat positionY; GLfloat positionZ; GLint tipo; GLint colore; }; struct listObj{ int counter; oggetto objj[]; }; struct listObj listObject;
tra le varie cose ho anche definito :codice:if(listObject.objj[i].tipo == 5){ glPushMatrix(); float cuboX = listObject.objj[i].positionX; float cuboY = listObject.objj[i].positionY; float cuboZ = listObject.objj[i].positionZ; if(mode == GL_SELECT) glLoadName(i); glTranslatef(cuboX, cuboY, cuboZ); //glColor3f(red,green,blue); glutSolidCube(1.0); glPopMatrix(); } }
anche se gli utlimi due if non vanno bene ma non sapevo come farli.....codice:void processHits (GLint hits, GLuint buffer[]) { unsigned int i, j; GLuint names, *ptr; printf ("hits = %d\n", hits); ptr = (GLuint *) buffer; for (i = 0; i < hits; i++) { /* for each hit */ names = *ptr; ptr+=3; for (j = 0; j < names; j++) { /* for each name */ if(*ptr==1) printf ("oggetto %d", listObject.objj[j].tipo); if(*ptr==2) printf ("oggetto\n", listObject.objj[j].tipo); ptr++; } printf ("\n"); } }
questo è quanto, mi scuso se sono insistente....
maria

Rispondi quotando