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
codice:
struct oggetto{
GLfloat positionX;
GLfloat positionY;
GLfloat positionZ;
GLint tipo;
GLint colore;
};
struct listObj{
int counter;
oggetto objj[];
};
struct listObj listObject;
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:
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();
}
}
tra le varie cose ho anche definito :
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");
}
}
anche se gli utlimi due if non vanno bene ma non sapevo come farli.....
questo è quanto, mi scuso se sono insistente....
maria