【问题标题】:OpenGL gluProject() - strange resultsOpenGL gluProject() - 奇怪的结果
【发布时间】:2010-11-27 22:04:19
【问题描述】:

我想使用gluProject 函数,在“渲染”后获取二维窗口中的点坐标。问题是,我得到了奇怪的结果。例如:我有一个 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)
}

【问题讨论】:

  • 这不会编译。您正在混合使用 * 和 & 运算符。

标签: opengl projection


【解决方案1】:

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

【讨论】:

  • 不好意思,我想到了 GLUnProject。
猜你喜欢
  • 2020-12-04
  • 2017-03-11
  • 2012-04-05
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2016-11-28
  • 2012-12-16
  • 2012-12-06
相关资源
最近更新 更多