worldPos screen2world(int x, int y)
{
GLint viewport[4];
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, &winZ);
gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
worldPos v;
v.posX = posX;
v.posY = posY;
v.posZ = posZ;
return v;
}
本文介绍了一个用于将屏幕坐标转换为OpenGL世界坐标的函数worldPosscreen2world。该函数通过获取视口、模型视图矩阵和投影矩阵等信息,利用gluUnProject函数完成坐标转换。
572

被折叠的 条评论
为什么被折叠?



