1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
void processHits(GLint hits, GLuint buffer[])
{
int i,ii;
unsigned int z;
GLuint *ptr;
if (hits>=taille_pick || hits<0)
printf("trop de points cliques : %d\n", hits);
else
{
/*!on initialise le pointeur*/
ptr = (GLuint *) buffer;
z=ptr[1];
printf(" z is %i;", ptr[1]);
ii=0;
if(z>ptr[2])
z=ptr[2];
for (i = 0; i < hits; i++)
{
/*!on teste quel point picke est le plus proche*/
ptr++;
if(z>*ptr)
{
z=*ptr;
ii=i;
printf(" z is %i;", *ptr);
}
ptr++;
if(z>*ptr)
{
z=*ptr;
ii=i;
printf(" z is %i;", *ptr);
}
ptr++;
ptr=saut(ptr);/*!on saute les donnees*/
}
ptr = (GLuint *) buffer;/*!on reinitialise le pointeur*/
for (i = 0; i < hits; i++) /*! on affiche les caracteristique*/
{
/*!on saute les 3 premieres donnees*/
ptr++;
ptr++;
ptr++;
if(i==ii)
{
if (style==GL_POINTS)
{
printf("Point appartenant l'objet n°");
printf("%d ", *ptr);
num_objett = *ptr;
num_objetV = num_objett;
ptr++;
printf("et a la facette n°");
printf("%d ", *ptr); ptr++;
printf("et ayant pour id ");
printf("%d ", *ptr);
num_facettet = *ptr;
num_facetteV = num_facettet;
ptr++;
}
if (style==GL_LINE_LOOP)
{
printf("Fil appartenant l'objet n°");
printf("%d ", *ptr);
num_objett = *ptr;
num_objetV = num_objett;
ptr++;
printf("Fil appartenant a la facette n°");
printf("%d ", *ptr);
num_facettet = *ptr;
num_facetteV = num_facettet;
ptr++;
}
if (style==GL_POLYGON)
{
printf("Facette appartenant l'objet n°");
printf("%d ", *ptr);
num_objett = *ptr;
num_objetV = num_objett;
ptr++;
printf("Facette n°");
printf("%d ", *ptr);
num_facettet = *ptr;
num_facetteV = num_facettet;
ptr++;
}
printf("\n");
}
else
{
ptr=saut(ptr); /*!on saute les donnees si on est pas sur le bon point*/
}
}
printf("\n");
}
} |
Partager