我想使用gluProject函数,在“渲染”后在2d窗口中获取点坐标.问题是,我得到了奇怪的结果.例如:我有一个x = 16.5的点.当我使用gluProject时,我得到x = -6200.0.
如果我理解gluProject OK,我应该在“渲染”后在屏幕上获得该点的像素位置 – 我是对的吗?如何将奇怪的结果转换为屏幕上的像素坐标?
感谢您的任何帮助!
我使用的代码(“sum1stolemyname”):
GLdouble modelview[16], projection[16]
GLint viewport[4];
glGetDoublev(GL_MODELVIEW_MATRIX, *modelView);
glGetDoublev(GL_PROJECTION_MATRIX, *projection);
glGetIntegerv(GL_VIEWPORT, *viewport);
double tx, ty, tz;
for(i = 0; i < VertexCount; i++)
{
gluProject(vertices[i].x, vertices[i].y, vertices[i].z,
modelview, projection, viewport,
&tx, &ty, &tz)
}
最佳答案 是的,不幸的是,它远远超出了飞机,所以你可以构建一个“射线”进入世界.它不会为您提供在3D空间中绘制的像素的实际位置.你可以做的是从屏幕到你从gluProject得到的点做一条线,然后使用它来找到几何的交点以获得3D空间中的点.或者另一种选择是修改输入矩阵和视口,使远平面的距离更合理.