鼠标捡选(窗口坐标系转化为3D世界坐标系)
来源:互联网 发布:海贼王漫画885知乎 编辑:程序博客网 时间:2024/05/22 17:00
//如果鼠标点中物体,则返回真,且选中的点在世界坐标系中的坐标为(x,y,z);否则返回假
bool MousePick_WndToWorld( double &x, double &y, double &z)
{
float depth ;//尝试值
POINT p;
GetCursorPos(&p);
::ScreenToClient(g_pGame ->Get_hwnd(), &p);
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY;
GLdouble posX, posY, posZ;
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
winX = (float)p.x;
winY = viewport[3] - (float)p.y;
glReadPixels((int)winX, (int)winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth);//获取深度
gluUnProject(winX, winY, depth, modelview, projection, viewport, &x, &y, &z); //找到该点的3D坐标
CPT_3D vector;
vector.m_fX = (float)x;
vector.m_fY = (float)y;
vector.m_fZ = (float)z;
if ( fabs(depth- 1.0f) <= 1e-10)//depth为1表示帧缓存里没有数据,即表示鼠标没有点中任何物体
{
return false;
}
return true;
}
- 鼠标捡选(窗口坐标系转化为3D世界坐标系)
- 从世界坐标系到相机坐标系(3D物体到2D图像的转变)
- 从世界坐标系到相机坐标系(3D物体到2D图像的转变)
- 3D 坐标系 2D坐标系
- 屏幕坐标系,世界坐标系
- 图像坐标系、世界坐标系
- Away3D学习笔记2--3D世界的坐标系
- Away3D学习笔记2--3D世界的坐标系
- 3D坐标系变换
- 3D数学 坐标系
- 将当前坐标系设置为世界坐标系WCS
- [Polygon]谷歌墨卡托坐标系图形转化为WGS84地理坐标系图形
- 图像坐标系、摄像机坐标系与世界坐标系
- 世界坐标系与本地坐标系
- 世界坐标系VS 本地坐标系
- convertToWorldSpace转换为世界坐标系用法
- 世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- 世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- D3D入门:D3DFVF
- 向生命致敬
- mysql的cardinality在myisam和innodb中的不同
- [趣图] 如何“在21天内自学C++”
- Visual Studio中不能应用System.Web.Script.Serialization的解决办法
- 鼠标捡选(窗口坐标系转化为3D世界坐标系)
- Qt源码分析之QObject
- XP下硬盘安装Ubuntu 9.10 笔记
- struts 配置文件详解
- 怎样解决mysql的too many connections问题?
- Servlet上传下载
- 关于访问控制权限00
- U**G项目数据同步问题
- 北京Silverlight4线下技术交流会圆满结束