在3D视图中,经过旋转、缩放、平移之后,任然可以获取鼠标位置对应的真实坐标。
思路:获取OpenGL模型矩阵和投影矩阵, 对鼠标位置信息进行反投影计算。
主要函数:
glReadPixels 通过深度缓存获取Z坐标
gluUnProject 实现反投影
POINT point; // 鼠标位置
GLint viewport[4];
GLdouble mvmatrix[16], projmatrix[16];
glGetIntegerv(GL_VIEWPORT, viewport); // viewport[3] is height of window in pixels
glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix); // 模型变换矩阵
glGetDoublev(GL_PROJECTION_MATRIX, projmatrix); // 投影矩阵
GLDouble winx = point.x, winy = viewport[3] - point.y - 1;
GLFloat fdepth;
glReadPixels(point.x, viewPort[3]-point.y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &fdepth);
GLDouble winz = fdepth;
GLDouble objx, objy, objz;
gluUnProject(winx, winy, winz, mvmatrix, projmatrix, viewport, &objx, &objy, &objz); // 反投影

3D视图中获取鼠标所在位置相关推荐

  1. WPF中获取鼠标相对于桌面位置

    原文:WPF中获取鼠标相对于桌面位置 var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFr ...

  2. WPF中获取鼠标相对于屏幕的位置

    WPF中获取鼠标相对于屏幕的位置                                   周银辉 WPF编程时,我们经常使用Mouse.GetPosition(IInputElement ...

  3. IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)

    IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) 参考文章: (1)IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) (2)https:// ...

  4. jq和js用mousemove获取鼠标当前位置

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. Windows核心编程_获取鼠标指定位置的RGB颜色值

    Windows核心编程_获取鼠标指定位置的RGB颜色值 大家平常会见到很多屏幕取色工具,其原理都是获取鼠标位置的屏幕像素点颜色! 一般思路都是:获取鼠标位置,然后取出鼠标指向的屏幕像素点颜色! Get ...

  6. python 移动鼠标位置_python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,利用它可以实现自动化任务 本章介绍了许多不同函数,下面是快速的汇总参考: moveTo(x,y)将鼠 ...

  7. openlayers学习——10、openlayers监听获取鼠标坐标位置

    openlayers监听获取鼠标坐标位置 前言:基于Vue,学习openlayers,根据官网demo,记录常用功能写法.本人不是专业GIS开发,只是记录,方便后续查找. 参考资料: openlaye ...

  8. shell脚本中获取当前所在目录地址

    shell脚本中获取当前所在目录如下 #!/bin/bashwork_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd ${work_pat ...

  9. WPF 获取鼠标屏幕位置、窗口位置、控件位置

    原文:WPF 获取鼠标屏幕位置.窗口位置.控件位置 public struct POINT{public int X;public int Y;public POINT(int x, int y){t ...

最新文章

  1. Java GC 日志解析
  2. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章
  3. 分治递归逆序数_[模板] 归并排序 逆序数 分治
  4. LaTex 并集交集等
  5. 4MLinux 24.0 发布
  6. Java中使用Jacob实现Windows下语音合成并生成音频文件
  7. RedirectToAction()转移方式及参数传递
  8. Git 常用操作 | 重写 commit 历史
  9. springboot项目中关于时间类型转换的格式问题
  10. js 设置password placeholder样式_150+ 个优质的 Node.js 包和资源
  11. 怎么打断点_孩子注意力不集中怎么办?7招提升儿童专注力,方法简单效果好...
  12. github fork别人项目后如何同步更新原项目
  13. Android Studio GPU/CPU/Network/Memory monitor使用
  14. netdev_priv
  15. 加域电脑激活指纹识别
  16. hook(useState、useEffect、useReducer)、context、React项目起始
  17. Vlink——虚链路
  18. 基于android的手机位置系统,基于Android和SIM900A模块的位置实时监控系统的设计与实现...
  19. 水印去除(基于nosie2noise优化 代码+模型)
  20. Linux free 查看内存使用情况 常用命令

热门文章

  1. 嵌入式linux轻量级sshd服务工具Dropbear移植
  2. 计算机自动安装程序,如何阻止电脑自动安装垃圾软件
  3. java连接SQL Sever数据库(超详细!)
  4. 达梦数据库的归档配置
  5. tomcat域名绑定,把自己机器里的站点发布到Internet上,花生壳的使用[转]
  6. 工具栏浏览器主页被篡改修复方法
  7. HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
  8. 学习《Linux就该这么学》第十五课
  9. 相位?相位差?全局相位和局部相位的数学逻辑是什么?
  10. DevOps死了吗?平台工程能否取代DevOps?