我用Opengl做了个拾取的例子,当坐标平移后可以正确选择对象,但是,只要加入对象旋转就不能准确的拾取了!实验代码如下,还望各位不吝赐教,先谢过了!
     int x,y,width,height;
CRect NormalRect(BeginPoint,EndPoint);
NormalRect.NormalizeRect();
x=NormalRect.left;
y=NormalRect.top;
width=NormalRect.Width();
height=NormalRect.Height();
if(width==0||height==0)
{
width=2;
height=2;
} GLuint selectBuf[512]; 
GLint viewport[4]; 
glGetIntegerv (GL_VIEWPORT, viewport); 
glSelectBuffer (512, selectBuf); 
glRenderMode (GL_SELECT); 
glInitNames(); 
glPushName(0); 
glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity ();  glTranslated(200.0,-200.0,0.0);
glRotated(1.0,0.0,0.0,1.0);
gluPickMatrix((GLdouble) x, (GLdouble)(viewport[3]-y),(GLdouble) width,(GLdouble) height, viewport); 
gluOrtho2D(0,viewport[2],0,viewport[3]);


glLoadName(0);
////////////////////////
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
       glBegin(GL_POLYGON);
       glCallList(1);
glEnd();
glFlush(); glMatrixMode(GL_PROJECTION);
glPopMatrix (); 
glFlush();
GLuint Num=glRenderMode (GL_RENDER);