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

OpenGL环境下的射线选择

2010-08-26 21:04 453 查看
用过OpenGL的人,应该都知道,OpenGL是自带拾取功能的,但用过的人应该也知道,这功能确实不好用。代码

winX = point.x;
winY = screenHeight - point.y;

//获取像素对应的前裁剪面的点坐标
bool bResult = gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 nearPoint;
nearPoint.x = posX; nearPoint.y = posY; nearPoint.z = posZ;
//获取像素对应的后裁剪面的点坐标
bResult = gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 farPoint;
farPoint.x = posX; farPoint.y = posY; farPoint.z = posZ;

第四步,计算待选择目标跟该的关系,将与射线距离最近的对象,作为选择对象。

第五步,本文绘制了分布在不同三维空间的5个点,用鼠标右键,可以进行点的选择,如果选中,点会变成黄色,鼠标左键可以随意对这些点进行旋转等。

程序源代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: