2010-11-27 127 views
4

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

如果我了解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

这不会编译。您正在混合*和&运算​​符。 – 2010-11-27 22:14:55

+0

更正。谢谢! – MattheW 2010-11-27 22:20:54

回答

2

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