1.OpenGL自带拾取功能。glSelectBuffer等函数完成。

大每一本OpenGL入门的书都会讲到OpenGL的Select模式,它采用一种方法使得可以获取当前鼠标点选的几何图形。简单的来说这种方式就是首先调 整Projection矩阵,使得你透过从鼠标点选附近的一个正方形(大小可设置)看到的世界。然后开始绘制,当每一次绘制的时候都会判断你会不会看到。 如果看到,那么,你就是选择了这个几何图形了。更为具体的过程可以参见相关的书籍。

http://hi.baidu.com/sishenfuhuo/blog/item/e98b852ef94013371e30892a.html2.在OpenGL红宝书中介绍了一种简便易行的办法:在后缓冲中 使用不同的颜色重绘所有对象,每个对象用一个单色来标示其颜色,这样画好之后我们读取鼠标所在点的颜色,就能够确定我们拣选了哪个物体。这种方法有一个缺 陷,当场景中需要选择的对象的数目超出一定限度时,可能会出现标识数的溢出。对于这个问题,红宝书给出的解决办法就是多次扫描。实践证明这种方法的确简便 易行,但仍有不少局限性,而且做起来并不比第一种机制方便多少。限于篇幅,不再赘述。

3.还有一种方法是射线相交检测法。

http://www.ophonesdn.com/article/show/164

4.关于相交性检测的文章如下

http://www.cnblogs.com/graphics/archive/2010/08/09/1795348.html

1.先用参数法求交点 ,然后 用叉乘公式可以求得面积,用面积法判断是否在之内。

2.或者用上面的参数法。直接定义一个三角形内的点。然后用u,v参数表示。求得参数后,根据范围来判断。

段页式内存管理, 逻辑地址, 线性地址, 物理地址 等等
逻辑地址(Logical Address) 是 指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相 对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行 自动地址转换);逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透明 的,仅由系统编程人员涉及。应用程序员虽然自己可以直接操作内存,那也只能在操作系统给你分配的内存段操作。

线性地址(Linear Address) 是逻辑地址到物理地址变换之间的中间层。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了分页机 制,那么线性地址可以再经变换以产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。Intel 80386的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。

物理地址(Physical Address) 是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。

虚拟内存(Virtual Memory) 是指计算机呈现出要比实际拥有的内存大得多的内存量。因此它允许程序员编制并运行比实际系统拥有的内存大得多的程序。这使得许多大型项目也能够在具有有限 内存资源的系统上实现。一个很恰当的比喻是:你不需要很长的轨道就可以让一列火车从上海开到北京。你只需要足够长的铁轨(比如说3公里)就可以完成这个任 务。采取的方法是把后面的铁轨立刻铺到火车的前面,只要你的操作足够快并能满足要求,列车就能象在一条完整的轨道上运行。这也就是虚拟内存管理需要完成的 任务。在Linux 0.11内核中,给每个程序(进程)都划分了总容量为64MB的虚拟内存空间。因此程序的逻辑地址范围是0x0000000到0x4000000。

有时我们也把逻辑地址称为虚拟地址。因为与虚拟内存空间的概念类似,逻辑地址也是与实际物理内存容量无关的。

逻辑地址与物理地址的“差距”是0xC0000000,是由于虚拟地址->线性地址->物理地址映射正好差这个值。这个值是由操作系统指定的。

http://www.mtime.com/my/1085324/blog/1499099/

