opengl鼠标交互(屏幕二维坐标到三维世界坐标的转换)

void CMFCopenglView::WindowsToGL(CPoint pt, GLdouble &posX, GLdouble &posY, GLdouble &posZ) {GLint    viewport[4];GLdouble modelview[16];GLdouble projection[16];GLfloat  winX, winY, winZ;//GLdouble posX, posY, posZ;glPushMatrix();// 变换要绘图函数里的顺序一样,否则坐标转换会产生错误glRotatef(rotate_x, 1.0, 0.0, 0.0);glRotatef(rotate_y, 0.0, 1.0, 0.0);glRotatef(rotate_z, 0.0, 0.0, 1.0);glGetIntegerv(GL_VIEWPORT, viewport); // 得到的是最后一个设置视口的参数glGetDoublev(GL_MODELVIEW_MATRIX, modelview);glGetDoublev(GL_PROJECTION_MATRIX, projection);glPopMatrix();winX = pt.x;CRect rectDlg;GetClientRect(rectDlg);//获得窗体的大小winY = rectDlg.Height() - pt.y;glReadPixels((int)winX, (int)winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部