读书人

屏幕坐标怎么转化为opengl中的坐标

发布时间: 2012-02-11 09:51:34 作者: rapoo

屏幕坐标如何转化为opengl中的坐标
屏幕坐标如何转化为opengl中的坐标啊?各位帮帮忙

[解决办法]
我也遇到这种问题了。。。就是gluUnProject不起作用,调试的时候传进去的参数都有值,但是返回的posx就没有值了
[解决办法]
除了与PushMatrix()对应的glPopMatrix()没有,这段代码我没看出什么问题来!
[解决办法]
以下是一段将屏幕坐标转化为三维空间坐标的代码
GLfloat winX, winY,winZ;
GLdouble posXf, posYf, posZf,posXn, posYn, posZn;
GLdouble posX,posY,posZ;
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
glPushMatrix();
glGetIntegerv(GL_VIEWPORT, viewport); // 得到的是最后一个设置视口的参数
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glPopMatrix();
winX = point.x;
winY = viewport[3] - point.y;
gluUnProject(winX, winY, 0, modelview, projection, viewport, &posXn, &posYn, &posZn);
gluUnProject(winX, winY, .1, modelview, projection, viewport, &posXf, &posYf, &posZf);
posX=-posZf/(posZn-posZf)*(posXn-posXf)+posXf;
posY=-posZf/(posZn-posZf)*(posYn-posYf)+posYf;//posZ默认为0
[解决办法]
屏幕坐标如何转化为opengl中的坐标

这个好想不可以了吧,投影阵不满秩,数据会丢失的
[解决办法]
ScreenToWindow()
//Win32 API

读书人网 >VC/MFC

热点推荐