在DrawTargets 中画点:
BOOL CRenderView::DrawTargets()
{
    double x,y;
    for (int loop = 0; loop < 3; loop++)
{
glLoadName(loop);
x = loop / 4.0;
y = loop / 4.0;
Drawpoint((float)x, (float)y);
}
return TRUE;
}在Selection中拾取:
如果被选中的物体个数hits大于0,则画另一个点,这只是权益之计,为了测试
Selection()能否成功。BOOL CRenderView::Selection()
{
    GLuint  buffer[512];
    GLint    hits,viewport[4];
    
    glGetIntegerv(GL_VIEWPORT, viewport);

    glSelectBuffer(512, buffer);
   (void) glRenderMode(GL_SELECT);

    glInitNames();
    //Initializes The Name Stack
    glPushName(0);

    glMatrixMode(GL_PROJECTION);
    // Selects The Projection Matrix
    glPushMatrix();
    glLoadIdentity();

     gluPickMatrix((GLdouble) mouse_x, (GLdouble)(viewport[3]-                    mouse_y),   0.1f, 0.1f, viewport);
     gluPerspective(45.0f, (GLfloat) (viewport[2]-viewport[0])/ (GLfloat)( viewport[3]-viewport[1]), 0.1f, 1.0f);
     glMatrixMode(GL_PROJECTION);
     glPopMatrix();
     glMatrixMode(GL_MODELVIEW);
     hits = glRenderMode(GL_RENDER);
     if (hits > 0)
     {
Drawpoint((float)-0.3,(float)-0.3);
return TRUE;
     }
     else
return FALSE;
}

解决方案 »

  1.   

    你得在Selection()函数中画图形啊
    GLfloat curprojection_matrix[16];
    glGetFloatv(GL_PROJECTION_MATRIX, curprojection_matrix);
    glGetIntegerv(GL_VIEWPORT, viewport); glSelectBuffer(BUFFERSIZE, selectbuff);
    glRenderMode(GL_SELECT); glInitNames();
    glPushName(0); glMatrixMode(GL_PROJECTION);
    glPushMatrix(); glLoadIdentity();
    gluPickMatrix((GLdouble)point.x, (GLdouble)(viewport[3] - point.y),  5, 5, viewport);
    glMultMatrixf(curprojection_matrix);
    //画目标
             DrawTargets();         glFinish();
    glPopMatrix();
    hits = glRenderMode(GL_RENDER);