1
嗨every1我一直在这里阅读大量的帖子,关于如何使用gluUnproject,我认为基本上得到了它的工作。 但是我的问题是这个..我得到了1架飞机,如果我点击那里没有问题我的对象去那里,但如果我点击它之外,我的对象消失任何想法为什么它这样做,我该如何解决它?这是我gluUnprojectgluUnproject问题/移动字符问题
的功能GetOGLPos(float x, float y)
{
GLint viewport[4];
GLfloat depth[2];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glGetIntegerv(GL_VIEWPORT, viewport);
winX = (float)x;
winY = (float)viewport[3] - (float)y;
glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth);
gluUnProject(winX, winY, depth[0], modelview, projection, viewport, &posX, &posY, &posZ);
std::cout<< posX<<" "<<posZ<<std::endl;
PosP.x = posX;
PosP.z = posZ;
PosP.y = 20.0f;
}
IM刚刚打印值知道那里的对象会和POSP是一个Vector和IM移动我的字符传递变量(IVE得到任何物理或类似的东西在这个项目btw)
所以基本上你的意思是检查Z并找到我的飞机在哪里结束,所以如果它不在那里就不提供它或保持相同的位置正确? – Makenshi 2011-06-12 23:16:55
是的,这是主意。 – 2011-06-12 23:47:49