您的位置:首页 > 运维架构

屏幕坐标到OpenGL世界坐标的转换

2013-05-13 20:07 751 查看
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 C++ 世界坐标