OpenGL鼠标拾取相关推荐

  1. OpenGL 鼠标拾取模型

    1.简介 在我们的场景中,使用鼠标光标点击或"挑选"一个3d对象是很有用的.一种方法是从鼠标投射3d光线,通过相机,进入场景,然后检查光线是否与任何物体相交.这通常被称为光线投射. ...

  2. opengl 鼠标拾取

    代码 void GLWidget::HitGet(QPoint pos) { GLuint NameBuffer[27]; GLint viewport[4]; GLint hits; glGetIn ...

  3. opengl作业三维虚拟场景_乱弹OpenGL选择-拾取机制

    无论是游戏还是VR,三维世界总免不了与用户的交互.而这其中常也免不了"用户对场景中物件的选择(也就是,拾取)"这种需求.OpenGL本身就内置有一套拾取机制,这次就乱弹一下吧.(乱 ...

  4. OpenGL3.3鼠标拾取物体

    OpenGL3.3鼠标拾取物体 本文翻译自:http://www.lighthouse3d.com/tutorials/opengl-selection-tutorial/ 在3D场景中拾取或选择特定 ...

  5. Android OpenGL射线拾取手势旋转(二)

    上回分解-_-!,Android OpenGL射线拾取&手势旋转(一). 3)Renderer:RayPickRenderer.java OpenGL渲染器,比较多的东西都在这里面了. pub ...

  6. Three.js - 鼠标拾取(射线追踪法)(十九)

    射线追踪法 射线追踪法是最常见的方法,因为three.js提供了Raycaster对象来实现它. 原理:从鼠标处发射一条射线,穿透场景的视椎体,通过计算,找出与射线相交的对象. Raycaster 属 ...

  7. DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互

    一.硬件实例化(Hardware Instancing) 硬件实例化指的是在场景中绘制同一个物体多次,但是是以不同的位置.旋转.缩放.材质以及纹理来绘制(比如一棵树可能会被多次使用以构建出一片森林). ...

  8. 鼠标拾取(光线拾取)

    作者:桑榆 QQ:934440653 有问题,评论留言,或qq联系 案例效果 鼠标拾取 主要代码 1.创建矩形 (1)6-8行限制随机产生的矩形的长.宽.纵深不超过20: (2)14-16行限制随机产 ...

  9. OpenGL鼠标视角交互

    OpenGL鼠标视角交互 1. 欧拉角 2. 鼠标输入 1. 欧拉角 欧拉角(Euler Angle)是可以表示3D空间中任何旋转的3个值,一共有3种欧拉角:俯仰角(Pitch).偏航角(Yaw)和滚 ...

最新文章

  1. Elixir 1.2带来多项功能增强和性能提升
  2. 自动管理Windows2003好用的“远程桌面”
  3. CentOS5.4下安装和配置Apache、PHP、MySql、PHPMyAdmin
  4. ASP.NET完整打包卸载更新攻略(By Installshield 2010)【转】
  5. 美媒:小米新浪达成合作 采取行动对抗腾讯
  6. dbcc dbreindex server sql_DBCC DBREINDEX重建索引提高SQL Server性能
  7. 给自己的电脑做一个O盘 -隐藏自己私密的东
  8. 深度解读:2021 中国低代码平台发展现状
  9. 博信医药系统连接不到服务器,博信医药管理系统
  10. 非平衡电桥电阻计算_用非平衡电桥测量电阻
  11. 华为mate xs拍照怎么用?镜像智拍助你告别大饼脸
  12. Netty客户端断线重连
  13. 神秘海域:顶级工作室“顽皮狗”成长史(中)
  14. Springboot实现邮箱验证码注册、找回密码和登录功能
  15. 你的Web系统真的安全吗?
  16. python自相关函数提取基音周期_自相关函数法基音周期提取(matlab版)
  17. MIUI系统获取短信权限问题
  18. 居家洁士扫地机器人_如何避免买到“智障”扫地机器人,看这篇
  19. 字节跳动安全AI挑战赛总结
  20. 解决NotImplementedError: Layer XX has arguments in `__init__` and therefore must override `get_config`

热门文章

  1. spark和python的关系_spark submit和pyspark有什么区别?
  2. ArcGIS Server的配置
  3. 霍夫变换提取线段与圆
  4. 自定义结构体-相机参数数据类型
  5. cytoscape使用方法_信号通路分析工具教程——Cytoscape及OmniPath插件
  6. Windows 下端口被占用
  7. OTL调用Oracle存储过程
  8. 死而复生?RethinkDB宣布进入Linux基金会!
  9. Java 8怎么了:局部套用vs闭包
  10. HDU 4619 Warm up 2 最大独立集