OpenGL gluProject() - 奇怪的结果

时间:2010-11-27 22:04:19

标签: opengl projection

我想使用gluProject函数,在“渲染”后的2d窗口中获取点坐标。问题是,我得到了奇怪的结果。例如:我有一个x = 16.5的点。当我使用gluProject时,我得到x = -6200.0。

如果我理解gluProject确定,我应该在“渲染”后在屏幕上获得该点的像素位置 - 我是对的吗?如何将奇怪的结果转换为屏幕上的像素坐标?

感谢您的帮助!

我使用的代码(“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)
}

1 个答案:

答案 0 :(得分:2)

是的,遗憾的是它确实远远超出了飞机,所以你可以在世界上构建一条“射线”。它不会为您提供在3D空间中绘制的像素的实际位置。你可以做的是从屏幕到你从gluProject得到的点做一条线,然后使用它来找到几何的交点以获得3D空间中的点。或者另一种选择是修改输入矩阵和视口,使远平面的距离更合理。