opengl 通过射线鼠标拾取怎么都得不到准确数据
我的程序是这样的。GLdoubleobjx,objy,objz;GLdoubleModelMatrix[16],ProjMatrix[16];glGetIntegerv(...
我的程序是这样的。
GLdouble objx,objy,objz;
GLdouble ModelMatrix[16], ProjMatrix[16];
glGetIntegerv(GL_VIEWPORT, Viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, ModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);
winX = (GLdouble)xPos -145;
winY =81 + (GLdouble)Viewport[3] - (GLdouble)yPos;
gluUnProject(winX, winY, 0.0, ModelMatrix, ProjMatrix, Viewport, &objx, &objy, &objz);
nearPoint.x = objx;
nearPoint.y = objy;
nearPoint.z = objz;
由于我的程序opengl视口是在MFC cstatic控件上画的 winX winY 调试都没问题 但是gluUnProject后得到的obj数据非常的大 都是上千万的数据。得不到准确的数据。
我程序里用过许多变换 是不是这些的问题? 展开
GLdouble objx,objy,objz;
GLdouble ModelMatrix[16], ProjMatrix[16];
glGetIntegerv(GL_VIEWPORT, Viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, ModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);
winX = (GLdouble)xPos -145;
winY =81 + (GLdouble)Viewport[3] - (GLdouble)yPos;
gluUnProject(winX, winY, 0.0, ModelMatrix, ProjMatrix, Viewport, &objx, &objy, &objz);
nearPoint.x = objx;
nearPoint.y = objy;
nearPoint.z = objz;
由于我的程序opengl视口是在MFC cstatic控件上画的 winX winY 调试都没问题 但是gluUnProject后得到的obj数据非常的大 都是上千万的数据。得不到准确的数据。
我程序里用过许多变换 是不是这些的问题? 展开
3个回答
展开全部
我的程序里的变换
glLoadIdentity();
gluLookAt(eyes.x,eyes.y,eyes.z,
posing.x,posing.y,posing.z,
0,0.1,0
);
glRotatef(pitch,sin(-45),0.0f,cos(24.58));
glRotatef(-angle,0.0f,1.0f,0.0f);
glLoadIdentity();
gluLookAt(eyes.x,eyes.y,eyes.z,
posing.x,posing.y,posing.z,
0,0.1,0
);
glRotatef(pitch,sin(-45),0.0f,cos(24.58));
glRotatef(-angle,0.0f,1.0f,0.0f);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
winX = (GLdouble)xPos -145;
winY =81 + (GLdouble)Viewport[3] - (GLdouble)yPos;
glReadPixels(int(winY), int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT, &winZ);
gluUnProject
winY =81 + (GLdouble)Viewport[3] - (GLdouble)yPos;
glReadPixels(int(winY), int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT, &winZ);
gluUnProject
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询