void GLRender::SetPickPoint(int x, int y)
{
        // OpenGL에서 Unsigned Integer
        GLuint selectBuf[BUFSIZ]; // 512
        GLint hits, viewport[4];

        glSelectBuffer(BUFSIZ, selectBuf); //선택한 결과 저장할 곳 선택.
        glRenderMode(GL_SELECT);                
        glInitNames();
        glPushName(0);
        glPushMatrix();

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glGetIntegerv(GL_VIEWPORT, viewport);        

        gluPickMatrix(x-3,  y-3, 6, 6, viewport);  //선택을 할 때 검사 할 공간을 정의.
        glOrtho(0.0, clip_x, 0.0, clip_y, -1, 1); //뷰포트 변경시 왜곡현상 관련

        render_mode = SELECT;
        GLRenderScene(pDrawObjectList, NULL);   
        glPopMatrix();
        glFlush();

        hits = glRenderMode(GL_RENDER);                        //렌더링모드 변경

        processHits(hits,selectBuf);                        
}


void GLRender::processHits(int hits, GLuint* sbuffer)
{
        int k = 0;
        for(int i=0; i<hits; i++)
        {
                int n0 = sbuffer[k];
                for(int j=0; j<n0; j++)
                {
                        POSITION pos = pDrawObjectList->GetHeadPosition();
                        DrawObject* drawObject;
                        // 그려진 리스트 속의 객체들 Pick
                        while(pos != NULL)
                        {        
                                drawObject = (DrawObject*)pDrawObjectList->GetNext(pos);
                                if(drawObject->id == sbuffer[k+3+j])
                                        drawObject->selected = TRUE;
                        }
                }
                k += n0 + 3;
        }
}


궁금한것은 processHits 함수입니다.
위에 함수는 픽킹인것까진 알겠는데 아래함수는 뭘 하는 건지 모르겠네요 n0 는 뭐고 sbuffer[k+3+j] 는 왜하는거며  k += n0 + 3; 는 뭐하는 넘인지 모르겠네요. 

그리고 또 다른 opengl 질문은 픽킹을 한 개체를 좌표변환을 시켜줄수있나요? glTranslatef 함수를 써서 움직이게 만들고 싶은데 ^^;; 
접근을 못하겠네요..휴우 ㅠㅠ