OpenGL鼠标拾取
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参数表示。求得参数后,根据范围来判断。
线性地址(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鼠标拾取相关推荐
- OpenGL 鼠标拾取模型
1.简介 在我们的场景中,使用鼠标光标点击或"挑选"一个3d对象是很有用的.一种方法是从鼠标投射3d光线,通过相机,进入场景,然后检查光线是否与任何物体相交.这通常被称为光线投射. ...
- opengl 鼠标拾取
代码 void GLWidget::HitGet(QPoint pos) { GLuint NameBuffer[27]; GLint viewport[4]; GLint hits; glGetIn ...
- opengl作业三维虚拟场景_乱弹OpenGL选择-拾取机制
无论是游戏还是VR,三维世界总免不了与用户的交互.而这其中常也免不了"用户对场景中物件的选择(也就是,拾取)"这种需求.OpenGL本身就内置有一套拾取机制,这次就乱弹一下吧.(乱 ...
- OpenGL3.3鼠标拾取物体
OpenGL3.3鼠标拾取物体 本文翻译自:http://www.lighthouse3d.com/tutorials/opengl-selection-tutorial/ 在3D场景中拾取或选择特定 ...
- Android OpenGL射线拾取手势旋转(二)
上回分解-_-!,Android OpenGL射线拾取&手势旋转(一). 3)Renderer:RayPickRenderer.java OpenGL渲染器,比较多的东西都在这里面了. pub ...
- Three.js - 鼠标拾取(射线追踪法)(十九)
射线追踪法 射线追踪法是最常见的方法,因为three.js提供了Raycaster对象来实现它. 原理:从鼠标处发射一条射线,穿透场景的视椎体,通过计算,找出与射线相交的对象. Raycaster 属 ...
- DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互
一.硬件实例化(Hardware Instancing) 硬件实例化指的是在场景中绘制同一个物体多次,但是是以不同的位置.旋转.缩放.材质以及纹理来绘制(比如一棵树可能会被多次使用以构建出一片森林). ...
- 鼠标拾取(光线拾取)
作者:桑榆 QQ:934440653 有问题,评论留言,或qq联系 案例效果 鼠标拾取 主要代码 1.创建矩形 (1)6-8行限制随机产生的矩形的长.宽.纵深不超过20: (2)14-16行限制随机产 ...
- OpenGL鼠标视角交互
OpenGL鼠标视角交互 1. 欧拉角 2. 鼠标输入 1. 欧拉角 欧拉角(Euler Angle)是可以表示3D空间中任何旋转的3个值,一共有3种欧拉角:俯仰角(Pitch).偏航角(Yaw)和滚 ...
最新文章
- Elixir 1.2带来多项功能增强和性能提升
- 自动管理Windows2003好用的“远程桌面”
- CentOS5.4下安装和配置Apache、PHP、MySql、PHPMyAdmin
- ASP.NET完整打包卸载更新攻略(By Installshield 2010)【转】
- 美媒:小米新浪达成合作 采取行动对抗腾讯
- dbcc dbreindex server sql_DBCC DBREINDEX重建索引提高SQL Server性能
- 给自己的电脑做一个O盘 -隐藏自己私密的东
- 深度解读:2021 中国低代码平台发展现状
- 博信医药系统连接不到服务器,博信医药管理系统
- 非平衡电桥电阻计算_用非平衡电桥测量电阻
- 华为mate xs拍照怎么用?镜像智拍助你告别大饼脸
- Netty客户端断线重连
- 神秘海域:顶级工作室“顽皮狗”成长史(中)
- Springboot实现邮箱验证码注册、找回密码和登录功能
- 你的Web系统真的安全吗?
- python自相关函数提取基音周期_自相关函数法基音周期提取(matlab版)
- MIUI系统获取短信权限问题
- 居家洁士扫地机器人_如何避免买到“智障”扫地机器人,看这篇
- 字节跳动安全AI挑战赛总结
- 解决NotImplementedError: Layer XX has arguments in `__init__` and therefore must override `get_config`