# Picking Problem. Urgent!!

This topic is 4992 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi, anyone pls help me to see the coding, it is suppose to put a stone on the chess board, i followed by Redbook's simple picksquare,but why i can get the position but the stone is not appear on it.anyone have idea? Thank you. ............... void draw_pieces(void) { GLfloat white[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat black[4] = { 0.0f, 1.0f, 0.0f, 1.0f }; GLfloat *color; int x,z; glPushAttrib(GL_LIGHTING | GL_TEXTURE_BIT); glPushAttrib(GL_TEXTURE_BIT); glEnable(GL_TEXTURE_2D); for (x = 0; x < 11; x++) for (z = 0; z < 11; z++) { if (board[x][z] != -1) { color = board[x][z] == 0 ? white : black; glColor4fv(color); glPushMatrix(); glTranslatef(z * 2.0 - 10, 0.0, 10 - x * 2.0); glCallList(piece); glPopMatrix(); } } glPopAttrib(); } void buildBoard(void) { GLuint i, j; int sq; board_list = glGenLists(1); glNewList(board_list, GL_COMPILE); glPushAttrib(GL_TEXTURE_BIT); glEnable(GL_TEXTURE_2D); for (i = 0; i < 11; i++) { //if (mode==GL_SELECT) glLoadName (i + BOARD_NAME_OFFSET); for (j = 0; j < 11; j ++) { //if(mode==GL_SELECT) glPushName (j + BOARD_NAME_OFFSET); sq = (i * 11) + j; if (sq % 11 == 0) { if (sq == 0) glBindTexture(GL_TEXTURE_2D, textures[3]); else if (sq == 110) glBindTexture(GL_TEXTURE_2D, textures[0]); else glBindTexture(GL_TEXTURE_2D, textures[7]); } else if (sq % 11 == 10) { if (sq == 10) glBindTexture(GL_TEXTURE_2D, textures[2]); else if (sq == 120) glBindTexture(GL_TEXTURE_2D, textures[1]); else glBindTexture(GL_TEXTURE_2D, textures[5]); } else if (sq > 0 && sq < 10) glBindTexture(GL_TEXTURE_2D, textures[6]); else if (sq > 110 && sq < 120) glBindTexture(GL_TEXTURE_2D, textures[4]); else glBindTexture(GL_TEXTURE_2D, textures[8]); /* below translating scheme centers the board in the scene */ glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(j * 2.0f - 11.0f, 0.0f, 11.0f - i * 2.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(j * 2.0f - 9.0f, 0.0f, 11.0f - i * 2.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(j * 2.0f - 9.0f, 0.0f, 9.0f - i * 2.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(j * 2.0f - 11.0f, 0.0f, 9.0f - i * 2.0f); glEnd(); //if(mode==GL_SELECT) glPopName (); } } glPopAttrib(); glEndList(); printf("board_list= %d\n", board_list); } /* processHits prints out the contents of the * selection array. */ void processHits (GLint hits, GLuint buffer[]) { GLint i; GLuint j, ii = 0, jj = 0, names, *ptr; printf ("hits = %d\n", hits); ptr = (GLuint *) buffer; for (i = 0; i < hits; i++) { /* for each hit */ names = *ptr; printf (" number of names for this hit = %d\n", names); ptr++; printf(" z1 is %g;", (float) *ptr/0x7fffffff); ptr++; printf(" z2 is %g\n", (float) *ptr/0x7fffffff); ptr++; printf (" names are "); for (j = 0; j < names; j++) { /* for each name */ printf ("%d ", *ptr - BOARD_NAME_OFFSET); /* must subtract this to get true [x][y] coordinate */ if (j == 0) /* set row and column */ ii = *ptr; else if (j == 1) jj = *ptr; ptr++; } printf ("\n"); /*board[ii][jj] = (board[ii][jj] + 1) % 3;*/ } } /* pickSquares() sets up selection mode, name stack, * and projection matrix for picking. Then the * objects are drawn. */ #define BUFSIZE 512 void pickSquares(int x, int y) { GLuint selectBuf[BUFSIZE]; GLint hits; GLint viewport[4]; //(void) mouseButtonAction(); glGetIntegerv (GL_VIEWPORT, viewport); glSelectBuffer (BUFSIZE, selectBuf); (void) glRenderMode (GL_SELECT); glInitNames(); glPushName(0); glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); /* create 2x2 pixel picking region near cursor location*/ gluPickMatrix ((GLdouble) x, (GLdouble) (viewport[3] - y),1.0, 1.0, viewport); gluPerspective(40.0, (GLfloat) viewport[2] / (GLfloat) viewport[3],1.0, 1000.0); //buildBoard(GL_SELECT); glCallList(board_list); //glMatrixMode (GL_PROJECTION); glPopName(); glPopMatrix (); glFlush (); hits = glRenderMode (GL_RENDER); processHits (hits, selectBuf); glMatrixMode(GL_MODELVIEW); glutPostRedisplay(); } ......................

##### Share on other sites
is there really no one can help???

1. 1
Rutin
33
2. 2
3. 3
4. 4
5. 5

• 14
• 9
• 9
• 9
• 9
• ### Forum Statistics

• Total Topics
633331
• Total Posts
3011391
• ### Who's Online (See full list)

There are no registered users currently online

×